從Paxos到Zookeeper分散式一致性原理與實踐-------------1.分散式架構
1.分散式的特點
分散式系統是一個硬體或軟體元件分佈在不同的網路計算機上,彼此之間僅僅通過訊息傳遞進行通訊和協調系統。
2.分散式系統的特性:
1.分佈性
2.對等性
3.併發性
3.缺乏全域性時鐘
4.故障總會發生
3.分散式環境的各種問題
1.通訊異常
分散式系統需要在各個節點之間進行網路通訊,因此每次網路通訊都會伴隨著網路不可用的風險,網路光纖,路由器或是DNS等硬體裝置或者系統的不可用都會導致最鍾分散式系統無法完成一次通訊。
2.網路分割槽
當網路由於發生異常情況,導致分散式系統中部分節點之間網路延時不斷增大,最終導致組成分散式系統的節點中,只有部分節點可以正常通訊,而另外的節點不能,稱為網路分割槽,俗稱’腦裂‘
3.三態
成功,失敗,超時
在絕大部分情況下,通訊都能接受到成功或者失敗的響應。但是當網路出現異常時,可能出現如下超時:
a.由於網路原因,該請求並沒有被成功地傳送到接受方,而是在傳送過程中就發生了訊息丟失現象
b.該請求被接受方收到後,並進行了處理,但在響應的過程中,發生了訊息丟失現象
4.節點故障
組成分散式系統的伺服器節點出現宕機或‘僵死’現象
5.分散式理論
分散式事務:是指事務的參與者,支援事務的伺服器,資源伺服器以及事務管理器分別位於分散式系統的不同節點上。
CAP理論:一個分散式系統不可能同時滿足一致性(C),可用性(A),和分割槽容錯性(P)。最多滿足其中的兩項
一致性:在分散式系統中,指資料在多個副本之間是否能夠保持一直的特性。
可用性:指系統提供的服務必須一直處於可用的狀態,對於使用者的每一個操作請求總是能夠在有限的時間內返回。
分割槽容錯性:分散式系統在遇到任何網路分割槽故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網路環境都發生了故障。
BASE理論:基本可用,軟狀態,最終一致性
基本可用:分散式系統在出現不可預知故障的時候,允許損失部分可用性。並不等於系統不可用。如下列子
響應時間上的損失,功能上的損失
弱狀態:也稱軟狀態,和硬狀態相對,是指允許系統中的資料存在中間狀態,並在該狀態不影響系統的可用性,即允許不同節點的資料副本之間存在延遲。
最終一致性:是系統中的所有節點,在經過一段時間同步後,最終能夠達到一致的狀態。