CAP 理论
CAP 理论作为分布式系统的基础理论,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),这三个要素最多只能同时实现两点 。

文章插图
一致性(C,Consistency):一致性是指数据在多个副本之间能否保持一致的特性 。
例如一个数据在某个分区节点更新之后,在其他分区节点读出来的数据也是更新之后的数据 。
可用性(A:Availability):可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果 。这里的重点是"有限时间内"和"返回结果" 。
分区容错性(P,Partition tolerance):分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务 。

文章插图
BASE 理论
BASE 理论,是对 CAP 中 AP 的一个扩展,对于我们的业务系统,我们考虑牺牲一致性来换取系统的可用性和分区容错性 。
BASE 是 Basically Available(基本可用),Soft State(软状态)和 Eventually Consistent(最终一致性)三个短语的缩写 。
Basically Available:基本可用 。通过支持局部故障而不是系统全局故障来实现的 。
如将用户分区在 5 个数据库服务器上,一个用户数据库的故障只影响这台特定主机那 20% 的用户,其他用户不受影响 。
Soft State:软状态 。状态可以有一段时间不同步 。
Eventually Consistent:最终一致 。最终数据是一致的就可以了,而不是时时保持强一致 。
分布式事务的几种解决方案
分布式事务解决方案主要有以下这几种:
- 2PC(二阶段提交)方案
- TCC(Try、Confirm、Cancel)
- 本地消息表
- 最大努力通知
- Saga 事务
二阶段提交方案是常用的分布式事务解决方案 。事务的提交分为两个阶段:准备阶段和提交执行方案 。
二阶段提交成功的情况:
- 准备阶段,事务管理器向每个资源管理器发送准备消息,如果资源管理器的本地事务操作执行成功,则返回成功 。
- 提交执行阶段,如果事务管理器收到了所有资源管理器回复的成功消息,则向每个资源管理器发送提交消息,RM 根据 TM 的指令执行提交 。

文章插图
二阶段提交失败的情况:
- 准备阶段,事务管理器向每个资源管理器发送准备消息,如果资源管理器的本地事务操作执行成功,则返回成功,如果执行失败,则返回失败 。
- 提交执行阶段,如果事务管理器收到了任何一个资源管理器失败的消息,则向每个资源管理器发送回滚消息 。

文章插图
2PC 方案实现起来简单,成本较低,但是主要有以下缺点:
- 单点问题:如果事务管理器出现故障,资源管理器将一直处于锁定状态 。
- 性能问题:所有资源管理器在事务提交阶段处于同步阻塞状态,占用系统资源,一直到提交完成,才释放资源,容易导致性能瓶颈 。
- 数据一致性问题:如果有的资源管理器收到提交的消息,有的没收到,那么会导致数据不一致问题 。
TCC 采用了补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作 。
TCC(Try-Confirm-Cancel)是通过对业务逻辑的分解来实现分布式事务 。
针对一个具体的业务服务,TCC 分布式事务模型需要业务系统都实现一下三段逻辑:
- Try 阶段:尝试去执行,完成所有业务的一致性检查,预留必须的业务资源 。
- Confirm 阶段:该阶段对业务进行确认提交,不做任何检查,因为 Try 阶段已经检查过了,默认 Confirm 阶段是不会出错的 。
- Cancel 阶段:若业务执行失败,则进入该阶段,它会释放 Try 阶段占用的所有业务资源,并回滚 Confirm 阶段执行的所有操作 。

文章插图
TCC 分布式事务模型包括如下三部分:
推荐阅读
- 日常这六件事能招来猝死!不知道的人赶紧看看
- 原理篇 分布式系统中如何优雅地追踪日志
- 分布式系统ID的生成方法之UUID、数据库、算法、Redis、Leaf方案
- 分布式系统架构落地与瓶颈突破 进阶架构师必读,人人都是架构师
- 汽车补胎是常事,但是车主却不知道哪种补胎好,修理工告诉你
- 公积金不买房屋就没用了?大多数人不知道,这4种情况也可以使用
- 黄茶的功效与作用喝了这么久竟然不知道,黄茶的功效与作用及禁忌详解
- 洗发水|曝光黑名单,几十款垃圾洗发水上榜,但很多家庭却不知道!
- 还不知道你的社保账户有多少钱?赶紧查一查
- 太极中的三不动技巧 你绝对不知道
