幾個名詞解釋:
網絡分區:俗稱“腦裂”。當網絡發生異常情況,導致分布式系統中部分節點之間的網絡延時不斷變大,最終導致組成分布式系統的所有節點中,只有部分節點之間能夠進行正常通信,而另一些節點則不能。當網絡分區出現時,分布式系統會出現局部小集群。
三態:分布式系統的每一次請求和響應包含:成功,失敗,超時三種狀態。
?
CAP
CAP理論,指的是在一個分布式系統中,不可能同時滿足Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性)這三個基本需求,最多只能滿足其中的兩項。
1、一致性:
指數據在多個副本之間是否能夠保持一致的特性。當執行數據更新操作后,仍然剋保證系統數據處于一致的狀態。
2、可用性:
系統提供的服務必須一直處于可用的狀態。對于用戶的每一個操作請求總是能夠在“有限的時間內”返回結果。這個有限時間是系統設計之初就指定好的系統運行指標。返回的結果指的是系統返回用戶的一個正常響應結果,而不是“out ot memory error”之類的系統錯誤信息。
3、分區容錯性:
分布式系統在遇到任何網絡分區故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網絡環境都發生了故障。組成分布式系統的每個節點的加入與退出都可以看成是一個特殊的網絡分區。
一個分布式系統無法同時滿足這三個條件,只能滿足兩個,意味著我們要拋棄其中的一項。
1、CA,放棄P:將所有數據都放在一個分布式節點上。這同時放棄了系統的可擴展性。
2、CP,放棄A:一旦系統遇到故障時,受影響的服務器需要等待一段時間,在恢復期間無法對外提供正常的服務。
3、AP,放棄C:這里的放棄一致性是指放棄數據強一致性,而保留數據的最終一致性。系統無法實時保持數據的一致,但承諾在一個限定的時間窗口內,數據最終能夠達到一致的狀態。
對于分布式系統而言,分區容錯性是一個最基本的要求,因為分布式系統中的組件必然需要部署到不通的節點,必然會出現子網絡,在分布式系統中,網絡問題是必定會出現的異常。因此分布式系統只能在C(一致性)和A(可用性)之間進行權衡。
?
?
BASE
BASE理論是指,Basically Available(基本可用)、Soft-state( 軟狀態/柔性事務)、Eventual Consistency(最終一致性)。是基于CAP定理演化而來,是對CAP中一致性和可用性權衡的結果。
核心思想:即使無法做到強一致性,但每個業務根據自身的特點,采用適當的方式來使系統達到最終一致性。
1、基本可用:
指分布式系統在出現故障的時候,允許損失部分可用性,保證核心可用。但不等價于不可用。比如:搜索引擎0.5秒返回查詢結果,但由于故障,2秒響應查詢結果;網頁訪問過大時,部分用戶提供降級服務,等。
2、軟狀態:
軟狀態是指允許系統存在中間狀態,并且該中間狀態不會影響系統整體可用性。即允許系統在不同節點間副本同步的時候存在延時。
3、最終一致性:
系統中的所有數據副本經過一定時間后,最終能夠達到一致的狀態,不需要實時保證系統數據的強一致性。最終一致性是弱一致性的一種特殊情況。
?
BASE理論面向的是大型高可用可擴展的分布式系統,通過犧牲強一致性來獲得可用性。ACID是傳統數據庫常用的概念設計,追求強一致性模型。
?
ACID,指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。