分布式理论 BASE

1,053 阅读3分钟

2008 年 eBay 的架构师 Dan Pritchett 在发表给 ACM 的文章 BASE: An Acid Alternative 中第一次明确提出BASE理论

简介

BASE 不是 base (基础) 的意思

BASE是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的简写。

BASE是对CAP 理论强一致性可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

Basically Available

BASE 中的 BA,基本可用。

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性 (响应时间、功能上的可用性).

注意,允许损失部分可用性 不等价于 系统不可用

响应时间上的损失:正常情况下的搜索引擎 0.5 秒即可返回结果,而基本可用情况下的搜索引擎 1 秒才返回结果。

功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单,但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。

Soft state

BASE 中的 S,软状态。

软状态指的是,允许系统中的数据存在中间状态,且该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时,前提是这个延时不影响可用性。

硬状态, 要求多个节点的数据副本都是一致的

Eventually consistent

BASE 中的 E,最终一致性。

上面说软状态,然后不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据一致性。

亚马逊首席技术官Werner Vogels在于2008年发表的一篇经典文章Eventually Consistent-Revisited中,对最终一致性进行了非常详细的介绍。

他认为最终一致性是一种特殊的弱一致性

系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态 ,因此所有客户端对系统的数据访问都能够获取到最新的值。同时,在没有发生故障 的前提下,数据达到一致状态的时间延迟,取决于网络延迟、系统负载和数据复制方 案等因素。

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一致的状态。

强一致性

有弱一致性,就有强一致性。

强一致性要求,在更新的同时,所有节点查询到的都必须是最新的数据。

5种最终一致性

实际工作中,最终一致性分为 5 种

因果一致性(Causal consistency)

如果节点A在更新完某个数据后通知了节点B,那么节点B的访问修改操作都是基于A更新后的值,同时,和节点A没有因果关系的C的数据访问则没有这样的限制

读己之所写(Read your writes)

因果一致性的特定形式,一个节点A总可以读到自己更新的数据

会话一致性(Session consistency)

访问存储系统同一个有效的会话,系统应保证该进程读己之所写

单调读一致性(Monotonic read consistency)

一个节点从系统中读取一个特定值之后,那么该节点从系统中不会读取到该值以前的任何值

单调写一致性(Monotonic write consistency)

一个系统要能够保证来自同一个节点的写操作被顺序执行(保证写操作串行化)