BASE 是什麼?請解釋 BASE 特性
2023年2月9日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
什麼是 BASE?
BASE 理論本質上是對 CAP 的延伸和補充,更舉體來說是對 AP 方案的一個補充,核心思想為,在無法達到 CAP 理論 的 Consistency (強一致性)的狀況下,是否能夠達成最終一致性。而 BASE 又可以拆成以下三個詞來介紹:
Basically Available
分散式系統在出現故障時,允許損失部分可用性,保證核心功能可用。而這一點最難的地方在於,如何定義「部分」與「核心」,舉例來說:對於會員管理系統而言,「登入」是核心功能,而「註冊」則是「部分」功能,因為未註冊的用戶本來就無法使用會員系統內部的業務,因此註冊不了則只會損失部分用戶;倘若無法登入,則會員內部系統的業務皆無法使用。
Soft State
允許系統存在中間狀態,也就是允許多個不同節點間因為某些狀況(例如:資料同步延遲)導致資料不一致,但這中間狀態不會影響系統整體的可用性,而這裡的中間狀態就是 CAP 理論中的數據不一致。而相反的 Strong State 則是指所有數據副本的該資料狀態都是一致的。
Eventual Consistency
系統中所有副本經過一定時間後,最終能夠達到一致的狀態,如何定義「一定時間」和「最終」呢?「一定時間」和數據本身的特性有強關聯,不同數據能容忍的「不一致」時間是不同的,舉例來說:用戶註冊完後的數據,應該會期待數據在短的時間(單位分鐘)內同步到各節點,因為有可能會在不同的節點上去做登入;相反的,社群上的貼文則無須在短的時間內同步到各節點,因為朋友短時間看不到貼文是無感的。
和 CAP 的關聯
- CAP 理論是忽略時間延遲的,而實際上時間延遲是無法避免的,這意味著完美的 CP 場景是不存在的,因此實際上 CP 方案實現了「最終一致性」,而「一定時間」是指延遲的幾毫秒。
- AP 方案中犧牲一致性,指的是在分區期間,而不是永遠放棄一致性。所以在分區故障恢復後,系統應該要達到「最終一致性」。