查询
API组合模式
让拥有数据的服务的客户端调用服务,并组件服务返回的查询结果
问题:
- 选择谁为组合器
- 客户端
- 网关
- 实现为独立的服务
- 如何在组合器编写聚合逻辑
这种方式好处是简单直观。弊端:
- 带来了额外的开销
- 可用性有降低的风险
- 查询缺乏数据一致性
CQRS模式
维护一个或者多个视图数据库,进而实现查询。
好处与弊端:
高效实现多个服务的多种类型查询
支持[事件溯源](/软件工程/微服务/业务逻辑.html#事件溯源)技术
隔离了问题:领域模型不必同时处理命令和查询
**架构更加复杂**
**数据有一定的延迟**
CQRS视图设计
- 选择合适的数据库
- SQL or NoSQL
- 数据访问模块
- 并发处理
- 幂等处理
- 更新视图
- 归档
- 快照