基于Axon的Saga示例:电商订单处理
在分布式系统中,Saga模式是处理长事务的有效方式。本文将通过一个电商应用的示例,详细介绍如何使用Axon框架实现Saga。
1. 示例概述
我们的示例是一个电商应用的一部分,涉及两个实体:订单(Order)和产品(Product)。用户可以购买产品,这将创建一个新订单。新订单创建时,订单状态为“New”,同时产品库存会减少。此外,新订单的创建还会在审计表中记录一条记录。
2. 设计示例Saga场景
该示例有五个微服务,其中Event Handle Core微服务和Event Handler Audit微服务的事件处理器都订阅了订单创建事件,Handle Command and Create Event微服务中的OrderProcessSaga也对该事件感兴趣。
2.1 新订单创建流程
当用户在浏览器中点击“Order One Now!”按钮时,整个系统的命令和事件流如下:
1. 浏览器发送REST/JSON请求到订单控制器。
2. Create Command Rest Controller微服务中的订单控制器将请求解释为写请求,创建新订单命令并发送到命令网关,命令网关再将命令分发到分布式命令总线。
3. 分布式命令总线连接不同JVM中的命令总线,每个JVM上的分布式命令总线称为一个段。
4. 命令总线接收命令并路由到Handle Command and Create Event微服务中的订单命令处理器。
5. 订单命令处理器获取相应产品并减少库存。
6. 产品库存减少后,更新产品实体并持久化到写数据库。
超级会员免费看
订阅专栏 解锁全文
47

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



