技术学习打卡 - 周志明的软件架构课
13 | 全局事务和共享事务是如何实现的?
https://time.geekbang.com/column/article/322287
XA-单服务多数据源
1. JTA: Java Transaction API
1.1) 事务管理器的接口:javax.transaction.TransactionManager
1.2) XA 规范的资源定义接口:javax.transaction.xa.XAResource , JDBC, or JMS may impl. the interface
1.3) JOTM(Java Open Transaction Manager)
2. 规范
2.1) 全局事务管理器
2.2) 局部资源管理器
3. 2PC-TwoPhaseCommit
3.1) two phase
准备阶段-precommit
提交阶段-docommit
3.2) two roles
参与者
协调者
DB two roles together. App as consumer
3.3) 前提条件
网络可靠-消息无误-不能解决-拜占庭问题
失联的节点最终可恢复
3.4) 问题
协调者的单点问题
两次远程调用 三次数据持久化 - 性能问题
两个前提条件 - 一致性风险
4. 3PC - Three Phase Commit
4.1) cancommit
4.2) precommit
4.3) docommit
4.4) Rollback 性能好过2PC , Commit 性能差过2PC
4.5) 三段式提交对单点问题和回滚时的性能问题有所改善,但是对一致性风险问题并未有任何改进,甚至是增加了面临的一致性风险
网友评论