目录
一、领域驱动设计两大设计:战略设计和战术设计
(一)战略设计
1.出发角度与目标
2.实现方式:事件风暴与模型确立(用例分析、场景分析和用户旅程分析)
3.用三步来划定领域模型和微服务的边界
(二)战术设计
1.出发角度与目标
2.实现方式:DDD 分层架构、整洁架构、CQRS 和六边形架构等 (我们采用DDD 分层架构)
3.代码模型强调两点:聚合之间的代码边界一定要清晰+一定要有代码分层的概念
二、理解和分析领域+子域+核心域+通用域+支撑域
(一)整体理解领域与子域的概念(以桃树生物学知识体系的建立为例来加深理解)
(二)理解核心域、通用域和支撑域的划分及具体目的
1.核心域
2.通用域
3.支撑域
4.划分核心域、支撑域和通用域的主要目标
三、理解和分析界限上下文,定义领域边界
(一)通用语言
(二)限界上下文
四、理解和分析实体和值对象
(一)对于实体的具体理解
1.实体的业务形态
2.实体的代码形态
3.实体的运行形态
4.实体的数据库形态
(二)对于值对象的具体理解
1.实体的业务形态
2.实体的代码形态
3.实体的运行形态
4.实体的数据库形态
5. 值对象的优势和局限
(三)对于实体与值对象关系的理解
1.基本的关系理解
2.不同场景下关系的不同
五、理解和分析聚合思想:聚合和聚合根
(一)对聚合的理解和分析
(二)对聚合根的理解和分析
(三)聚合、聚合根、实体、值对象的对比
(四)基本理解综合
六、理解很分析领域事件来解耦微服务
(一)领域事件的识别
(二)微服务内外的领域事件分析
1. 微服务内的领域事件
2. 微服务之间的领域事件
(三)领域事件总体架构
1. 事件构建和发布
2. 事件数据持久化
3. 事件总线 (EventBus)
4. 消息中间件
5. 事件接收和处理
(四)具体案例分析
参考书籍、文献和资料
干货分享,感谢您的阅读!
领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计。
微服务拆分困境产生的根本原因:不知道业务或者微服务的边界到底在什么地方。
DDD 核心思想:通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。
对于领域驱动设计的学习做的总结主要写三篇博客,主要包括三部分:基本理论总结与分析、架构分析与代码设计、具体应用设计分析,主要参考的资料为极客时间的欧创新架构师的《DDD》实战,其他参考书籍在文章下方的参考书籍中。
本次主要总结DDD基本理论总结与分析