其他分享
首页 > 其他分享> > 分布式事务如何保证一致性

分布式事务如何保证一致性

作者:互联网


1. ⼆阶段提交:
a. 概念:参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是中⽌操
作。
b. 作⽤:主要保证了分布式事务的原⼦性;第⼀阶段为准备阶段,第⼆阶段为提交阶段

 

 c. 缺点:不仅要锁住参与者的所有资源,⽽且要锁住协调者资源,开销⼤。⼀句话总结就是:2PC效率很低,对⾼并发很不
友好。
2. 三阶段提交:
a. 概念:三阶段提交协议在协调者和参与者中都引⼊超时机制,并且把两阶段提交协议的第⼀个阶段拆分成了两步:询问,
然后再锁资源,最后真正提交。这样三阶段提交就有CanCommit、PreCommit、DoCommit三个阶段。

 

 b. 缺点:如果进⼊PreCommit后,Coordinator发出的是abort请求,假设只有⼀个Cohort收到并进⾏了abort操作,
⽽其他对于系统状态未知的Cohort会根据3PC选择继续Commit,此时系统状态发⽣不⼀致性。
3. 柔性事务:
a. 概念:所谓柔性事务是相对强制锁表的刚性事务⽽⾔。流程⼊下:服务器A的事务如果执⾏顺利,那么事务A就先⾏提
交,如果事务B也执⾏顺利,则事务B也提交,整个事务就算完成。但是如果事务B执⾏失败,事务B本身回滚,这时事务A已
经被提交,所以需要执⾏⼀个补偿操作,将已经提交的事务A执⾏的操作作反操作,恢复到未执⾏前事务A的状态。
b. 缺点:业务侵⼊性太强,还要补偿操作,缺乏普遍性,没法⼤规模推⼴。
4. 消息最终⼀致性解决⽅案之RabbitMQ实现:
a. 实现:发送⽅确认+消息持久化+消费者确认

标签:事务,协调者,阶段,提交,一致性,操作,参与者,分布式
来源: https://www.cnblogs.com/15078480385zyc/p/16540763.html