前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >响应式领域驱动基础框架myddd-vertx开源了

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

作者头像
御剑
发布2021-11-02 11:40:02
1K0
发布2021-11-02 11:40:02
举报
文章被收录于专栏:微言码道微言码道

我曾在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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微言码道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. myddd-vertx是什么
  • 2. myddd-vertx技术选择
  • 3. myddd-vertx与测试驱动
  • 4. myddd-vertx与推定架构
  • 5. myddd-vertx的优势与不足
  • 6. myddd-vertx与myddd-java
  • 7. myddd starter
  • 8. myddd官网
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档