问题产生:我的理解是:一个业务有一组复杂的远程调用,这些调用在操作数据时要像一个「事务」一样可靠。
分布式事务的需求来源是要在分布式中保持一组操作的事务性。
方案:
2PC(Two Phase Commitment Protocol) 逻辑最可靠,实现复杂,长链路可用性低
TCC(Try Commit Cancel)较简单,需要很多的补偿逻辑,一些场景不太好定义阶段和处理 比如?
本地消息表加异步处理,也需要补偿机制,避免了分布式事务,增加并发能力和可用性。 但消息表耦合进业务里,需要附加处理消息的逻辑
MQ事务消息RocketMQ,同上,不过不再把消息表耦合进业务
*分布式事务协调器 (DTC) 是windows的解决方案。