1. 程式人生 > >從Paxos到Zookeeper分散式一致性原理與實踐 讀書筆記之(一) 分散式架構

從Paxos到Zookeeper分散式一致性原理與實踐 讀書筆記之(一) 分散式架構

1.1 從集中式到分散式

 1 集中式特點

 結構簡單,無需考慮對多個節點的部署和節點之間的協作。

 2  分散式特點

分不性:在時間可空間上隨意分佈,機器的分佈情況隨時變動

對等性:計算機之間沒有主從之分,所有計算機之間是對等的。副本是分散式系統對資料和服務提供的一種冗餘手段。

資料副本,是指在不同的節點上持久化同一份資料,只是解決分散式系統資料丟失的最有效手段。

服務副本,多個節點提供同樣的服務,每個節點有能力接受外部的請求並進行處理。

併發性

缺乏全域性時鐘:很難定義兩個事件的順序誰先誰後,原因是缺乏全域性時鐘序列控制。

故障總是會發生:組成分散式系統的所有計算機隨時可能發生各種形式的故障。

 3 分散式環境各種問題

  通訊異常

網路分割槽:當網路發生異常,系統中部分節點之間網路延時不斷增大,最終導致只有部分節點能夠通訊,另一些節點不能。這一現象叫網路分割槽,或者“腦裂”。

三態:失敗、成功與超時。

        節點故障:組成分散式系統的節點宕機或者“殭屍”,每個節點都會發生,每天都在發生。

1.2從ACID到CAP/BASE 

 1 ACID

原子性

全部成功執行

全部不執行

一致性

隔離性

未授權讀取

授權讀取

可重複讀:事務處理過程中,多次讀取資料是一致的。

序列化:所有事務被序列執行,是最嚴重的事務隔離級別。

 

隔離級別 髒讀(Dirty Read) 不可重複讀(NonRepeatable Read) 幻讀(Phantom Read)
未授權讀取 (Read uncommitted)
可能 可能 可能
授權讀取(Read committed)
不可能 可能 可能
可重複讀(Repeatable read)
不可能 不可能 可能
序列化(Serializable ) 不可能 不可能 不可能

 

級別越高,資料越安全,但效能越低。(不可重複讀針對的是讀取過程中其他執行緒對資料 update或delete,幻讀針對insert進去符合條件的資料。)

永續性:指一個事務提交,它對資料的修改是永久性的。

 2 分散式事務

 3 CAP和BASE理論 

  CAP:一個分散式系統不可能同時滿足一致性、可用性、分割槽容錯性,這三基本要求最多隻能滿足其中的兩個。

一致性:在多個副本中的資料是否能保持一致。

可用性:指系統提供的服務是否一致可用,對使用者的請求是否能在有限的時間內返回結果。

分割槽容錯性:在遇到任何網路故障的時候,仍然滿足一致性和可用性的服務。

         對一個分散式系統而言,分割槽容錯性是一個最基本的要求。

Base理論:面向的是大型高可用可擴充套件的分散式系統,和傳統事務的ACID不一樣,它完全不同於ACID的強一致性模型,而是提出通過犧牲強一致性來獲取資料在一段時間內是不一致的,但最終達到一致狀態。

基本可用:分散式系統出現不可預知故障時,允許損失部分可用性。

響應時間上的損失

功能上的損失

弱狀態:允許不同副本資料同步時候的傳輸延時。 

最終一致性:指系統中所有的副本,在經過一段時間的同步之後,最終能夠達到一個一致的狀態。