BASE 是什么?请解释 BASE 特性
2023年2月9日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
什么是 BASE?
BASE 理论本质上是对 CAP 的延伸和补充,更举体来说是对 AP 方案的一个补充,核心思想为,在无法达到CAP 理论 的 Consistency (强一致性)的状况下,是否能够达成最终一致性。而 BASE 又可以拆成以下三个词来介绍:
Basically Available
分散式系统在出现故障时,允许损失部分可用性,保证核心功能可用。而这一点最难的地方在于,如何定义「部分」与「核心」,举例来说:对于会员管理系统而言,「登入」是核心功能,而「注册」则是「部分」功能,因为未注册的用户本来就无法使用会员系统内部的业务,因此注册不了则只会损失部分用户;倘若无法登入,则会员内部系统的业务皆无法使用。
Soft State
允许系统存在中间状态,也就是允许多个不同节点间因为某些状况(例如:资料同步延迟)导致资料不一致,但这中间状态不会影响系统整体的可用性,而这里的中间状态就是 CAP 理论中的数据不一致。而相反的 Strong State 则是指所有数据副本的该资料状态都是一致的。
Eventual Consistency
系统中所有副本经过一定时间后,最终能够达到一致的状态,如何定义「一定时间」和「最终」呢? 「一定时间」和数据本身的特性有强关联,不同数据能容忍的「不一致」时间是不同的,举例来说:用户注册完后的数据,应该会期待数据在短的时间(单位分钟)内同步到各节点,因为有可能会在不同的节点上去做登入;相反的,社群上的贴文则无须在短的时间内同步到各节点,因为朋友短时间看不到贴文是无感的。
和 CAP 的关联
- CAP 理论是忽略时间延迟的,而实际上时间延迟是无法避免的,这意味着完美的 CP 场景是不存在的,因此实际上 CP 方案实现了「最终一致性」,而「一定时间」是指延迟的几毫秒。
- AP 方案中牺牲一致性,指的是在分区期间,而不是永远放弃一致性。所以在分区故障恢复后,系统应该要达到「最终一致性」。