一文弄懂常用分布式事务解决方案

CAP理论

在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。

  • Consistency 一致性:对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。(A read is guaranteed to return the most recent write for a given client. )
  • Availability 可用性: 非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。(A non-failing node will return a reasonable response within a reasonable amount of time (no error or timeout). )
  • Partition Tolerance 分区容忍性:当出现网络分区后,系统能够继续“履行职责”。(The system will continue to function when network partitions occur. )
    在这里插入图片描述
    虽然 CAP 理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择 P(分区容忍)要素,因为网络本身无法做到 100% 可靠,有可能出故障,所以分区是一个必然的现象。
    如果我们选择了 CA(一致性 + 可用性) 而放弃了 P(分区容忍性),那么当发生分区现象时,为了保证 C(一致性),系统需要禁止写入。
    当有写入请求时,系统返回 error(例如,当前系统不允许写入),这又和 A(可用性) 冲突了,因为 A(可用性)要求返回 no error 和 no timeout。
    因此,分布式系统理论上不可能选择 CA (一致性 + 可用性)架构,只能选择 CP(一致性 + 分区容忍性) 或者 AP (可用性 + 分区容忍性)架构,在一致性和可用性做折中选择。

BASE理论

它的核心思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性。

  • Basically Available 基本可用: 分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
    这里的关键词是“部分”和“核心”,实际实践上,哪些是核心需要根据具体业务来权衡。
  • Soft State 软状态: 允许系统存在中间状态,而该中间状态不会影响系统整体可用性。这里的中间状态就是 CAP 理论中的数据不一致。
  • Eventual Consistency 最终一致性: 系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。
    “一定时间”和数据的特性是强关联的,不同业务数据能够容忍的不一致时间是不同的。
    而“最终”的含义就是不管多长时间,最终还是要达到一致性的状态。
    在这里插入图片描述
    常见的一致性模型:
  • 强一致性: 要求无论更新操作是在哪个数据副本上执行,之后所有的读操作都要能获得最新的数据。
  • 弱一致性: 在这种一致性下,用户读到某一操作对系统特定数据的更新需要一段时间,我们将这段时间称为"不一致性窗口"。
  • 最终一致性: 是弱一致性的一种特例,在这种一致性下系统保证用户最终能够读取到某操作对系统特定数据的更新(读取操作之前没有该数据的其他更新操作)。

常见分布式事务解决方案

2PC(二阶段提交)方案:强一致性

在这里插入图片描述

3PC(三阶段提交)方案:强一致性

在这里插入图片描述

TCC 事务:最终一致性

在这里插入图片描述

本地消息表:最终一致性

在这里插入图片描述

事务消息:最终一致性

在这里插入图片描述

Saga 事务:最终一致性

在这里插入图片描述

命令协调

在这里插入图片描述

事件编排

在这里插入图片描述

各方案适用场景及对比

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值