天水市秦州区作风建设年网站,qq网页版登录官网登录网站,建站费用报价单,东莞建设银行营业时间文章目录 基于 XA 协议的两阶段提交#xff08;2PC#xff09;三阶段提交#xff08;3PC#xff09;TCC#xff08;Try-Confirm-Cancel#xff09;Saga 模式消息队列#xff08;可靠消息最终一致性#xff09; 分布式事务是指在分布式系统中#xff0c;涉及多个节点或… 文章目录 基于 XA 协议的两阶段提交2PC三阶段提交3PCTCCTry-Confirm-CancelSaga 模式消息队列可靠消息最终一致性 分布式事务是指在分布式系统中涉及多个节点或服务之间的数据操作需要保证这些操作要么全部成功提交要么全部回滚以维持数据的一致性。以下是几种常见的分布式事务原理 基于 XA 协议的两阶段提交2PC
准备阶段事务协调者向所有参与者发送Prepare请求参与者执行事务操作但不提交。参与者检查自身事务执行情况如果可以提交则记录日志并响应Yes给协调者否则响应No。
提交阶段协调者根据参与者的响应来决定下一步操作。如果所有参与者都返回Yes协调者发送Commit请求参与者正式提交事务如果有任何一个参与者返回No或者在规定时间内没有收到响应协调者发送Rollback请求参与者回滚事务。
三阶段提交3PC
CanCommit 阶段协调者向参与者发送CanCommit请求询问是否可以执行事务提交操作。参与者检查自身状态如果可以进行事务提交则返回Yes否则返回No。
PreCommit 阶段如果协调者收到所有参与者的Yes响应会进入PreCommit阶段向参与者发送PreCommit请求参与者执行事务操作但不提交。此时参与者会记录事务日志为可能的提交或回滚做准备。
DoCommit 阶段如果协调者在PreCommit阶段收到所有参与者的成功响应或者等待超时后没有收到任何参与者的失败响应就会发送DoCommit请求让参与者提交事务。如果在PreCommit阶段有参与者返回失败响应或者等待超时协调者会发送Abort请求让参与者回滚事务。
TCCTry-Confirm-Cancel
Try 阶段主要是对业务系统做检测及资源预留。比如在一个涉及资金转账的分布式事务中在Try阶段会先冻结转出账户的资金检查转入账户是否正常等操作。
Confirm 阶段如果Try阶段所有操作都成功那么在Confirm阶段就会真正执行提交操作比如将冻结的资金进行实际的转账操作。这个阶段要求操作具有幂等性即多次执行的结果和执行一次的结果是一样的。
Cancel 阶段如果Try阶段中任何一个操作失败或者后续出现了需要回滚的情况就会进入Cancel阶段进行资源的释放和回滚操作。比如将之前冻结的资金解冻。
Saga 模式
事务分解将一个大的分布式事务分解为一系列的本地事务每个本地事务都有对应的正向操作和补偿操作。
顺序执行按照一定的顺序依次执行这些本地事务的正向操作。例如在一个电商订单处理的分布式事务中可能依次执行创建订单、扣减库存、更新物流信息等本地事务。
补偿机制如果在执行过程中某个本地事务失败了就会按照相反的顺序执行已经执行成功的本地事务的补偿操作来达到回滚的目的。比如如果扣减库存失败那么就需要回滚创建订单的操作。
消息队列可靠消息最终一致性
消息发送在事务操作前先将消息发送到消息队列。消息中包含了需要在其他服务或节点上执行的操作信息。比如在一个订单创建和库存扣减的分布式事务中订单服务在创建订单前先将包含订单商品信息的消息发送到消息队列。
本地事务执行发送消息成功后执行本地事务比如创建订单记录等操作。
消息消费其他服务从消息队列中获取消息并根据消息内容执行相应的操作比如库存服务获取到消息后执行扣减库存的操作。通过消息的可靠投递和消费确认机制保证最终数据的一致性。如果消息消费失败可以进行重试或者通过补偿机制来处理。