From 0d0d77b9507d076312b5b74d3438fd7f095d889e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E9=93=B6=E6=98=9F=E6=9C=88?= <89288837+hcl55@users.noreply.github.com> Date: Mon, 16 Mar 2026 00:41:52 +0800 Subject: [PATCH 1/3] Update ddd-guide-00.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: 修正错误的文本 --- docs/md/road-map/ddd-guide-00.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/md/road-map/ddd-guide-00.md b/docs/md/road-map/ddd-guide-00.md index c09cbd1be..b29837aa0 100644 --- a/docs/md/road-map/ddd-guide-00.md +++ b/docs/md/road-map/ddd-guide-00.md @@ -69,7 +69,7 @@ DDD 是思想,六边形/菱形/整洁架构是分层,DDD 通过建模思想 -- 首先,六边形架构,以 DDD 领域驱动实际为指引,为 domai 层,设计充血模型结构,如;登录、下单、支付,在每个模块下,包含完整的服务、模型、适配。适配的目的是这个领域里所需的数据,都通过适配的方式从外部调用进来,比如;数据库、缓存、接口等。这是一种 ACL 防腐设计,将来外部的接口变化了,也不会影响我们的领域服务,只要按照领域服务的适配标准提供即可。 +- 首先,六边形架构,以 DDD 领域驱动实际为指引,为 domain 层,设计充血模型结构,如;登录、下单、支付,在每个模块下,包含完整的服务、模型、适配。适配的目的是这个领域里所需的数据,都通过适配的方式从外部调用进来,比如;数据库、缓存、接口等。这是一种 ACL 防腐设计,将来外部的接口变化了,也不会影响我们的领域服务,只要按照领域服务的适配标准提供即可。 - 之后,围绕着领域 domain 开始,需要啥就让外部的基础设施层实现领域层的接口来提供。而接口要提供啥能力,就调用 case 编排 domain 层,或则简单的由 domain 层直接提供也可以。 - 最后,也就是 trigger 触发器,我们把接口、任务、mq等都理解为一种触发,之后让 trigger 调用 case 层。case 或者 domain 的目的,就是分摊 trigger 以前 Controller 编写逻辑代码的压力。让 trigger 只是负责对外逻辑的封装,错误码,异常即可。 From 505278efad7bf4238293be8a2f4da7172a4faff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E9=93=B6=E6=98=9F=E6=9C=88?= <89288837+hcl55@users.noreply.github.com> Date: Mon, 16 Mar 2026 01:06:58 +0800 Subject: [PATCH 2/3] Update ddd-guide-00.md --- docs/md/road-map/ddd-guide-00.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/md/road-map/ddd-guide-00.md b/docs/md/road-map/ddd-guide-00.md index b29837aa0..77bed2e22 100644 --- a/docs/md/road-map/ddd-guide-00.md +++ b/docs/md/road-map/ddd-guide-00.md @@ -69,7 +69,7 @@ DDD 是思想,六边形/菱形/整洁架构是分层,DDD 通过建模思想 -- 首先,六边形架构,以 DDD 领域驱动实际为指引,为 domain 层,设计充血模型结构,如;登录、下单、支付,在每个模块下,包含完整的服务、模型、适配。适配的目的是这个领域里所需的数据,都通过适配的方式从外部调用进来,比如;数据库、缓存、接口等。这是一种 ACL 防腐设计,将来外部的接口变化了,也不会影响我们的领域服务,只要按照领域服务的适配标准提供即可。 +- 首先,六边形架构,以 DDD 领域驱动实际为指引,为 domain 层,设计充血模型结构,如:登录、下单、支付。在每个模块下,包含完整的服务、模型、适配。适配的目的是这个领域里所需的数据,都通过适配的方式从外部调用进来,比如:数据库、缓存、接口等。这是一种 ACL 防腐设计,将来外部的接口变化了,也不会影响我们的领域服务,只要按照领域服务的适配标准提供即可。 - 之后,围绕着领域 domain 开始,需要啥就让外部的基础设施层实现领域层的接口来提供。而接口要提供啥能力,就调用 case 编排 domain 层,或则简单的由 domain 层直接提供也可以。 - 最后,也就是 trigger 触发器,我们把接口、任务、mq等都理解为一种触发,之后让 trigger 调用 case 层。case 或者 domain 的目的,就是分摊 trigger 以前 Controller 编写逻辑代码的压力。让 trigger 只是负责对外逻辑的封装,错误码,异常即可。 From 7f4db7104b13fecb9d2c5f26200b3e222f1e4b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E9=93=B6=E6=98=9F=E6=9C=88?= <89288837+hcl55@users.noreply.github.com> Date: Mon, 16 Mar 2026 01:19:41 +0800 Subject: [PATCH 3/3] Update ddd-guide-00.md --- docs/md/road-map/ddd-guide-00.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/md/road-map/ddd-guide-00.md b/docs/md/road-map/ddd-guide-00.md index 77bed2e22..1d207ec09 100644 --- a/docs/md/road-map/ddd-guide-00.md +++ b/docs/md/road-map/ddd-guide-00.md @@ -56,8 +56,8 @@ lock: need - 首先,一个分布式架构要,对接 rpc、提供 rpc、消费 mq、生产 mq,还要做定时任务(最终一致性补偿),单一个 rpc 的使用,就需要在程序定义出一个 export 层,要打包对外的服务接口,让使用方式引入使用。关于为什么需要这样的方式,可以在 [bugstack.cn](https://bugstack.cn/md/road-map/dubbo.html) 编程路书中,开发技术部分 dubbo 学习。 -- 之后,原本的 MVC 三层结构就不够用了。只要添加上,export、rpc 这样的分层,原本 service 直接处理数据库的操作,也要考虑拆分出来。可能这部分每个公司还不一样,其实即使一个公司,不同组,也是有很大的差异。这个也是目前互联网公司中的项目里的一个现状问题。 -- 思考,现在的工程模型结构其实很杂,装填了太多的东西进去了。除此之外,因为都是原子化编写,没有在做分区。一个系统里 service 都有上千个类,每个类里又有上千行代码。在坐的各位,应该都会在这些屎山中赚钱。 +- 之后,原本的 MVC 三层结构就不够用了。只要添加上 export、rpc 这样的分层,原本 service 直接处理数据库的操作,也要考虑拆分出来。可能这部分每个公司还不一样,其实即使一个公司,不同组,也是有很大的差异。这个也是目前互联网公司中的项目里的一个现状问题。 +- 思考,现在的工程模型结构其实很杂,装填了太多的东西进去了。除此之外,因为都是原子化编写,没有在做分区。一个系统里 service 都有上千个类,每个类里又有上千行代码。在座的各位,应该都会在这些屎山中赚钱。 ## 四、四层架构 @@ -70,7 +70,7 @@ DDD 是思想,六边形/菱形/整洁架构是分层,DDD 通过建模思想 - 首先,六边形架构,以 DDD 领域驱动实际为指引,为 domain 层,设计充血模型结构,如:登录、下单、支付。在每个模块下,包含完整的服务、模型、适配。适配的目的是这个领域里所需的数据,都通过适配的方式从外部调用进来,比如:数据库、缓存、接口等。这是一种 ACL 防腐设计,将来外部的接口变化了,也不会影响我们的领域服务,只要按照领域服务的适配标准提供即可。 -- 之后,围绕着领域 domain 开始,需要啥就让外部的基础设施层实现领域层的接口来提供。而接口要提供啥能力,就调用 case 编排 domain 层,或则简单的由 domain 层直接提供也可以。 +- 之后,围绕着领域 domain 开始,需要啥就让外部的基础设施层实现领域层的接口来提供。而接口要提供啥能力,就调用 case 编排 domain 层,或者简单的由 domain 层直接提供也可以。 - 最后,也就是 trigger 触发器,我们把接口、任务、mq等都理解为一种触发,之后让 trigger 调用 case 层。case 或者 domain 的目的,就是分摊 trigger 以前 Controller 编写逻辑代码的压力。让 trigger 只是负责对外逻辑的封装,错误码,异常即可。 综上,就是关于架构分层的一个演进过程,现在还有 AI 的加入,AI 也会逐步成为整个工程架构中的一块。关于这部分的架构设计,与业务工程的结合,小傅哥也会在 bugstack.cn 博客中陆续更新。