分布式多副本一致性問題

2022-05-02 21:03:08 字數 1259 閱讀 1985

典型情況:三個副本構成乙個

group

1.強一致性:所有的副本更新成功才返回。

如上圖c

表示client,【p

、s1、s2

】構成乙個同步組,p表示

primary node,s1

,s2是兩個secondary node

,強同步模型的工作流程為c向

p寫資料,p向

s1,s2**,只有

3個都寫成功,才向

c返回成功,否則寫失敗。這種模型對於

操作很容易實現,如果副本沒有全部更新成功,向

c返回失敗即可,不必重新同步

p和兩個

s的資料;但如果是

overwrite

,則如果在同步過程中部分成功,還要考慮資料的正確性。

同時,p向s1

、s2同步的過程,可以進行優化,借鑑

gfs的流水線複製方式(

p->s1 &s1->s2

),以便充分利用每個

node

的頻寬資源。

2.最終一致性:在經過乙個不一致視窗後,副本最終處於一致的狀態。

如上圖是一種簡單的最終一致性實現模型,通過增加一組u(

update

)節點來實現。具體做法是,

c的每次更新以

binlog

的方式順序的追加到

update

節點(多台來避免單點),然後

update

節點定期(如

10ms

)的將binlog

重放到三個副本上(

n1,n2,n3

)。三個副本可以同時提供讀服務,讀到的資料可能不是最新的,這就要求上層業務能容忍或者在上層做一些容錯(如上層的業務每次會等待不一致視窗過去後再讀取資料)。

最終一致性的實現方式還包括大名鼎鼎的

dynamo

,使用讀寫成功的副本數r,

w來控制,當

r+w > n(

副本數)

時,即可保證最終一致性。

如果在最終一致性的基礎上要保證每次讀能讀到最新的資料,可在上述模型上做點小改進。

每次c更新到u

上後,必須至少同步到乙個

group中的p

上,即p

上的資料一定是最新的,系統的讀請求由

p節點來滿足以保證每次讀到的資料是最新的,付出的代價就是,兩個從副本不能分擔負載,使得

p易成為熱點,當

p掛掉時,選擇乙個

s成為新的p。

分布式一致性問題

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

分布式一致性問題。

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

分布式一致性問題

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