响应式领域驱动基础框架myddd-vertx开源了

2021-11-02 11:40:02 浏览数 (1)

我曾在2021年年初的时候承诺过要将myddd-vertx开源。

选日不如撞日,2021年也快接近尾声了,刚好今天是程序员日,myddd-vertx源代码正式开放。

1. myddd-vertx是什么

myddd-vertx是myddd的一个子模块。

myddd-vertx是基于Kotlin与Vertx的响应式领域驱动基础框架。它是myddd在后端的实现。

myddd-vertx是myddd在后端的大胆尝试 ,myddd-vertx遵循以下宗旨:

  • 以响应式编程为核心。在响应式框架中,选择Vert.x做为核心依赖框架。
  • 以Kotlin取代Java,Kotlin比Java更简洁与优雅。

2. myddd-vertx技术选择

myddd-vertx的核心技术选型为:

  1. 编程语言:Kotlin
  2. 响应式框架:Vert.x
  3. 数据库框架:hibernate reactive
  4. 依赖注入基础框架:Google Guice
  5. 单元测试:JUnit
  6. 管理与构建:Gradle

如果你想知道为什么我会选择kotlin vert.x,可以访问附录中的文章以了解更多。

3. myddd-vertx与测试驱动

myddd-vertx严格遵照TDD测试驱动开发。使用SonaQube来进行质量管理。

对于每个正式release的版本,要求达到:

  • 单元测试覆盖率不低于80%
  • Bus,Vulnerabilities,Debt,Code Smells等尽量减少至个位数直至没有

当前数据

4. myddd-vertx与推定架构

myddd-vertx是基础框架,它是对DDD领域驱动理念的实践,在架构风格上并没有限定使用方式。考虑到需求各有不同,myddd-vertx推荐以下三种推定架构:

  1. 单体架构

如果你的一些需求很明显不存在极大的并发量或高可用,那myddd-vertx的单体架构是非常适合的。

这种架构模式下,最终会以Jar的形式部署。

基于vert.x极高的性能表现,就算是在这种架构模式下,依然有着优秀的性能表现。从我实际的性能测试表现上来看,至少是传统Spring Boot的6-8倍的优势。

  1. 单体 集群部署架构

这种是对单体架构的扩展,如果你的架构在并发上,或是特别在高可用上有需求,那在单体架构的基础上,添加nginx或lvs为负载均衡的集群是最合适的选择。

相比单体架构,它有着以下几个优势

  • 性能水平可以水平扩展
  • 支持高可用,单个服务当机不会影响服务的可用性

事实上,我们推荐你主要考虑使用这个模式,除了TO C互联网以外的大部分情况下,我们认为这种架构足以胜任。

  1. 微服务架构

微服务是近年来非常流行的一种架构。

myddd-vertx的支持的微服务架构是: Vert.x gRPC Event Bus事件总线 单机/微服务双部署支持

有关此架构,访问myddd github中的myddd-vertx-micro-scaffold示例项目以了解更多

5. myddd-vertx的优势与不足

优势

  1. 得益于kotlin这个号称better java的语言 ,使得myddd-vertx代码非常简洁与优雅
  2. 得益于vert.x响应式框架,其性能远优于传统的Spring Boot类似的线程同步模式
  3. 结合kotlin协程,使用asyn/await,极大的减轻异步编程的阻力

不足

  1. kotlin在流行度上远不如java
  2. vert.x在流行度与远不如Spring Boot

6. myddd-vertx与myddd-java

考虑到技术的非主流性与异步编程带来的挑战,也许使用myddd-vertx对你来说并不是个好的方案。

没有关系,myddd仍然有基于Java及Spring Boot的领域驱动基础框架供你使用。

myddd-java

myddd-java是基于Java及Spring Boot的领域驱动基础框架。

myddd-java始终坚持以下两个原则:

  1. 最大化的倡导ddd编码风格与模式
  2. 把支持Spring Boot做为第一要务 Spring Boot全家桶技术,已成为中小企业,个人开发者开发的主流选择。选择支持Spring Boot,也是期望为更多的人与团队服务。在不影响他们的整体架构的选型下,更好的推广与传播DDD

7. myddd starter

我已经开发了一个快速生成myddd项目的代码初始化工具。这就是myddd starter,官网是: https://starter.myddd.org

通过myddd starter,你可以在数秒内生成一个myddd项目。

myddd starter

myddd starter当前支持以下维度的项目生成

  • myddd-vertx 基于Kotlin与Vert.x的响应式领域驱动项目,用于后端开发
  • myddd-java 基于Java与Spring Boot的领域驱动项目,用于后端开发
  • myddd-web 基于TypeScript与React的领域驱动风格的前端项目,用于前端页面开发
  • myddd-electron 基于Electron跨平台技术及TypeScript与React的桌面开发,用于跨平台桌面开发

8. myddd官网

如果你对myddd有兴趣,可以随时访问myddd的官网:

https://myddd.org

同时,你也可以关注我的公众号: 微言码道

随时欢迎任何人积极的反馈与建议。可以发送邮件至lingen.liu@gmail.com

0 人点赞