分布式系统CAP----数据的【最终一致性】

本文探讨了分布式系统中如何实现最终一致性,包括两阶段提交(2PC)、三阶段提交(3PC)、TCC模式、可靠事件模式以及业务补偿模式等方法。详细解释了各种模式的优缺点和应用场景。
摘要由CSDN通过智能技术生成

目录

 一、解题思路:

二、最终一致性的常用做法

三、实现方法说明

3.1、两阶段提交协议 2PC

3.2、三段提交协议3PC(弥补 2PC 协议缺点)

3.3、TCC模式(Try-Confirm-Cancel)----这个像 【两阶段提交协议】

3.4、 可靠事件模式

3.5、业务补偿模式


 一、解题思路:

【最终一致性】:是指系统中的所有数据副本经过一段时间后,最终能够达到一致的状态。这里所说的一段时间,也要是用户可接受范围内的一段时间。

eg: 第一阶段----完成某项业务;第二阶段----n个dataSource的数据都进行更新并保证一定成功; 

第一阶段好说,但你如何保证第二阶段的n个dataSource更新一定都成功?比如就有1个dataSource没更新呢?你凭什么保证,如何代码控制?

  • 事务:n个dataSource要么全部更新成功,要么全部都不更新;

        eg: 两阶段提交协议,三阶段提交协议;

  • 非事务: 不用事务概念后搞不好就有某个dataSource失败的,真这样了只能补偿;

         但凭什么保证补偿一定成功?

         要么我暴力的“不停重试,直到成功”;eg:事务型消息队列

         要么“第二阶段失败的概率比较小”,我稍微补偿一下就可以;eg:补偿任务

         ps: 还有小概率真的不会成功,那怎么办?第二阶段每隔一段时间主动汇报执行结果;


二、最终一致性的常用做法

1、单数据库事务

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值