2、基本副本協議
副本控制協議指按特定的協議流程控制副本資料的讀寫行為,使得副本滿足一定的可用性和一致性要求的分布式協議。副本控制協議要具有一定的對抗異常狀態的容錯能力,從而使得具有一定的可用性,同時要能提供一定一致性級別。由cap原理可知,設計滿足強一致性,且出現任何網路異常時都可用的副本協議是不可能的。故需在可用性、一致性與效能等各要素間按照具體需求折中。
副本控制協議可分為兩大類:「中心化(centralized)副本控制協議」和「去中心化(decentralized)副本控制協議」
(1)中心化副本控制
l 基本思路:由乙個中心節點協調副本資料的更新、維護副本之間的一致性。
l 優點:簡單,使得分布式併發(多節點同時修改副本)控制問題,簡化為中心節點單機併發控制問題。使用方法:加鎖等
l 缺點:系統的可用性依賴於中心化節點,當中心化節點異常或與中心節點通訊中斷時,系統將失去某些服務,也就是存在一定的停服務時間
(2)primary-secondary協議
也稱primary-backup,是一種非常常用的中心化副本控制協議。該協議中副本分兩大類,有且僅有乙個副本作為primary副本,剩餘副本都作為secondary副本。維護primary副本的節點作為中心節點,負責維護資料的更新、併發控制、協調副本的一致性。primary-secondary協議一般要解決四大問題,資料更新流程、資料讀取方式、primary副本的確定和切換、資料同步(reconcile)。
(a)資料更新基本流程
1)資料更新都是由primary節點協調完成。
2)外部節點將更新操作發給primary節點
3)primary節點進行併發控制即確定併發更新操作的先後順序
4)primary節點將更新操作傳送給secondary節點
5)primary根據secondary節點的完成情況決定更新是否成功並將結果返回外部節點
上述4步驟,若primary同時傳送,則secondary的更新吞吐受primary總網路頻寬限制,可改進使用接力方式同步,但由於存在異常,可能更新失敗,如何處理來保證一致性?
(b)資料讀取方式
與一致性高度有關
若最終一致性,則讀取任何副本都可以;若會話一致性,則可為副本設定版本號,每次更新後遞增版本號,讀取時驗證版本號,保證在會話範圍內單調遞增;實現強一致性困難。下面描述幾種實現強一致性思路:
1.primary永遠是最新的,故唯讀primary副本,secondary副本不提供讀服務。只要primary副本分散在集群中,即使只有primary副本提供讀寫服務,也可充分利用集群機器資源。
2.由primary節點控制secondary節點的可用性。當primary更新某個secondary副本不成功時,primary將其標誌為不可用。缺點:依賴於乙個中心元資料管理系統,用於記錄哪些副本可用,哪些不可用。通過降低系統的可用性來提高系統的一致性。
3.基於quorum機制
(c)primary副本的確定與切換
切換難點:如何確定節點的狀態以發現原primary節點異常,方法:基於lease機制確定節點狀態的方法;切換primary後,不能影響副本的一致性。若原primary宕機,如何保證新primary與其一致,方法:基於quorum機制確定新primary的方法
(d)資料同步
不一致的secondary副本需要與primary進行同步
不一致的形式有三種:
一、由於網路分化等異常,secondary的資料落後於primary的資料;二、secondary的資料可能是髒資料,需要被丟棄(髒資料是由於primary副本沒有進行某一更新操作,但secondary副本反而進行的多於的修改操作,造成secondary副本資料錯誤);三、secondary是新增副本,無資料,須從其他副本上拷貝資料。
解決方法:
一、回放primary的操作日誌(redo日誌),追上primary更新進度;二、設計的分布式協議不產生髒資料,或很低概率,一旦發生直接丟棄該副本,或基於undo日誌刪除髒資料;三、直接拷貝primary副本的資料,但拷貝資料時primary副本需能夠繼續提供更新服務,要求primary副本支援快照(snapshot)功能。即對某一刻的副本資料形成快照,然後拷貝快照,拷貝完成後使用回訪日誌的方式追快照形成後的更新操作。
(3)去中心化副本控制協議
l 協議中所有節點完全對等,節點間通過平等協商達到一致。
l 優點:沒有因為中心節點異常而帶來的停服務等問題,個別節點異常不會對總體造成太大影響
l 缺點:協議過程比較複雜,效率或效能較中心化協議低。
l 工程應用:paxos是唯一在工程中得到應用的強一致性去中心化副本控制協議。
(4)工程投影
(a)gfs中的primary-secondary協議
gfs中primary副本由master執行,primary副本決定更新順序。gfs中,更新操作的資料由客戶端提交,並在各個副本之間流式傳輸,副本依次傳遞更新。該過程由primary控制。
(b)pnuts中的primary-secondary協議
primary副本負責將更新操作向ymb中提交,當更新記錄寫入ymb則認為更新成功。ymb是乙個分布式訊息發布、訂閱系統,具有多副本、高可用、跨地域等特性。secondary副本向ymb訂閱primary的更新操作,當收到更新操作後,secondary副本更新本地資料。
(c)niobe中的primary-secondary協議
niobe協議中,primary資訊由gsm模組維護,更新操作由primary副本同步到secondary副本
(d)dynamo/cassandra的去中心化副本控制協議
基於一致性雜湊的去中心化協議
(e)chubby/zookeeper的副本控制協議
使用基於paxos的去中心化協議選出primary節點,但完成primary節點擊舉後,再轉為中心化的副本控制協議
(f)megastore的副本控制協議
megastore中每次資料更新操作都基於乙個改進的paxos協議的例項。
(g)其他系統的副本控制協議
mola*/armor* 和 big pipe*也都使用了primary-secondary協議控制副本。
分布式系統原理Day03 基於副本協議
去中心化副本控制協議 副本控制協議要具有一定的對抗異常狀態的容錯能力,從而使得系統具有一定的可用性,同時副本控制協議要能提供一定的一致性級別 根據cap原理,要設計一種滿足強一致性,且出現在任何網路異常時都可用的副本協議是不可能的.因此,實際中的副本協議總是在可用性,一致性與效能等各要素之間按照具體...
分布式系統原理 筆記
資料分布協議 使用維度各有利弊 雜湊 更新起來要成倍遷移 一致性雜湊 環雜湊,易實現負載均衡 資料量 元資料多,類似b樹的中間節點 資料範圍 也是元資訊多 基本副本協議 中心化 primary secondary 中心節點負責維護資料的更新 併發控制 協調副本的一致性 去中心化 乙個節點向另乙個節點...
Raft協議 分布式系統應用
前言 在了解raft之前,我們先了解consensus一致性這個概念,它是指多個伺服器在狀態達成一致,但是在乙個分布式系統中,因為各種意外可能,有的伺服器可能會崩潰或變得不可靠,它就不能和其他伺服器達成一致狀態。這樣就需要一種consensus協議,一致性協議是為了確保容錯性,也就是即使系統中有一兩...