事件驱动架构中的数据检索与相关模式解析
1. 架构中的编排与协调
在架构设计中,每个有界上下文可由多个服务组成。在不同边界之间,我们采用编排(choreography)的方式;而在边界内部,则可应用协调(orchestration),如定价边界所示。对于更广泛的高级流程,使用编排;而对于较小范围和更局部的流程,可采用协调,例如定价计算。
这种设计思路的主要目的是默认在高级流程中使用编排,而在有限范围内应用协调。这样做能实现服务间的高度解耦,在涉及多个团队的高级层面赋予团队自主性;在涉及人员较少的小范围中使用协调,可让团队自主发布功能而不影响多个领域。
2. 分布式架构下的数据聚合挑战
从单体架构向分布式事件驱动的微服务架构转变后,我们面临一个挑战:如何获取数据的聚合视图?在单体架构和单体数据库中,所有数据集中在一处,获取和连接数据相对简单,通常通过同步 API(如 REST 或 SOAP)暴露信息。但这种方式存在扩展限制。
在分布式架构中,每个独立服务拥有其领域的数据,只能返回关于其领域的信息。例如,UI 可能需要列出所有可用产品及其当前库存和价格。一种可能的解决方案是 API 组合模式,即 UI 应用从每个服务获取信息,合并并显示在 UI 中。然而,这种方法存在严重局限性:
- 性能问题 :处理大量数据时,该方法很快会遇到困难。若要显示包含数百万产品的列表页面,UI 可能需要将数千个项目加载到内存中。
- 用户体验差 :额外的请求会增加 UI 的性能开销,导致用户体验不佳。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



