课程简介
课程主要从微观和宏观两个层面讨论架构的原理与实现。
宏观架构主要从全局出发,对一个分布式/微服务系统进行层次化、模块化的剖析。并使用5视图法对架构的各个关注方面进行关注点解析。分布式系统不光分析了如何进行分布式通信,还包含如何进行数据持久化设计与事务性设计,跨网络的物理节点如何串联起来完成分布式请求。以及服务发现,流量治理,和安全性的话题。
微观架构主要基于DDD的方法论与实践,展示高质量的软件架构该设计过程。结合设计原则和模式,使架构具备演进式风格,以应对需求的变化。
目标收益
通过实战,可以让学员比单单学习架构理论留下更深刻的印象,也会在实际的工作中更有应用性和可操作性。
培训对象
各类 IT/软件企业和研发机构的架构师,软件设计师、程序员。
课程大纲
全局分析解构系统宏观架构 |
一、演进中的架构 1.服务架构演进史 2.原始分布式时代 3.单体系统时代 4.SOA 时代 5.微服务时代 6.后微服务时代 无服务时代 二、通信架构 – 如何访问远程服务 1.进程间通信 2.通信的成本 3.三个基本问题 4.统一的 RPC / 分裂的 RPC 5.REST 设计风格 6.理解 REST 7.RMM 成熟度 8.不足与争议 三、数据持久化与事务处理 1.实现事务原子性和持久性 2.实现隔离性 3.全局事务 4.共享事务 5.分布式事务 6.CAP 与 ACID 7.可靠事件队列 8.TCC 事务 9.SAGA 事务 10.案例:银行跨行转账业务TCC实例 四、跨网络边界的透明多级分流系统架构 1.客户端缓存:强制缓存 / 协商缓存 2.域名解析 3.传输链路 4.连接数优化 5.传输压缩 6.快速 UDP 网络连接 7.内容分发网络 8.路由解析 9.内容分发 10.CDN 应用 五、分布式系统架构中的负载均衡 1.负载均衡 2.数据链路层负载均衡 3.网络层负载均衡 4.应用层负载均衡 5.均衡策略与实现 6.案例:负载均衡解决方案在银行中起什么作用 7.服务端缓存 8.缓存属性与风险 六、架构安全性 1.认证 2.认证的标准 3.认证的实现 4.授权 5.RBAC 6.OAuth2 7.凭证 8.Cookie-Session 9.JWT 10.保密 11.保密的强度 12.客户端加密 13.密码存储和验证 14.传输 15.摘要、加密与签名 16.数字证书 17.传输安全层 18.验证 七、分布式架构中的服务发现与路由 1.服务发现 2.服务发现的意义 3.可用与可靠 4.注册中心实现 5.网关路由 6.网关的职责 7.网络 I/O 模型 8.BFF 网关 9.客户端负载均衡 10.客户端负载均衡器 11.代理负载均衡器 12.地域与区域 八、分布式架构中的流量治理 1.服务容错 2.容错策略 3.容错设计模式 4.流量控制 5.流量统计指标 6.限流设计模式 7.分布式限流 |
基于领域驱动设计的微观架构原理与实现 |
九、领域驱动设计架构总述 1.分层架构在领域驱动下的演进 2.界限上下文与架构 3.六边形架构 / 端口与适配器 / 整洁架构 4.CQRS架构 5.在CQRS中处理具有最终一致性的查询模型 6.事件溯源 Event Souring 7.事件溯源和发布事件 8.幂等方式处理消息 9.使用快照提升性能 10.管道与过滤器 11.SAGA (消息驱动事务) 12.协同式与编排式 13.SAGA下实现隔离 十、领域层架构: 实体 & 值对象 & 聚合 1.唯一标识 / 委派标识 2.案例:实现实体层超类型(Layer Supertype) 3.实战 - 任务分配执行系统 实体行为归属甄别 4.值对象的特征 5.为什么值对象这么容易被忽略 6.案例:地址建模与值对象 7.案例:实现值对象层超类型 8.聚合设计原则 9.聚合设计的过程 10.聚合的一致性边界 11.一个事务中只处理一个聚合 12.聚合内实现事务一致性 / 聚合外实现最终一致性 13.案例:更新订单状态与库存扣减 14.聚合设计的注意点 十一、应用服务层架构 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.领域模型 VS 数据模型 7.案例:泛型资源库 8.实战:实战 - 任务分配执行系统 持久化 十四、事件驱动架构 1.领域事件是领域建模中极其重要的部分 2.事务一致性,高并发下的窘境 3.最终一致性,妥协带来高扩展性 4.原则:一个事务中只对一个聚合进行修改 5.案例:实现抽象事件源,发布事件源 6.微服务之间如何稳健的发布与消费事件 7.如何保证发布事件的原子性 8.使用事件表发布事件 9.案例:如何实现事件感知聚合根 10.案例:如何实现事件感知资源库 11.如何通过 AOP 进行通用的事件处理 十五、CQRS架构 1.基于数据模型的读操作 2.基于领域模型的读操作 3.读写分离模型 4.案例:电商系统中的读写分离场景 5.单进程单实体 + 共享存储/共享模型:Inventory详情查询 6.单进程单实体 + 共享存储/分离模型:Product摘要查询 7.单进程跨实体 + 分离存储/分离模型:Product详情查询(包含Category信息) 8.跨进程跨实体 + 分离存储/分离模型:Order详情查询(包含Product信息) 十六、使用AI进行结对编程 1.LLM在开发中的应用 2.如何向LLM描述需求 3.测试先行与LLM生成测试场景 4.演习:使用LLM生成单元测试与代码框架 5.LLM与代码优化 6.指导LLM生成业务代码 7.执行单元测试并修正代码 8.演习:使用LLM创建命令行分析器的代码实现 |
全局分析解构系统宏观架构 一、演进中的架构 1.服务架构演进史 2.原始分布式时代 3.单体系统时代 4.SOA 时代 5.微服务时代 6.后微服务时代 无服务时代 二、通信架构 – 如何访问远程服务 1.进程间通信 2.通信的成本 3.三个基本问题 4.统一的 RPC / 分裂的 RPC 5.REST 设计风格 6.理解 REST 7.RMM 成熟度 8.不足与争议 三、数据持久化与事务处理 1.实现事务原子性和持久性 2.实现隔离性 3.全局事务 4.共享事务 5.分布式事务 6.CAP 与 ACID 7.可靠事件队列 8.TCC 事务 9.SAGA 事务 10.案例:银行跨行转账业务TCC实例 四、跨网络边界的透明多级分流系统架构 1.客户端缓存:强制缓存 / 协商缓存 2.域名解析 3.传输链路 4.连接数优化 5.传输压缩 6.快速 UDP 网络连接 7.内容分发网络 8.路由解析 9.内容分发 10.CDN 应用 五、分布式系统架构中的负载均衡 1.负载均衡 2.数据链路层负载均衡 3.网络层负载均衡 4.应用层负载均衡 5.均衡策略与实现 6.案例:负载均衡解决方案在银行中起什么作用 7.服务端缓存 8.缓存属性与风险 六、架构安全性 1.认证 2.认证的标准 3.认证的实现 4.授权 5.RBAC 6.OAuth2 7.凭证 8.Cookie-Session 9.JWT 10.保密 11.保密的强度 12.客户端加密 13.密码存储和验证 14.传输 15.摘要、加密与签名 16.数字证书 17.传输安全层 18.验证 七、分布式架构中的服务发现与路由 1.服务发现 2.服务发现的意义 3.可用与可靠 4.注册中心实现 5.网关路由 6.网关的职责 7.网络 I/O 模型 8.BFF 网关 9.客户端负载均衡 10.客户端负载均衡器 11.代理负载均衡器 12.地域与区域 八、分布式架构中的流量治理 1.服务容错 2.容错策略 3.容错设计模式 4.流量控制 5.流量统计指标 6.限流设计模式 7.分布式限流 |
基于领域驱动设计的微观架构原理与实现 九、领域驱动设计架构总述 1.分层架构在领域驱动下的演进 2.界限上下文与架构 3.六边形架构 / 端口与适配器 / 整洁架构 4.CQRS架构 5.在CQRS中处理具有最终一致性的查询模型 6.事件溯源 Event Souring 7.事件溯源和发布事件 8.幂等方式处理消息 9.使用快照提升性能 10.管道与过滤器 11.SAGA (消息驱动事务) 12.协同式与编排式 13.SAGA下实现隔离 十、领域层架构: 实体 & 值对象 & 聚合 1.唯一标识 / 委派标识 2.案例:实现实体层超类型(Layer Supertype) 3.实战 - 任务分配执行系统 实体行为归属甄别 4.值对象的特征 5.为什么值对象这么容易被忽略 6.案例:地址建模与值对象 7.案例:实现值对象层超类型 8.聚合设计原则 9.聚合设计的过程 10.聚合的一致性边界 11.一个事务中只处理一个聚合 12.聚合内实现事务一致性 / 聚合外实现最终一致性 13.案例:更新订单状态与库存扣减 14.聚合设计的注意点 十一、应用服务层架构 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.领域模型 VS 数据模型 7.案例:泛型资源库 8.实战:实战 - 任务分配执行系统 持久化 十四、事件驱动架构 1.领域事件是领域建模中极其重要的部分 2.事务一致性,高并发下的窘境 3.最终一致性,妥协带来高扩展性 4.原则:一个事务中只对一个聚合进行修改 5.案例:实现抽象事件源,发布事件源 6.微服务之间如何稳健的发布与消费事件 7.如何保证发布事件的原子性 8.使用事件表发布事件 9.案例:如何实现事件感知聚合根 10.案例:如何实现事件感知资源库 11.如何通过 AOP 进行通用的事件处理 十五、CQRS架构 1.基于数据模型的读操作 2.基于领域模型的读操作 3.读写分离模型 4.案例:电商系统中的读写分离场景 5.单进程单实体 + 共享存储/共享模型:Inventory详情查询 6.单进程单实体 + 共享存储/分离模型:Product摘要查询 7.单进程跨实体 + 分离存储/分离模型:Product详情查询(包含Category信息) 8.跨进程跨实体 + 分离存储/分离模型:Order详情查询(包含Product信息) 十六、使用AI进行结对编程 1.LLM在开发中的应用 2.如何向LLM描述需求 3.测试先行与LLM生成测试场景 4.演习:使用LLM生成单元测试与代码框架 5.LLM与代码优化 6.指导LLM生成业务代码 7.执行单元测试并修正代码 8.演习:使用LLM创建命令行分析器的代码实现 |