【Distributed System】分布式理论 - BASE

Posted by 西维蜀黍 on 2019-01-08, Last Modified on 2022-12-10

BASE理论

eBay 的架构师 Dan Pritchett 源于对大规模分布式系统的实践总结,在 ACM 上发表文章提出 BASE 理论,BASE 理论是对 CAP 理论的延伸,核心思想是:即使无法做到强一致性(Strong Consistency),CAP 的一致性就是强一致性),但每个应用都可以根据自身的业务特点,采用适合的方式来达到最终一致性(Eventual Consitency)

BASE 是指基本可用(Basically Availability)、软状态( Soft State)、最终一致性( Eventual Consistency)。

基本可用(Basically Availability)

基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

损失部分可用性可体现为:

  • 响应时间上的损失:正常情况下的搜索引擎 0.5 秒即返回给用户结果,而基本可用的搜索引擎可以在2秒后返回结果。
  • 功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单。但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。

软状态(Soft-State)

相对于 ACID 中的原子性(Atomicity)而言,要求多个节点的数据副本都是一致的,这是一种“硬状态”。

而软状态(Soft-State)是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性,最终数据会保证最终一致性。

比如,数据库读写分离,写库同步到读库(主库同步到从库)会有一个延时,这样实际是一种柔性状态。

最终一致性(Eventual Consistency)

上面说软状态,然后不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据一致性,从而达到数据的最终一致性( Eventual Consistency)。这个时间期限取决于网络延时、系统负载、数据复制方案设计等等因素。

弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

ACID 和 BASE 的区别与联系

ACID 和 BASE 代表了两种截然相反的设计哲学,而 CAP 也正是 ACID 和 BASE 长期博弈(trade off)的结果。

ACID 是传统数据库常用的设计理念,追求强一致性模型。因此 ACID 伴随数据库的诞生定义了系统基本设计思路,

2000年左右,随着互联网的发展,高可用的话题被摆上桌面,所以提出了 BASE ,即通过牺牲强一致性获得高可用性。从此 C 和 A 的取舍消长此起彼伏,其结晶就是 CAP 理论。

在高可用与高性能的应用场景,分布式事务的最佳实践是放弃 ACID,遵循 BASE 的原则重构业务流程。


CAP 并不与 ACID 中的 A(原子性)冲突,值得讨论的是 ACID 中的 C(一致性)和 I(隔离性)。ACID 的 C 指的是事务不能破坏任何数据库规则,如键的唯一性。与之相比,CAP 的 C 仅指单一副本这个意义上的一致性,因此 CAP 的 C 只是 ACID 一致性约束的一个严格的子集

如果系统要求 ACID 中的 I (隔离性),那么它在分区期间最多可以在分区一侧维持操作。事务的**可串行性(serializability)**要求全局的通信,因此在分区的情况下不能成立。

Reference