MST

星途 面试题库

面试题:分布式系统中Saga模式处理微服务分布式事务的核心流程是什么

请阐述在微服务架构的分布式系统里,Saga模式处理分布式事务时的主要步骤和流程,并且说明正向操作和补偿操作在其中是如何配合的。
27.2万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

Saga模式处理分布式事务主要步骤和流程

  1. 事务发起
    • 业务流程开始,初始服务启动一个Saga事务,该事务由一系列有序的本地事务组成。
  2. 正向操作顺序执行
    • Saga按照预先定义的顺序依次执行每个本地事务的正向操作。例如,在一个电商下单的Saga中,可能先执行库存扣减的正向操作,再执行订单创建的正向操作。每个本地事务执行完成后,会将执行结果记录下来,并且释放本地资源锁等。
  3. 事务协调与监控
    • 存在一个协调器(可以是集中式或分布式的),负责跟踪Saga事务的执行进度,协调各个本地事务之间的顺序调用。如果某个本地事务执行失败,协调器会触发补偿操作。
  4. 补偿操作执行
    • 当某个正向操作失败时,协调器根据已执行成功的正向操作记录,反向依次执行相应的补偿操作。例如,如果订单创建成功但库存扣减失败,那么会先执行订单取消的补偿操作,再执行库存回滚的补偿操作,以保证整个分布式系统的一致性。
  5. 事务结束
    • 当所有正向操作都成功执行完毕,Saga事务成功结束;若在执行过程中因正向操作失败而完成所有补偿操作,Saga事务以失败结束。

正向操作和补偿操作的配合

  1. 正向操作在前
    • 正向操作按照业务流程的逻辑顺序依次执行,实现业务流程的正常推进。每个正向操作都是对业务状态的一次变更,向最终期望的状态靠近。
  2. 补偿操作跟随
    • 补偿操作是正向操作的反向操作,用于撤销正向操作所带来的影响。一旦某个正向操作失败,已成功执行的正向操作对应的补偿操作会被依次触发,将业务状态回滚到Saga事务开始前的状态,从而保证数据的一致性。例如,正向操作是创建订单并扣减库存,补偿操作就是取消订单并回滚库存。
  3. 操作对应关系
    • 每个正向操作都必须有对应的补偿操作,这种对应关系在Saga设计时就需明确。并且补偿操作应该具有幂等性,即多次执行补偿操作的效果与执行一次相同,以应对可能出现的重复调用情况(如网络故障导致协调器多次发送补偿指令)。