softwarearchitecture:thehardpartsmoderntrade-offanalysesfordistributedarchitectures学习笔记

kgduu kgduu     2023-04-03     435

关键词:

1、总览

 

 2、拆分

2.1 识别耦合

2.2 架构模块化

2.3 架构分解

 

2.4 数据拆分

2.5 服务粒度

粒度的拆分和合并有相关的驱动因素 

3、合并 

3.1 重用模式

3.2 数据所有权和分布式事务

 后台同步模式优缺点

优点缺点
  • 服务解耦
  • 响应快
  • 数据源耦合
  • 打断边界上下文
  • 实现复杂
  • 业务逻辑可能有重复
  • 最终一致性缓慢

基于编排请求模式的优缺点

优点缺点
  • 服务解耦
  • 数据一致性及时
  • 原子业务请求
  • 反应较慢
  • 错误处理复杂
  • 通常要求补偿事务

基于事件模式优缺点

优点缺点
  • 服务解耦
  • 数据一致性及时
  • 响应快
  • 复杂的错误处理 

3.3 分布式数据访问 

 服务间调用模式优缺点

优点缺点
  • 简单
  • 无数据量问题
  • 网络、数据、安全延时(性能)
  • 可伸缩性和吞吐量问题
  • 无容错(可用性问题)
  • 需要服务间协议 

列架构复制模式优缺点

优点缺点
  • 很好的数据访问性能
  • 没有可伸缩性和吞吐量问题
  • 没有容错问题
  • 没有服务依赖
  • 数据一致性问题
  • 数据所有权问题
  • 要求数据同步

复制缓存模式优缺点

优点缺点
  •  很好的数据访问性能
  • 没有可伸缩性和吞吐量问题
  • 没有容错问题
  • 数据保持一致性
  • 数据所有权保持
  • 云和容器配置很难
  • 不适用于大数据量
  • 不适用于很高的更新频率
  • 初始服务启动依赖 

数据域模式优缺点

优点缺点
  • 很好的数据访问性能
  • 没有可伸缩性和吞吐量问题
  • 没有容错问题
  • 没有服务依赖
  • 数据保持一致性 
  • 更大的边界上下文管理数据改变
  • 数据所有权治理
  • 数据访问安全 

3.4 分布式工作流

 

 编排模式优缺点

优点缺点
  • 中心化工作流
  • 错误处理
  • 可恢复性
  • 状态管理 
  • 响应时间
  • 容错
  • 可伸缩性
  • 服务耦合

协调模式优缺点

优点缺点
  • 响应性
  • 可伸缩性
  • 容错
  • 服务解耦
  • 分布式的工作流
  • 缺省状态管理 
  • 难以处理错误
  • 恢复比较困难

前端控制器模式优缺点

优点缺点
  • 在协调中创建了伪编排
  • 使得查询状态变得简单
  • 在一个域服务中添加了工作流状态
  • 增加了通信开销
  • 不利于性能和伸缩

无状态协调模式优缺点

优点缺点
  • 提供高性能和伸缩
  • 极度解耦
  • 工作流状态必须动态生成
  • 复杂的工作流程会迅速增加复杂性

标志耦合模式优缺点

优点缺点
  • 允许域服务传递工作流状态不需要向状态所有者查询
  • 无需前端控制器前端控制器
  • 协议必须足够大来适配工作流状态
  • 不提供即时状态查询

3.5 事务Saga

 有八种形式,依赖于通信,一致性及协同

3.6 协议

 

严格协议的优缺点

优点缺点
  • 保证协议准确性
  • 版本控制 
  • 构建时间验证
  • 更好文档化
  • 紧耦合
  • 版本过多,不易于管理

 松散协议的优缺点

优点缺点
  • 调度解耦
  • 容易演进
  • 协议难以管理 
  • 需要适应度函数