分布式事务
2018-07-23 本文已影响0人
琥珀灬
基于XA协议的两阶段提交方案(2pc)
第一阶段 第二阶段XA 规范的基础是两阶段提交协议:第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;第二阶段是执行阶段,协调者根据所有参与者的反馈,通知所有参与者,步调一致地在所有分支上提交或者回滚,两阶段提交方案锁定资源时间长,对性能影响很大,基本不适合解决微服务事务问题。
TCC方案
TCC事务是Try、Commit、Cancel三种指令的缩写,其逻辑模式类似于XA两阶段提交,但是实现方式是在代码层面来人为实现,Try部分完成业务的准备工作,confirm部分完成业务的提交,cancel部分完成事务的回滚。
优点:
TCC方案让应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能。
缺点:
对应用的侵入性强。业务逻辑的每个分支都需要实现try、confirm、cancel三个操作,应用侵入性较强,改造成本高。
实现难度较大。需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。为了满足一致性的要求,confirm和cancel接口必须实现幂等
MQ事务
利用消息中间件来异步完成事务的后一半更新,实现系统的最终一致性。这个方式避免了像XA协议那样的性能问题。
GTS–分布式事务解决方案(阿里分布式组件)
性能超强、应用侵入性极低
东西比较多自行深入了解