分布式事务四种方案,分布式事务面试题
墨初 知识笔记 127阅读
分服务监听PAY_ORDER_EVENT事件增加账户积分并更新订单状态为成功。
上述任一步骤执行失败都会发送一个失败的事件每个服务需要监听失败的情况根据实际需求进行逐一回滚。

命令/协同式
命令/协同式需要定义一个Saga协调器,负责告诉每一个参与者该做什么Saga协调器以命令/回复的方式与每项服务进行通信如图所示。

命令/协同式的实现步骤如下:
订单服务首先创建一个订单然后创建一个订单Saga协调器,启动订单事务。Saga协调器向库存服务发送冻结库存命令库存服务通过Order Saga Reply Queue回复执行结果。接着Saga协调器继续向支付服务发起账户扣款命令支付服务通过Order Saga Reply Queue 回复执行结果。最后Saga协调器向积分服务发起增加积分命令积分服务回复执行结果。需要注意的是订单Saga协调器必须提前知道“创建订单事务”的所有流程(Seata是通过基于 JSON 的状态机引擎来实现的)并且在整个流程中任何一个环节执行失败它都需要向每个参与者发送命令撤销之前的事务操作。
标签: