4006-998-758
3000+课程任你选择
分布式微服务系统架构设计培训(高级)
研发学院 分布式微服务系统架构设计培训(高级) 开课时间:2022-05-24
戴昊

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


查看老师详情
课程内容

课程简介


本课程基于多年实践领域驱动设计的经验与心得,糅合了 DDD 社区最新发展的理论知识与最佳实践,覆盖从需求到实现全面系统的讲解领域驱动设计。并将DDD理论实践到分布式系统架构特别是微服务架构之上、并给开发人员提供最佳实践。

 

课程特点 


●  系统全面详尽讲解领域驱动设计

●  知识点结合项目实践案例来分析

●  结合分布式系统架构展开

●  展现了从需求到实现模型的全流程

●  糅合了 DDD 社区的最新发展形态

 

课程对象


具有以下经验的 架构师,后端开发工程师,以及其他软件从业人员

●  具有基础的架构设计知识

●  至少掌握一门面向对象语言

●  具有基本的面向对象程序设计能力

●  具有一年或一年以上的业务系统开发经验

 

课程时长 


2天(6小时/天)

 

课程大纲 


Day1


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

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/PostCondition

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

5.    通用语言的价值

6.    通用语言的代码表达

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

8.    建立统一语言


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

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

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

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

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

5.    理解界限上下文

6.    识别界限上下文

7.    理解上下文映射

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

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

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


四、           架构 – 总有一款适合你

1.    认识分层架构

2.    分层架构的演化

3.    领域驱动架构的演进

4.    界限上下文与架构

5.    六边形架构

6.    端口与适配器

7.    整洁架构

8.    CQRS架构


五、           分布式系统架构与微服务

1.    演进中的架构

2.    访问远程服务:远程服务调用

3.    访问远程服务:REST设计风格

4.    事务处理:本地事务 /全局事务 /分布式事务

5.    透明多级分流系统:客户端缓存

6.    透明多级分流系统:域名解析 /负载均衡

7.    透明多级分流系统:内容分发网络

8.    透明多级分流系统:服务器端缓存

9.    架构安全性:认证 /授权 /凭证 / 加密   / 传输

10. 服务与发现

11. 网关路由

12. 流量治理:服务容错

13. 流量治理:流量控制

14. 可观测性:事件日志

15. 可观测性:链路追踪

16. 可观测性:聚合度量

Day2


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

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信息)

返回上一级