在微服务中实现查询
1、微服务中实现查询的两种方式
1.1 API组合模式
(1)通过调用拥有数据的服务并组合结果来实现查询操作
image.png
(2)问题:
-
由谁来担当查询的组合器
其中的一个微服务
单独的服务组件
网关 -
如何编写有效的聚合逻辑
使用响应式编程模型,让多个服务调用并行,可提升查询的的速速
(3)弊端:
- 增加了额外的开销。相比单个微服务实现查询来讲,这种方式需要调用多个服务
- 可用性降低。如果有三个服务,组合查询的可用性变为 A * B * C
- 事务一致性问题
1.2 命令查询职责分离模式(CQRS)
(1)微服务架构中实现查询需要处理的问题
- 使用API组合模式检索分散在多个服务中数据库会导致昂贵、低效的内存中连接
- 拥有数据的服务将数据存储在不能有效支持查询的表单或数据库中
- 拥有数据的服务不一定是会实现查询操作的服务
(2)CQRS 隔离命令和查询
- 持久化数据模型的部分属于命令端(CUD:POST、PUT、DELETE)
- 使用数据模块的部分属于查询端(R:GET)
-
模型:
image.png -
CQRS视图:
image.png
(3)优点:
- 实现高效的查询
- 进一步实现问题的隔离
- 高效地实现多种不同的查询类型
(4)弊端
- 更加复杂的架构
- 处理数据复制导致延迟
网友评论