微服务架构设计模式
2021-07-31 14:55:51 1 举报
AI智能生成
《微服务架构设计模式》思维导图笔记
作者其他创作
大纲/内容
FTGO 应用程序的架构
开发简单
易于大规模更改
测试简单
部署简单明了
易于横向扩展
单体架构的好处
过度的复杂性吓退开发者
开发速度缓慢
代码提交到部署的周期长,并容易出问题
难以扩展
难于交付可靠软件
被迫限制于可能过时的技术栈
什么是单体地狱
单体地狱
扩展立方体和服务
微服务作为模块化的一种形式
每个服务都有自己的DB
FTGO 的微服务架构
微服务架构与SOA 的异同
拯救之道:微服务架构
使大型应用可以持续交付和部署
每个服务都相对较小并容易维护
服务可以独立部署
服务可以独立扩展
可以实现团队的自治
更容易实验和采纳新技术
更好的容错性
好处
服务的拆分和定义是一项挑战
开发、测试和部署更困难
分布式系统带来的各种复杂性
需要跨团队的协调
什么阶段使用微服务架构
弊端
微服务架构的好处和弊端
微服务架构不“银弹”
针对特定上下文中发生的问题的可重用解决方案
模式
解决特定领域内问题的相关模式的集合
模式语言
必须解决的问题
需求(Forces)
采用模式后可能带来的后果
引入的新问题
三部分
结果上下文(Resulting context)
这个模式与其他模式之间的关系
前导(Predecessor)
后续(Successor)
替代(Alternative)
泛化(Generalization)
特化(Specialization)
5 种关系
相关模式(Related patterns)
模式结构
模式和模式语言
微服务架构的模式语言概述
微服务架构的模式语言
软件开发和交付的组织
软件开发和交付的流程
采用微服务架构时的人为因素
微服务之上:流程和组织
1. 逃离单体地狱
what 软件架构,why 重要
what 架构风格
微服务架构是一种架构风格
微服务架构到底是什么
识别系统操作
根据业务能力进行服务拆分
根据子域进行服务拆分
拆分的指导原则
拆分单体应用为服务的难点
定义服务API
为应用程序定义微服务架构
2. 服务的拆分策略
交互方式
在微服务架构中定义API
API 的演化
消息的格式
概述
使用REST
使用gRPC
使用断路器模式处理局部故障
使用服务发现
基于同步远程过程调用模式
what 消息传递
使用消息机制实现交互方式
为基于消息机制的服务API 创建API 规范
使用消息代理
处理并发和消息顺序
处理重复消息
事务性消息
消息相关的类库和框架
基于异步消息模式
同步消息会降低可用性
消除同步交互
使用异步消息提高可用性
3. 进程间通信
微服务架构对分布式事务的需求
分布式事务的挑战
使用Saga 模式维护数据一致性
微服务架构下的事务管理
协同式Saga
编排式 Saga
Saga 的协调模式
缺乏隔离导致的问题
Saga 模式下实现隔离的对策
解决隔离问题
OrderServier 类
Create Order Saga 的实现
OrderCommandHandlers 类
OrderServiceConfiguration 类
Order Service 和 Create Order Saga 的设计
4. 使用Saga 管理事务
事务脚本模式
领域模型模式
关于领域驱动设计
业务逻辑组织模式
模糊边界带来的问题
聚合拥有明确的边界
聚合的规则
聚合的粒度
使用聚合设计业务逻辑
使用聚合模式设计领域模型
why 需要发布领域事件
what 领域事件
事件增强
识别领域事件
生成和发布领域事件
消费领域事件
发布领域事件
Kitchen Service 的业务逻辑
Order 聚合
Order Service 类
Order Service 的业务逻辑
5. 业务逻辑设计
传统持久化技术的问题
what 事件溯源
使用乐观锁处理并发更新
事件溯源和发布事件
使用快照提升性能
幂等方式的消息处理
领域事件的演化
事件溯源的好处
事件溯源的弊端
Eventaute Local 事件存储库的工作原理
Eventuate 的 Java 客户端框架
实现事件存储库
使用事件溯源实现协同式Saga
创建编排式Saga
实现基于事件溯源的Saga 参与方
实现基于事件溯源的Saga 编排器
同时使用Saga 和事件溯源
6. 使用事件溯源开发业务逻辑
findOrder() 查询操作
what 组合API 模式
使用API 组合模式实现 findOrder() 查询操作
API 组合模式的设计缺陷
API 组合模式的好处和弊端
使用API 组合模式进行查询
why 使用CQRS
what CQRS
CQRS 的好处
CQRS 的弊端
使用CQRS 模式
选择视图存储库
设计数据访问模块
添加和更新CQRS 视图
设计CQRS 视图
OrderHistoryEventHandlers 模块
DynamoDB 中的数据建模和查询设计
OrderHistoryDaoDynamoDb 类
实现基于AWS DynamoDB 的CQRS
7. 实现查询
FTGO 移动客户端API 的设计难题
其他类型客户端API 的设计难题
外部API 的设计难题
什么是API Gateway 模式
API Gateway 模式的好处和弊端
以Netflix 为例的API Gateway
API Gateway 的设计难题
API Gateway 模式
使用现成的API Gateway 产品或服务
开发自己的API Gateway
使用GraphQL 实现API Gateway
实现一个API Gateway
8. 外部API 模式
what 测试
微服务架构中的测试挑战
部署流水线
为Entity 编写单元测试
为ValueObject 编写单元测试
为Saga 编写单元测试
为DomainService 编写单元测试
为Controller 编写单元测试
为Event 和消息处理程序编写单元测试
为服务编写单元测试
9. 测试策略(上)
针对持久化层
针对基于REST 的请求/响应式交互
针对发布/订阅式交互
针对异步请求/响应式交互
编写集成测试
定义验收测试
使用Gherkin 编写验收测试
设计组件测试
为FTGO 的Order Service编写组件测试
编写组件测试
端到端测试
10. 测试策略(下)
单体应用
微服务架构
开发安全的服务
基于push 的外部化配置
基于pull 的外部化配置
设计可配置的服务
健康检查API 模式
日志聚合模式
分布式追踪模式
应用程序指标模式
异常追踪模式
审计日志模式
设计可观测的服务
使用微服务基底
从微服务到服务网格
使用微服务基底模式开发服务
11. 面向生产环境
12. 部署微服务应用
13. 重构策略
微服务架构设计模式
0 条评论
下一页