典型情況:三個副本構成乙個
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 第一階段 投票階段 協調者像參與者分發任務,參與者執行並記錄日誌,但不...