一致性往往指分布式系統中多個副本對外呈現的資料的狀態。如前面提到的順序一致性、線性一致性,描述了多個節點對資料狀態的維護能力。
共識則描述了分布式系統中多個節點之間,彼此對某個狀態達成一致結果的過程。
致性描述的是結果狀態,共識則是一種手段。達成某種共識並不意味著就保障了一致性。
講,各個節點通常都是相同的確定性狀態機模型(又稱為狀態機複製問題,state-machine replication),從相同初始狀態開始接收相同順序的指令,則可以保證相同的結果狀態。
系統中多個節點最關鍵的是對多個事件的順序進行共識,即排序。
出現故障(crash或fail-stop,即不響應)但不會偽造資訊的情況稱為「非拜占庭錯誤」(non-byzantine fault)或「故障錯誤」(crash fault);
偽造資訊惡意響應的情況稱為「拜占庭錯誤」(byzantine fault),對應節點為拜占庭節點。
解決的是非拜占庭的普通錯誤情況還是拜占庭錯誤情況,共識演算法可以分為crash fault tolerance(cft)類演算法和byzantine fault tolerance(bft)類演算法。
於要能容忍拜占庭錯誤的情況,一般包括pbft(practical byzantine fault tolerance)為代表的確定性系列演算法、pow為代表的概率演算法等。
注意 實踐中,一致性的結果往往還需要客戶端的額外支援,典型情況如通過訪問足夠多個服務節點來比對驗證,確保獲取共識後的正確結果。
提示 不僅在分布式系統領域,實際上在很多領域都存在類似「測不准原理」的約束。
強一致性 弱一致性 最終一致性
這種方式在es等分布式系統中也有體現,可以設定主shard提交即返回成功,或者需要replica shard提交成功再返回。提到分布式架構就一定繞不開 一致性 問題,而 一致性 其實又包含了資料一致性和事務一致性兩種情況,本文主要討論資料一致性 事務一致性指acid 複製是導致出現資料一致性問題的唯...
一致性hash演算法 面試必備 一致性hash演算法
最近公司在招人,我們準備的問題中有一道是關於一致性hash演算法的問題,只有一些面試者能夠回答上來,而且答的也不是很全面,有的面試者只是聽說過,有的連聽都沒聽過,下面我把一致性hash演算法整理一下分享給大家 一致性雜湊演算法在1997年由麻省理工學院的karger等人在解決分布式cache中提出的...
一致性hash演算法虛擬節點 一致性hash演算法
hash 演算法也叫做雜湊演算法,他可以讓任意長度的資料m對映成為長度固定的值h。hash演算法的第乙個作用就是資料的快速儲存與查詢。寫過程式的人都知道,基本上主流的程式語言裡面都有個資料結構叫做map dictionary或者 hash table 它是根據key來直接訪問結果的資料結構。key的...