第六周学习心得
CAP
分布式系统不可能同时满足一致性(C:Consistence),可用性(A:Avaliability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中的两项。
一致性
一致性是指多个数据副本是否能保持一致的特性,在一致性的条件下,系统在执行数据更新操作之后能够从一致性状态转移到另一个一致性状态。
对系统的一个数据更新成功之后,如果所有的用户都能够读取到最新的值,该系统就被认为具有较强的一致性。
可用性
可用性指分布式系统在面对各种异常时可以正常提供服务的能力,可以用系统可用时间占总时间的比值来衡量,4 个 9 的可用性表示系统 99.99%的时间是可用的。
在可用性条件下,要求系统提供的服务一直处于可用的状态,对于用户的每一个操作请求总能够在有限的时间内返回结果。
分区容忍性
网络分区指分布式系统中的节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。
在分区容忍性条件下,分布式系统在遇到任何网络分区故障的时候,仍然需要能对外提供一致性和可用性的服务,除非是整个网络环境都发生了故障。
权衡
在分布式系统中,分区容忍性必不可少,因为需要总是假设网络是不可靠的,因此,CAP 理论实际上是要在可用性和一致性之间做权衡。
可用性和一致性往往是冲突的,很难使它们同时满足。在对个节点之间进行数据同步时,
为了保持一致性(CP),不能访问未同步完成的节点,这也就失去了部分可用性。
为了保证可用性(AP),允许读取所有节点的数据,但是数据可能出现不一致。
BASE
BASE 是基本可用(Basically Available),软状态(Soft State),和最终一致性(eventually Consistent)三个短语的缩写。
BASE 理论是对 CAP 中一致性和可用性权衡的结果,它的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来让系统达到最终一致。
基本可用
指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。
软状态
指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统整体可用性,即允许系统不同节点中的数据副本之间同步的过程存在延迟。
最终一致性
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能达到一致的状态。
ACID 要求强一致性,通常运用在传统的数据库上,而 BASE 要求最终一致性,通过牺牲强一致性来达到可用性,适合运行在大型分布式系统中。
在在实际的分布式场景中,不同业务单元和组件对一致性的要求不同,因此 ACID 和 BASE 往往会结合在一起使用。
评论