diff --git a/notes/分布式基础.md b/notes/分布式基础.md index 3c4f8a4b..a49332f4 100644 --- a/notes/分布式基础.md +++ b/notes/分布式基础.md @@ -18,6 +18,10 @@ * [1. 强同步复制协议](#1-强同步复制协议) * [2. 异步复制协议](#2-异步复制协议) * [CAP](#cap) +* [BASE](#base) + * [1. 基本可用](#1-基本可用) + * [2. 软状态](#2-软状态) + * [3. 最终一致性](#3-最终一致性) * [容错](#容错) * [1. 故障检测](#1-故障检测) * [2. 故障恢复](#2-故障恢复) @@ -160,6 +164,28 @@ Distributed Hash Table(DHT):对于哈希空间 0\~2n,将该 需要注意的是,分区容忍性必不可少,因为需要总是假设网络是不可靠的。因此实际上设计分布式系统需要在一致性和可用性之间做权衡。 +# BASE + +BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性和可用性权衡的结果,是基于 CAP 定理逐步演化而来的。BASE 理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。 + +## 1. 基本可用 + +指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。 + +例如,电商在做促销时,服务层可能只提供降级服务,部分用户可能会被引导到降级页面上。 + +## 2. 软状态 + +指允许系统存在中间状态,而该中间状态不会影响系统整体可用性,即不同节点的数据副本之间进行同步的过程允许存在延时。 + +## 3. 最终一致性 + +指所有的数据副本,在经过一段时间的同步之后,最终都能够达到一致的状态。 + +强一致性需要保证数据副本实时一致,而最终一致性只需要保证过一段时间是一致的。 + +ACID 是传统数据库系统常用的设计理论,追求强一致性模型。BASE 常用于大型分布式系统,只需要保证最终一致性。在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。 + # 容错 分布式系统故障发生的概率很大,为了实现高可用以及减少人工运维成本,需要实现自动化容错。