分佈式協調服務基本概念

  1. 分佈式環境的特點
  • 分佈性
  • 併發性
    程序運行過程中,併發性操作是很常見的,比如同一個分佈式系統中的多個節點,同時訪問一個共享資源,數據庫、分佈式存儲
  • 無序性
    進程直接的消息通信,會出現順序不一致的問題
  1. 分佈式環境下面臨的問題
  • 網絡通信
    網絡通信的不可靠性
  • 網絡分區(腦裂)
    當網絡發生異常導致分佈式系統中部分節點之間的網絡延時不斷增大,最終導致組成分佈式架構的所有節點,只用部分節點能夠正常通信
  • 三態
    在分佈式架構裏面,除了成功、失敗還有超時
  • 分佈式事物
    ACID(原子性、一致性、隔離性、持久性)
  1. 中心化和去中心化
  • 冷備或者熱備
  • 分佈式架構裏面,很多架構思想採用的是:當集羣發生故障的時候,集羣中的人羣會自動"選舉"出一個新的領導,最典型的是:zookeeper/etcd
  1. 經典的CAP/BASSE理論
  • CAP
    • C(一致性 Consistency):所有節點上的數據時刻保持一致
    • A(可用性 Availability):每個請求都能夠收到一個響應。無論響應成功或者失敗
    • P(分區容錯性 Partition-tolerance):表示系統出現腦裂以後,可能導致某些server與集羣中的其他機器失去聯繫
    • CP/AP?
    • CAP理論僅適用於原子讀寫的NoSQL場景,不適用於數據庫系統
  • BASE
    • 基於CAP理論,CAP理論並不適用於數據庫事務(因爲更新一些錯誤的數據而導致數據出現絮亂,無論什麼樣的數據庫高可用方案都是徒勞),雖然XA事物可以保證數據庫在分佈式系統下ACID特性,但是會帶來性能方面的影響
    • ebay 嘗試了一種完全不同的側略,放鬆了對事務ACID的要求,提出了BASE理論
    • BA (Basically available 基本可用):數據庫採用分片模式,把100w的用戶數據數據分佈在5個實例上,如果被破壞了其中的一個實例,仍然可以保證80%的用戶可用
    • S(soft-state 軟狀態):在基於client-server模式的系統中,server端是否有狀態,決定了系統是否具有良好的水平擴展、負載均衡、故障恢復等特性,Server端會承諾維護client端狀態數據,這個狀態僅僅維持一小段時間,這段時間後,server就會丟棄這個狀態,恢復正常狀態
    • E(Eventually consistent 最終一致性): 強調的是所有的數據副本,在經過一段時間的同步之後,最終都能夠達到一個一致的狀態。因此,最終一致性的本質是需要系統保證最終數據能夠達到一致,而不需要實時保證系統數據的強一致性。
    • 總的來說,BASE理論面向的是大型高可用可擴展的分佈式系統,和傳統的事物ACID特性是相反的,它完全不同於ACID的強一致性模型,而是通過犧牲強一致性來獲得可用性,並允許數據在一段時間內是不一致的,但最終達到一致狀態。但同時,在實際的分佈式場景中,不同業務單元和組件對數據一致性的要求是不同的,因此在具體的分佈式系統架構設計過程中,ACID特性和BASE理論往往又會結合在一起。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章