课程大纲
Day1: 全局分析解构系统宏观架构 | |
一、演进中的架构 1.服务架构演进史 2.原始分布式时代 3.单体系统时代 4.SOA 时代 5.微服务时代 6.后微服务时代 7.无服务时代 | |
二、5视图法软件架构 1.逻辑架构 2.逻辑架构的核心:模块划分、接口定义、领域模型细化 3.逻辑架构常用表达图形 4.开发架构 5.开发架构关注点:源代码、第三方SDK、框架、中间件、工具包 6.开发架构与领域驱动设计分层 7.运行架构 8.运行架构关注点:系统的并发、同步、通信 9.运行架构与流量治理框架 10.物理架构 11.物理架构考量点:安装和部署需求,系统的可靠性、可伸缩性、持续可用性、性能和安全性 12.数据架构 13.数据架构关注点:持久化数据的存储方案 14.实体及实体关系数据存储格式,数据传递、复制、同步等策略。 | |
三、通信架构 – 如何访问远程服务 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.分布式限流 | |
Day2: 基于领域驱动设计的微观架构原理与实现 | |
一、领域驱动设计架构总述 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信息) |