分布式系统一致性模型
在说FLP,CAP,BASE,ACID理论前,必须先说说分布式系统的一致性模型,它是其他理论的基础知识。
依次介绍几个相关的概念:
- 分布式系统是由多个不同的服务节点组成,节点与节点之间通过消息传递进行通信和协调。根据消息传递的不同,分布式系统的运行模型,可以分为异步模型系统和同步模型系统。
- 同步:系统中的各个节点的时钟误差存在上限;且消息传递必须在一定时间内完成,否则认为失败;同时各节点完成处理消息的时间是一定的。
- 异步:系统中各个节点可能存在较大的时钟差异,同时消息传输时间是任意长的,各节点对消息进行处理的时间也可能是任意长的。
- 一致性:对于给定一系列操作,分布式系统中的节点对处理结果达成一致。
- 数据一致性:分布式系统各个节点具有关联性的数据在逻辑上完整且正确。
所以一致性模型就是要保证在分布式系统数据和状态的一致性。它又可以被分为强一致性模型和弱一致性模型。
强一致性模型
在强一致性模型中,一旦数据写入成功,在任意时间,任意副本都可以读取数据当前的新值,且所有后续操作都将在新值的基础上展开,直到这个数据被再次更新。
弱一致性模型
与强一致性模型相对,在弱一致性模型中,数据写入成功后,某个副本上不一定能立刻读到新值,也不确定何时能读到。但随着时间的迁移,不同副本上的关联数据最终会达到一致性状态。
最终一致性模型可看作是弱一致性模型的特殊情况,数据写入成功后,某个副本上不一定能立刻读到当前数据的新值,但可以保证在一段时间后最终读到并进行相关操作,这段时间被称为不一致窗口。
FLP、CAP、BASE、ACID理论简介
FLP理论
FLP理论:在网络可靠并且存在节点失效的异步模型系统中,不存在一个可以解决一致性问题的确定性算法。在异步通信的模型下即使只有一个进程失效,也没有任何算法能够保证其他进程达到一致性。
启示:在异步分布式系统中不存在任何场景下都能实现一致性的算法。
FLP不可能理论给出了分布式一致性问题的上界!
CAP理论(ph试纸)
CAP:分布式系统的ph试纸,用它来测分布式系统的酸碱度
让我们先来看看CAP各个字母分别表示什么意思吧?
- C:Consistency,一致性。分布式系统中多个节点进行数据共享时需要保证各个副本之间的数据一致性。这里的一致性指的是强一致性,即保证在每次写操作之后,在任意节点上读操作时读到的都是最新的数据。
- A:Availability,可用性。是指系统为用户提供服务的能力。具有良好可用性的系统能够尽量避免用户操作失败和访问超时等情况。每个非故障节点需要保证在有限时间内对用户请求做出响应。即使系统中有部分节点出现故障,系统内仍能在正常响应时间内提供可用服务。
- P:Partitiontolerance,分区容忍性。分区容错性中的“分区”是指网络意义上的区域划分。网络通信并非一直可靠,当节点间无法正常通信时就会产生网络分区。若此时分布式系统仍能正常对外提供服务,则该系统具有良好的分区容错性。
根据上图即可明白:CAP理论指的是一个分布式系统中不可能同时满足一致性、可用性和分区容错性。选择满足其中两个要素时,就需要对剩下的一个做出部分程度的牺牲。在设计分布式架构时,需要根据系统特性在三个要素之间进行合理权衡和取舍。
当然不同选择会带来不同的结果,也就会设计出不同的产品,下图是一个示例:
BASE理论(碱)
BASE在英文中是碱的意思。跟CAP理论一样,先来看看各个字母代表的含义吧!
- BA:Basically Available,基本可用性。 指系统在突发故障时允许损失部分 可用性。这种损失通常包含两方面内容:一是响应时间的损失,即系统返 回结果的时间略微延长;二是部分系统功能的损失,即只要保证核心模块 可用,其他服务可能做一定的降级处理。
- S:Soft state,软状态。 指在不影响系统整体可用性的情况下,允许数据 存在中间状态。即接受不同节点中的数据副本进行同步过程中存在延时。
- E:Eventually consistent,最终一致性。 指系统中的数据副本经过不一 致窗口后最终会达到一致性状态。
BASE理论的核心思想是通过牺牲分布式系统的强一致性来获得高可用性。允许数据副本存在中间状态,只需要保证最终一致即可。
ACID理论(酸)
ACID在英文中是酸的意思。熟悉数据库理论的同学应该都知道,这是关系数据库中的事务的四个性质,这里再简单说明:
- A:Atomicity,原子性。事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个环节。
- C:Consistency,一致性。事务必须使数据库从一个一致性状态转换到另一个一致性状态。这意味着在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
- I:Isolation,隔离性。隔离性是指一个事务所做的修改在最终提交之前,对其他事务是不可见的。这样可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
- D:Durability,持久性。一旦事务提交,其所做的修改就是永久性的,即使系统发生故障也不会丢失。持久性可以确保数据的可靠性和稳定性。
可以看到,ACID理论和BASE理论作为CAP理论的酸碱两面,前者追求一致性,后者追求可用性。
ACID:CAP的“酸”,追求一致性 | BASE:CAP的“碱”,追求可用性 |
---|---|
原子性(Atomicity) | 基本可用(Basically Available) |
一致性(Consistency) | 软状态/柔性事务(Soft state) |
隔离性(Isolation) | 最终一致性(Eventual consistency) |
持久性(Durability) |