4006-998-758
3000+课程任你选择
领域驱动设计与系统架构实战
研发学院 驱动设计 架构 开课时间:2023-02-14
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容



一、 软件复杂度 - 软件行业的主要任务就是对应复杂度

1. 领域驱动设计概览

2. 战略与战术

3. 战略层面的三件事 战术层面的核心结构

4. 软件复杂度的三个成因

5. 分离关注点 Unix 设计哲学

6. 隔离业务复杂度与技术复杂度

7. 复杂度的横切与纵切

8. SOLID原则

9. SRP 单一职责原则

10. OCP 开放封闭原则

11. LSP 里氏替换原则

12. ISP 接口隔离原则

13. DIP 依赖倒置原则

14. 领域驱动设计对软件复杂度的对应



二、 通用语言 - 工欲善其事必先利其器

1. 领域专家与开发者的沟通失调

2. 通用语言关键点 - 5W2H1E

3. 通用语言关键点扩展 - Pre/Post Condition

4. 案例 - 高端客户优惠这个需求如何做?

5. 通用语言的价值

6. 通用语言的代码表达

7. 运用领域场景分析提炼领域知识

8. 建立统一语言



三、 界限上下文 有问题必有解决方案

1. 界限上下文的目的:消除歧义

2. 界限上下文与通用语言

3. 案例:电商系统下单流程中的界限上下文分析

4. 不要将有二义性的领域概念放在同一界限上下文中

5. 理解界限上下文

6. 识别界限上下文

7. 理解上下文映射

8. 上下文映射的团队协作模式

9. 上下文映射的通信集成模式

10.  辩别限界上下文的协作关系



四、 架构 总有一款适合你

1. 认识分层架构

2. 分层架构的演化

3. 领域驱动架构的演进

4. 界限上下文与架构

5. 六边形架构

6. 端口与适配器

7. 整洁架构

8. CQRS架构

9. CQRS中处理具有最终一致性的查询模型

10. 事件溯源 Event Souring

11. 使用乐观锁处理并发更新

12. 事件溯源和发布事件

13. 幂等方式处理消息

14. 使用快照提升性能

15. 管道与过滤器

16. SAGA (消息驱动事务)

17. 协同式与编排式

18. SAGA下实现隔离



五、 实体 数据容器还是行为载体

1. 贫血模型

2. 如何避免贫血,实体与领域服务之间的分寸

3. 唯一标识

4. 委派标识

5. 案例:实现实体层超类型(Layer Supertype

6. 实战 - 任务分配执行系统 实体行为归属甄别



六、 值对象 性能提升小帮手

1. 什么是值对象

2. 值对象的特征

3. 为什么值对象这么容易被忽略

4. 案例:地址建模与值对象

5. 案例:实现值对象层超类型



七、 聚合 比类更高一层的封装

1. 聚合设计原则

2. 聚合设计的过程

3. 聚合的一致性边界

4. 一个事务中只处理一个聚合

5. UML 中的聚合 与 DDD 中的聚合

6. 聚合内实现事务一致性

7. 聚合外实现最终一致性

8. 案例:更新订单状态与库存扣减 Version 1.0

9. 案例:更新订单状态与库存扣减 Version 2.0

10. 聚合设计的注意点



八、 微服务的入口 - 应用服务

1. 用例 (Use Case) 与应用服务

2. 微服务的网关 应用服务 之间的关系

3. 应用服务中的 编排,转换,验证,转发

4. 工作单元 (Unit of Work)

5. 数据传输对象 (Data Transfer Object)

6. 事务脚本 (Transaction Script) 与领域模型

7. 依赖注入在应用服务中的使用

8. 案例:实现应用服务

9. 应用服务的关注点

10. 实战 - 任务分配执行系统 应用层构建



九、 领域服务 不是实体本身的行为都归它

1. 领域服务的幂等性

2. 案例:实现领域服务

3. 实战 - 任务分配执行系统 领域服务层构建



十、 领域事件 保持最终一致性的信使

1. 领域事件是领域建模中极其重要的部分

2. 事务一致性,高并发下的窘境

3. 最终一致性,妥协带来高扩展性

4. 原则:一个事务中只对一个聚合进行修改

5. 案例:实现抽象事件源,发布事件源

6. 案例:实现抽象事件处理

7. 案例:实现领域事件的发布与订阅

8. 实战 - 任务分配执行系统 任务分配领域逻辑



十一、 资源库 聚合的起点与终点

1. 集合特性

2. 资源库与数据访问层的区别

3. 资源库的误解

4. 资源库的实现要点

5. 案例:资源库的实现

6. 领域模型 VS 数据模型

7. 案例:泛型资源库

8. 实战:实战 - 任务分配执行系统 持久化



十二、 微服务中基于事件的系统架构

1. 微服务之间如何稳健的发布与消费事件

2. 如何保证发布事件的原子性

3. 使用事件表发布事件

4. 案例:如何实现事件感知聚合根

5. 案例:如何实现事件感知资源库

6. 如何通过 AOP 进行通用的事件处理



十三、 微服务形式下的CQRS

1. DDD中的典型写操作

2. 基于数据模型的读操作

3. 基于领域模型的读操作

4. 读写分离模型

5. 案例:电商系统中的读写分离场景

6. 单进程单实体 + 共享存储/共享模型Inventory详情查询

7. 单进程单实体 + 共享存储/分离模型Product摘要查询

8. 单进程跨实体 + 分离存储/分离模型Product详情查询(包含Category信息)

9. 跨进程跨实体 + 分离存储/分离模型Order详情查询(包含Product信息)



返回上一级