分布式系統中一致性問題

2021-08-29 12:11:32 字數 2094 閱讀 4427

區塊鏈系統,首先是乙個分布式系統,一致性問題是分布式領域最為基礎也是最重要的問題。

一致性( consistency ),是指對於分布式系統中的多個服務節點,給定一系列操作,在約定協議的保障下,試圖使得它們對處理結果達成「某種程度」的認同

分布式計算機集群系統中容易出現以下幾個問題:

節點之間的網路通訊是不可靠的,包括訊息延遲、亂序和內容錯誤等;

節點的處理時間無法保障,結果可能出現錯誤,甚至節點自身可能發生宕機

同步呼叫可以簡化設計,但會嚴重降低分布式系統的可擴充套件性,甚至使其退化為單點系統。

分布式系統要達到絕對理想的一致性應該滿足:

(1)可終止性( termination ):一致的結果在有限時間內能完成;

有限時間內完成,意味著可以保障提供服務( liveness ) 。這是計算機系統可以被正常使用的前提。需要注意,在現實生活中這點並不是總能得到保障的。例如取款機有時候會出現「服務中斷」;撥打**有時候是「無法連線」的2

(2)約同性( agreement ):不同節點最終完成決策的結果是相同的;

決策的結果相同,意味著演算法要麼不給出結果,任何給出的結果必定是達成了共識的,即安全性( safety ) 。對於兩個來自不同位置的請求來說,要判斷在時間上的「先後」關係並不是那麼容易。兩個位置的時鐘可能是不一致的;也可能無法記錄下足夠精確的時間。

可見,事件發生的先後順序十分重要,這也是解決分布式系統領域很多問題的核心秘訣:把多件事情進行排序,而且這個順序還得是大家都認可的。

(3)合法性( validity ):決策的結果必須是某個節點提出的提案;

達成的結果必須是節點執行操作的結果。仍以賣票為例,如果兩個售票處分別決策某張票**給張三和李囚,那麼最終達成一致的結果要麼是張三,要麼是李囚,而絕對不能是其他人。

要實現絕對理想的嚴格一致性( strict consistency )代價很大。除非系統不發生任何故障,而且所有節點之間的通訊無需任何時間,這個時候整個系統其實就等價於一台機器了。實際上,越強的一致性要求往往會造成越弱的處理效能,以及越差的可擴充套件性

強一致性包括兩類:

(1)順序一致性(sequential consistency):保證所有程序看到的全域性執行順序一致

並且每個程序看自身的執行順序跟實際發生順序一致。例如,某程序先執行a ,後執行b ,則實際得到的全域性結果中就應該為a 在b 前面,而不能反過來。同時所有其他程序在全域性上也應該看到這個順序。順序一致性實際上限制了各程序內指令的偏序關係,但不在程序間按照物理時間進行全域性排序;

(2)線性一致性(linearizability consistency):在順序一致性前提下加強了程序間的操作排序,形成唯一的全域性順序(系統等價於是順序執行,所有程序看到的所有操作的序列順序都一致,並且跟實際發生順序一致),是很強的原子性保證。但是比較難實現,目前基本上要麼依賴於全域性的時鐘或鎖,要麼通過一些複雜演算法實現,效能往往不高。

由於強一致性的系統往往比較難實現,而且很多時候,實際需求並沒有那麼嚴格需要強一致性。因此,可以適當地放寬對一致性的要求,從而降低系統實現的難度。例如在一定約束下實現所謂最終一致性,即總會存在乙個時刻(而不是立刻),讓系統達到一致的狀態。大部分web 系統實現的都是最終一致性。相對強一致性,這一類在某些方面弱化的一致性都籠統稱為弱一致性。

一致性往往指分布式系統中多個副本對外呈現的資料的狀態。如前面提到的順序一致性、線性一致性,描述了多個節點對資料狀態的維護能力。

共識則描述了分布式系統中多個節點之間,彼此對某個狀態達成一致結果的過程。

因此,一致性描述的是結果狀態,共識則是一種手段達成某種共識並不意味著就保障了一致性

實踐中,要保障系統滿足不同程度的一致性,核心過程往往需要通過共識演算法來達成

分布式一致性問題

典型情況 三個副本構成乙個group 1.強一致性 所有的副本更新成功才返回。同時,p向s1 s2同步的過程,可以進行優化,借鑑gfs的流水線複製方式 p s1 s1 s2 以便充分利用每個node的頻寬資源。2.最終一致性 在經過乙個不一致視窗後,副本最終處於一致的狀態。如上圖是一種簡單的最終一致...

分布式一致性問題。

在電腦科學領域,分布式一致性問題是乙個相當重要,且被廣泛探索與論證的問題,通常存在於諸如分布式檔案系統 快取系統和資料庫等大型分布式儲存系統中。什麼是分布式一致性?分布式一致性分為哪些型別?分布式系統達到一致性後將會是乙個什麼樣的狀態?如果失去了一致性約束,分布式系統是否還可以依賴?如果一味地追求一...

分布式一致性問題

分布式一致性包括 強一致性 保證副本都一致 可用性 在使用者容忍時間範圍內返回使用者預期結果 分割槽容錯性 出現網路分割槽時仍能對外提供可用服務。主要方法兩階段提交協議,三階段提交協議 分為協調者master參與者segment 第一階段 投票階段 協調者像參與者分發任務,參與者執行並記錄日誌,但不...