分布式系統的Quorum策略

2021-08-10 17:43:30 字數 1437 閱讀 8893

分布式系統要做到資料一致性是不同於單點系統的,列入寫入資料,客戶端需要等待直到寫入成功。因此分布式系統的設計中會運用一些「聰明」的協議、機制用以解決資料一致性、

可靠性等問題,quorum 機制就是其中的一種。

1、分布式系統中的讀寫模型

分布式系統是由多個節點構成,多個結點意味著服務出現故障結點的概率增大,例如:網路異常、宕機。為了保證系統的正常,分布式系統通過多結點資料備份的方式用以保證服務的可靠性,不同於傳統的「一主多從」的讀寫模式,主負責寫讀,從負責備份(當然從也可以作用於非一致性資料的讀取)。分布式系統的各個結點兼具讀的功能,這樣如何保證各個結點所讀資料的一致性就是個問題。例如:使用者提交一次修改後,那麼原先儲存的副本顯然就與當前資料不一致了。解決這個問題最簡單的方法是強一致性寫,即:就是在使用者提交修改操作後,系統確保儲存的資料所有的副本全部完成更新後,再返回使用者操作成功;而讀取資料的時候只需要查詢其中的乙個副本資料返回給使用者就行了。 當然這種方案可以讀多寫少的場景。但是對於那些寫量也很大的場景,寫操作時延時現象就很明顯,再加上寫操作的佇列,鎖等操作,這個方案就不適用了。那麼我們怎麼尋找乙個更好的方案呢?

quorum機制便就是一種選擇。

2、quorum機制

概括說來就是:quorum 是一種集合 l, l是全集u的子集,l中任意取集合s,r ,s,r 都存在交集。

通俗來講這個理論:假設有2個筐a,b,a放全紅球2個,b放全黑球2個,一次要取到所有顏色的球,只需取出3個球即可。

現在將這個理論用於分布式系統的資料一致性,如上情況,假設紅色代表最新資料的版本,黑色代表歷史資料的版本,那麼取到所有版本再比較,就可以獲得最新資料版本,也得到最新資料。這樣想對於將所有資料取出的次數4次,操作次數降低啦。

那麼對於寫模型,只需要完成 k個副本的更新後,使用者寫操作就算完成,而不需要等待全寫,此後系統內部會繼續更新剩餘結點,最終達到一致。可以看到,改演算法是把寫的部分負載轉移到了讀上,通過延長分布式系統中資料一致性的最終時間來降低寫負載。至於轉移多少負載比較合適,這個需要根據分布式系統的具體需求中對資料一致性的要求。不過,cap 理論告訴我們沒有完美的方案。

提高到數學公式:

n表示資料所具有的副本數。

r表示完成讀操作所需要讀取的最小副本數,即一次讀操作所需參與的最小節點數目。

w表示完成寫操作所需要寫入的最小副本數,即一次寫操作所需要參與的最小節點數目。

由quorum的理論可知,w和r是關聯的,w值決定r值,要獲取最新資料,r > n - w。

假設n=5, 如果r=1, 那麼w必須是5. 所以就是寫入所有的節點是全部節點,那麼讀取任何乙個節點就可以最新的資料。 有點就是像讀寫鎖了。

如果r=5, 那麼w只要是1就可以了。 那麼寫的效率就非常高。 讀取的效率比較低。 

如果r=n/2+1, w=n/2, 讀寫之間為達到某個平衡。 是不錯的策略。兼顧了效能和可用性,dynamo系統的預設設定就是這種。

由此可得,只需要保證r + w>n,就可以保證強一致性。

分布式系統的Quorum策略

分布式系統要做到資料一致性是不同於單點系統的,列入寫入資料,客戶端需要等待直到寫入成功。因此分布式系統的設計中會運用一些 聰明 的協議 機制用以解決資料一致性 可靠性等問題,quorum 機制就是其中的一種。1 分布式系統中的讀寫模型 分布式系統是由多個節點構成,多個結點意味著服務出現故障結點的概率...

分布式系統Quorum機制

write all read one write all read one 簡稱 waro 是一種最簡單的副本控制規則,顧名思義即在更新時寫所有的副本,只有在所有的副本上更新成功,才認為更新成功,從而保證所有的副本一致,這樣在讀取資料時可以讀任一副本上的資料。缺點 讀服務的可用性較高,但更新服務的可...

分布式Quorum機制,NWR策略讀寫模型

分布式系統是由多個節點 指代一台伺服器 儲存裝置等 構成,由於網路異常 宕機等節點並不能保證正常工作,特別是在節點數量很大的時候,出現異常狀況的節點幾乎是肯定的。為了保證系統的正常執行,能夠提供可靠的服務,分布式系統中對於資料的儲存採用多份資料副本 注 這裡的副本並非只用來備份,它可參與提供系統服務...