网络新闻专题做的最好的网站,手机网站底部代码,网站虚拟空间,网站建设与运营未来发展如何实现最终一致性分布式事务 二阶段提交 概念#xff1a;参与者将操作成败通知协调者#xff0c;再由协调者根据所有参与者的反馈情况决定各个参与者是否要提交操作或者终止操作作用#xff1a;主要保证了分布式事务的原子性#xff0c;第一阶段为准备阶段#xff0c;第…如何实现最终一致性分布式事务 二阶段提交 概念参与者将操作成败通知协调者再由协调者根据所有参与者的反馈情况决定各个参与者是否要提交操作或者终止操作作用主要保证了分布式事务的原子性第一阶段为准备阶段第二阶段为提交阶段缺点不仅要锁住参与者的所有资源而且要锁住协调者资源开销大一句话总结就是2PC效率很低对高并发很不友好 三阶段提交 概念三阶段提交协议在协调者和参与者中都引入了超时机制并且把两阶段提交协议的第一阶段拆分成了两步询问然后再锁资源最后真正提交这样三阶段提交就有CanCommit,PreCommit,DoComiit三个阶段。 协调者询问各个参与者是否可以正常执行参与者集群预估判断是否可以执行正常执行进入pre-commit不满足或者等待超时abort协调者询问各个参与者是否可以正常执行参与者集群执行事务但是不提交协调者接受反馈正常执行则commit失败或者等待超时则rollback协调者向所有参与者发起事务提交通知参与者集群收到通知或超时提交参与者集群反馈事务提交结果参与者超时提交出现不一致 缺点如果进入pre-commit后协调者发出的是abort请求假设只有一个参与者收到并进行了abort操作而其他对于系统状态未知的参与者选择继续提交commit此时系统状态发生不一致 柔性事务 概念所谓柔性事务是相对强制缩表的刚性事务而言流程如下 服务器A的事务如果执行顺利那么事务A就先行提交如果事务B也执行顺利则事务B也提交整个事务就算完成但是如果事务B执行失败事务B本身回滚这时事务A已经提交所以需要执行一个补偿操作将已经提交的事务A执行的操作进行反操作恢复到未执行前事务A的状态 缺点业务侵入性太强还要补偿操作缺乏普遍性没法大规模推广 消息最终一致性解决方案之RabbitMQ实现 实现发送方确认消息持久化消费者确认