gydtep
发表于 2020-6-18 10:38:34
事务的执行过程中,宕机和网络超时都有可能发生,针对这些异常场景,不同 XA 规范的实现,对异常处理做法可能不同,
gydtep
发表于 2020-6-18 10:48:34
TM 在阶段 1 中询问 RM 前宕机,恢复后无需做任何操作。
gydtep
发表于 2020-6-18 12:16:44
原子性:在 prepare 和 commit 阶段保证事务是原子性的。
gydtep
发表于 2020-6-18 14:01:30
每一个 TM 域来说,由于 TM 是单点,存在单点故障风险,如果 TM 在阶段1之后挂掉,会导致参与的 RM 长时间收不到阶段 2 的请求而长期持有资源的锁,
gydtep
发表于 2020-6-18 14:05:58
影响业务的吞吐能力。同时一次完整的全局事务,TM 和 RM 之间的交互多达 8 次,太繁琐,非常影响系统的处理性能。
gydtep
发表于 2020-6-18 14:11:51
XA 两阶段协议可能会造成脑裂的异常,假如 TM 在阶段 2 通知 RM 提交事务时,如果指令发出后就宕机了,
gydtep
发表于 2020-6-18 15:25:35
支持 TCC 事务的开源框架有:ByteTCC、Himly、TCC-transaction。
gydtep
发表于 2020-6-18 16:04:15
一致性:Saga 事务可以实现最终一致性。
持久性:基于本地事务,所以这个特性可以很好实现。
gydtep
发表于 2020-6-18 17:00:20
TCC 是完美补偿,补偿操作会彻底清理之前的原始事务操作,用户是感知不到事务取消之前的状态信息的。
gydtep
发表于 2020-6-18 17:05:58
TCC 的事务可以更好的支持异步化,但是 Saga 模式一般在补偿阶段比较适合异步化。