欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分布式事务学习笔记

程序员文章站 2022-06-13 19:49:11
...
分布式数据库常见模型:XA, 2PC, saga, TCC.
XA 是早期的跨数据库的分布式事务规范,需要锁表,性能较低,协调者基于weblogic等中间件,实际上就是一种2PC。
2PC 是两阶段提交。先prepare, 然后commit.由于需要锁资源保证ACID,所以性能低下。
saga 是一种高效的分布式事务方案,不需要锁资源。基于消息和事件驱动实现,如果分布式事务包括A,B,C三个短事务,那么A执行完本地事务,发消息,B收到通知执行本地事务,发消息,C接到消息,执行本地事务。当B,C发生失败,则发起回滚消息,一次回滚。只能保证A,C,D,不能保证隔离性。因为本地事务执行完,别的线程就能读取到消息了。
可靠消息表+MQ 最终一致也是saga的一种实现。
tcc 在此基础上做了优化。 先try, 冻结需要的部分资源(预留或者改为中间状态), 当所有资源都冻结成功之后,commit. 如果commit过程发生失败(一般是网络等外部原因),进行cancel回滚。保证性能和ACID。