赞
踩
在说FLP,CAP,BASE,ACID理论前,必须先说说分布式系统的一致性模型,它是其他理论的基础知识。
依次介绍几个相关的概念:
所以一致性模型就是要保证在分布式系统数据和状态的一致性。它又可以被分为强一致性模型和弱一致性模型。
在强一致性模型中,一旦数据写入成功,在任意时间,任意副本都可以读取数据当前的新值,且所有后续操作都将在新值的基础上展开,直到这个数据被再次更新。
与强一致性模型相对,在弱一致性模型中,数据写入成功后,某个副本上不一定能立刻读到新值,也不确定何时能读到。但随着时间的迁移,不同副本上的关联数据最终会达到一致性状态。
最终一致性模型可看作是弱一致性模型的特殊情况,数据写入成功后,某个副本上不一定能立刻读到当前数据的新值,但可以保证在一段时间后最终读到并进行相关操作,这段时间被称为不一致窗口。
FLP理论:在网络可靠并且存在节点失效的异步模型系统中,不存在一个可以解决一致性问题的确定性算法。在异步通信的模型下即使只有一个进程失效,也没有任何算法能够保证其他进程达到一致性。
启示:在异步分布式系统中不存在任何场景下都能实现一致性的算法。
FLP不可能理论给出了分布式一致性问题的上界!
CAP:分布式系统的ph试纸,用它来测分布式系统的酸碱度
让我们先来看看CAP各个字母分别表示什么意思吧?
根据上图即可明白:CAP理论指的是一个分布式系统中不可能同时满足一致性、可用性和分区容错性。选择满足其中两个要素时,就需要对剩下的一个做出部分程度的牺牲。在设计分布式架构时,需要根据系统特性在三个要素之间进行合理权衡和取舍。
当然不同选择会带来不同的结果,也就会设计出不同的产品,下图是一个示例:
BASE在英文中是碱的意思。跟CAP理论一样,先来看看各个字母代表的含义吧!
BASE理论的核心思想是通过牺牲分布式系统的强一致性来获得高可用性。允许数据副本存在中间状态,只需要保证最终一致即可。
ACID在英文中是酸的意思。熟悉数据库理论的同学应该都知道,这是关系数据库中的事务的四个性质,这里再简单说明:
可以看到,ACID理论和BASE理论作为CAP理论的酸碱两面,前者追求一致性,后者追求可用性。
ACID:CAP的“酸”,追求一致性 | BASE:CAP的“碱”,追求可用性 |
---|---|
原子性(Atomicity) | 基本可用(Basically Available) |
一致性(Consistency) | 软状态/柔性事务(Soft state) |
隔离性(Isolation) | 最终一致性(Eventual consistency) |
持久性(Durability) |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。