談談 分布式理論基石

2021-10-07 13:01:23 字數 1802 閱讀 7376

不難看出上邊說的這些事確確實實存在的問題。但是我們在開發中往往會有意無意的忽略它,希望大家在今後的工作中多多思考下

一致性:指客戶端每次操作,不管訪問那個節點,要麼讀到的都是同乙份最新資料,要麼失敗。一致性強調的是各個節點間的資料一致性,而不是強調的資料完整性

二階段提交協議,不僅僅是協議,也是一種非常經典的思想。二階段提交在達成提交操作共識的演算法中應用廣泛,比如 xa 協議、tcc、paxos、raft 等。我希望你不僅能理解二階段提交協議,更能理解協議背後的二階段提交的思想,當後續需要時,能靈活地根據二階段提交思想,設計新的事務或一致性協議。

冪等性,是指同一操作對同一系統的任意多次執行,所產生的影響均與一次執行的影響相同,不會因為多次執行而產生***。常見的實現方法有 token、索引等。它的本質是通過唯一標識,標記同一操作的方式,來消除多次執行的***。

paxos、raft 等強一致性演算法,也採用了二階段提交操作,在「提交請求階段」,只要大多數節點確認就可以,而具有 acid 特性的事務,則要求全部節點確認可以。所以可以將具有 acid 特性的操作,理解為最強的一致性。

建議在開發實現分布式系統,如果不是必須,盡量不要實現事務,可以考慮採用強一致性或最終一致性可用性:指說任何來自客戶端的請求,不管訪問那個節點,都能得到響應,但是不保證是同乙份最新資料,可用性強調的是服務可用,但是不保證資料一致分割槽容錯性:指當前節點出現任意數量的訊息丟失或者高延遲的時候,系統仍然可以繼續提供服務,分割槽容錯性是不管我的內部出現什麼樣的資料同步問題,我一直執行,提供服務,強調的是集群對分割槽故障的容錯能力,該特性是在分布式中必須要考慮的乙個

基本可用 :指分布式系統出現故障的時候,允許損失部分可用性,即保證可信可用。

它主要強調的是:基本可用在本質上是一種妥協,也就是在出現節點故障或者系統過載的時候,通過犧牲非核心功能的可用性,保障核心功能的穩定執行。 基本可用的四板斧流量削峰、延遲響應、體驗降級、過載保護

軟狀態 :允許系統存在中間狀態,而該中間狀態不會影響系統整體可用性。分布式儲存中一般資料至少會有三個副本,允許不同節點間副本的延時就是軟狀態的體現。 mysql replication的非同步複製就是一種體現

最終一致性: 指系統中的所有資料副本經過一定時間後,最終能夠叨叨一致的狀態。弱一致性和強一致性相反,最終一致性是弱一致性的一種特殊情況。

實現最終一致性的幾種方式:

base 理論是對 cap 中一致性和可用性權衡的結果,它**於對大規模網際網路分布式系統實踐的總結,是基於 cap 定理逐步演化而來的。它的核心思想是,如果不是必須的話,不推薦實現事務或強一致性,鼓勵可用性和效能優先,根據業務的場景特點,來實現非常彈性的基本可用,以及實現資料的最終一致性。

base 理論主張通過犧牲部分功能的可用性,實現整體的基本可用,也就是說,通過服務降級的方式,努力保障極端情況下的系統可用性。

acid 理論是傳統資料庫常用的設計理念,追求強一致性模型。base 理論支援的是大型分布式系統,通過犧牲強一致性獲得高可用性。base 理論在很大程度上,解決了事務型系統在效能、容錯、可用性等方面痛點。另外我再多說一句,base 理論在 nosql 中應用廣泛,是 nosql 系統設計的事實上的理論支撐。

分布式理論 分布式事務

資料庫事務 事務的基本特性 事務有4個非常重要的特性,即我們常說的 acid atomicity 原子性 是說事務是乙個不可分割的整體,所有操作要麼全做,要麼全不做 只要事務中有乙個操作出錯,回滾到事務開始前的狀態的話,那麼之前已經執行的所有操作都是無效的,都應該回滾到開始前的狀態。consiste...

分布式理論

拜占庭將軍問題 byzantine failures 是由萊斯利 蘭伯特提出的點對點通訊中的基本問題。含義是在存在訊息丟失的不可靠通道上試圖通過訊息傳遞的方式達到一致性是不可能的。因此對一致性的研究一般假設通道是可靠的,或不存在本問題。萊斯利 蘭波特在其 中描述了如下問題 一組拜占庭將軍分別各率領一...

HDFS 分布式儲存基石

hdfs是hadoop 分布式檔案系統。namenode與datanode 集群結構 hdfs讀取寫入過程 通過網路拓撲圖判斷距離 namenode深入 作用 儲存結構 啟動過程 開啟安全模式 不能執行資料修改操作 載入fsimage 逐個執行所有edits檔案中的每一條操作將操作合併到fsimag...