分布式事务

HexThinking / 2023-05-03 / 原文

分布式理论

CAP理论

在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。由于P(分区容错)是必选项,所以只能在AP或者CP中选择。

  • 一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) ;

  • 可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性); 

  • 分区容错性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择;

BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)的缩写。在分布式系统中,CAP理论是指导思维,而BASE理论是CAP理论中AP的延伸,是对 CAP 中的一致性和可用性进行一个权衡的结果,核心思想是:即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

  • 基本可用(Basically Available):指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用。

  • 柔性状态(Soft state):指允许系统存在中间状态,并认为该中间状态不会影响系统整体可用性。比如,允许不同节点间副本同步的延时就是柔性状态的体现。

  • 最终一致性(Eventually consistent):指系统中的所有副本经过一定时间后,最终能够达到一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

事务的一致性

  • 强一致性:系统中的某个数据被成功更新后,后续的访问都能看到更新后的值;

  • 弱一致性:系统中的某个数据被更新后,后续的访问可能得到更新后的值,也可能是更改前的值;

  • 最终一致性:系统中的某个数据被更新,经过一段时间后,最终所有的访问都是更新的值;

事务按照属性分类

事务可以按照对数据的一致性要求进行分类:

刚性事务

分布式理论的CP ,强一致性,遵循ACID,对数据要求强一致性

柔性事务

分布式理论的AP+BASE ,最终一致性,遵循BASE,允许一定时间内不同节点的数据不一致,但要求最终一致;