分布式技術專題 副本機制

2021-10-21 03:50:36 字數 4249 閱讀 1454

1、raft協議原理

raft

2、單個shard的複製

raft-single

3、raft group組

在一定情況下,copyset的數量不是越多越好,在恢復時間確定的情況下,找到合適的copyset的數量可以降低資料丟失的概率。為了提高儲存系統資料可靠性,首先在系統允許的成本範圍內選擇合適的副本數,再次在系統設計中我們首先優先考慮加快資料恢復時間,在此基礎上減小系統的copyset數量。使得在既定的成本下達到盡可能高的可靠性。參考**《copysets:reducing the frequency of data loss in cloud storage》,該**中的實驗資料顯示,在facebook hdfs集群上作實驗,為了有效降低資料丟失概率,資料放置演算法,從原來的random replicaiton更改為copyset replication 演算法,實驗結果說明可 將facebook hdfs集群1%節點故障時的資料丟失概率從22.8%降低道0.78%。

在大型集群中,多個節點的同時丟失具有很高的資料丟失概率。例如,考慮使用副本數為3的100個節點的群集,其shard數範圍約為10k。同時丟失2個或更多節點具有很高的資料丟失概率,因為可能存在10k shard之外的shard,而該shard在2個丟失的節點上具有3個副本中的2個。在存在多節點故障的情況下,copyset演算法可以顯著降低了資料丟失的可能性。

根據系統節點數,和副本數量,進行多個輪次的計算,每一輪次把所有節點按照副本數劃分為 n/r 個copyset。每次確保其中的copyset 不與當前和之前所有輪次中已經產生的copyset相同,最後資料寫入的時候,選擇乙個copyset 寫入即可。 由於每個排列會吧s(scatter width) 增加r-1,所以 演算法執行p = s/(r-1) 次, k(copyset數量) = p (n/r) = s/(r-1) (n/r)。

複製集將群集分為不相交的節點集。每組的大小將基於使用的副本數。為每個副本建立單獨的副本集。shard應該更喜歡在副本集中分配其副本,而不是在副本集中散布其副本。

1.管理副本集(哪個節點屬於哪個副本集)

副本集分配應考慮節點的位置,以便不會丟失位置容錯能力。將節點分配給副本集時,應考慮新增/刪除/損壞的節點。

2.重新平衡範圍中的所有副本,以盡最大努力將其駐留在單個副本集中。

將副本重新平衡到副本集很重要,但是某些屬性(如使用者設定的約束)應優先於副本集。

副本集最初將是乙個選擇加入功能(基於群集設定),並且實現為分散寬度為replication_factor - 1。

該集群將被分為多個副本集。對於群集中的每個副本,將生成單獨的副本集。

副本的副本集的要求是

1.對於rf -1的散布寬度,副本集之間的節點應該沒有重疊,並且對於散布寬度》 = rf(其中rf是複製因子),應使重疊節點最小化。

2.副本集應具有本地容錯能力

3.副本集應重新平衡節點的新增/刪除/故障。

為系統中使用的每個副本生成副本集。如果對齊了不同副本的副本集,則可以提供更好的容錯能力。

副本分配策略採用最佳副本集分割分配演算法。

特定的副本的副本集的最佳分配可以如下進行:

1.計算 num_copysets = floor(num_stores/replication_factor)

2.基於機架等特定配置進行儲存排序

3.分配副本集到儲存,採用輪詢排程方案(round-robin)

例如,有如下儲存情況:

rack1:s1 s2 s3

rack2: s4 s5 s6

rack3: s7 s8 s9 s10

複製因子是3的副本集將建立:

num_copysets = 10/3 = 3

cs1: s1 s4 s7 s10

cs2: s2 s5 s8

cs3: s3 s6 s9

swap

在源副本集和目標副本集之間進行交換,以確保源副本集的多樣性增加,而目標副本集的多樣性確實減少(或者如果減少,它仍然》複製因子)。

基於源副本集和目標副本集中存在的位置,在源副本集和目標副本集之間進行儲存交換。交換所需的條件是:

1.源副本集的多樣性《複製因子。這意味著源副本集在特定位置具有兩個儲存。這些付出之一將是源交換候選者。

2.目標副本集具有源副本集中不存在的區域性性(我們稱此目標區域性性)。來自該地區的商店將成為目標交換候選人。

3.以下之一是正確的

4.目標副本集中不存在源交換候選的位置。

1.在目標位置有兩個儲存。

2.具有多樣性》複製因子。

上面的多樣性是指副本集中的位置數量。

上面的要點3確保目標副本集的多樣性不會減少(或者如果減少,它就不會低於複製因子)。

進行交換的單個迭代會考慮所有(n choose 2)副本集組合,其中副本集n的數量為。這些迭代將繼續進行,直到無法進一步改善所有副本集的多樣性之和為止(整個迭代都沒有找到交換物件)。

例如,考慮以下我們擁有儲存的情況:

rack1: s1 s2 s3

rack2: s4 s5 s6

rack3: s7 s8 s9

rack4: s10 s11 s12 s13

最初副本集的分配:

cs1: s1 s5 s9

cs2: s2 s6 s10

cs3: s3 s7 s11

cs4: s4 s8 s12 s13

如果儲存s6被刪除,步驟2之後(將儲存分配到相同的副本集id,直到大小達到rf),我們有了

cs1: s1 s5 s9

cs2: s2 s10

cs3: s3 s7 s11

cs4: s4 s8 s12

再通過新增剩餘儲存來填充空白點之後

cs1: s1 s5 s9

cs2: s2 s10 s13

cs3: s3 s7 s11

cs4: s4 s8 s12

交換之後(由於cs1和cs2之中cs2有兩個儲存來自與rack4)

cs1: s1 s5 s13

cs2: s2 s10 s9

cs3: s3 s7 s11

cs4: s4 s8 s12

這種交換策略可能無法實現最佳的多樣性,但會嘗試確保副本集中的每個位置都不同。

考慮用於副本集分配的儲存列表將是當前的實時儲存。實時儲存的計算方式與分配器檢測實時儲存的方式相同(但不會排除受限制的儲存。)如果儲存列表穩定且未更改3個心跳數(每個心跳聲都有),則會重新生成副本集。間隔10秒)。

副本集分配可以作為原型保留在分布式儲存層中。最小化資料移動的副本集策略要求保留副本集(它要求先前的狀態為全域性狀態並在重新啟動後仍然有效)。群集中最低的活動節點id將是管理(持久)副本集。其他節點將定期(每10s)快取持久化的副本集,並將其用於重新平衡。

僅當儲存列表更改時,副本集才會重新生成(並保留)。在穩定狀態下,所有節點將定期讀取持久化的副本集,而無需重新生成並持久化新的副本集。

對於rf = 3,群集可以容忍每個副本集中乙個節點的故障。例如,在最佳情況下(對於rf = 3),乙個100個節點的群集可以承受33個節點的同時故障,而不會造成任何資料丟失。

範圍需要重新平衡以包含在副本集中。

hubble目前使用兩種範圍再平衡器:

1.複製對略

2.儲存池管理器

1.確定範圍內要用於新副本的儲存

2.當範圍超過所需副本數時要刪除的副本

3.副本必須從乙個儲存移動到另乙個儲存,該範圍的結果得分將更高

1.區域約束:在某些區域中具有某些表的約束

2.磁碟已滿:檢查儲存是否太滿

3.多樣性分數差異:多樣性分數與該範圍內存在的副本數所處機架的數量成正比。它基於地點的nc2多樣性分數,其中n是副本的數量。

4.收斂分數差異:收斂分數用於避免移動shard,移動shard的移動會導致shard的統計資訊偏離全域性平均值。

5.平衡分數差異:平衡分數是節點的標準化利用率,當前它考慮範圍的數量,平衡分數較低的節點是首選。

6.範圍計數差異:範圍計數較低的儲存是首選。

為了將shard重新平衡到副本集中,新的副本評分將新增到分配器中。區域約束和磁碟填充比副本集得分具有更高的優先順序。

由於副本集分配考慮了多樣性,因此可以將其優先順序置於多樣性得分之上。

如果滿足一下條件,則該副本集得分較高:

1.shard完全包含在副本集中

2.shard所在的副本集未得到充分利用。我們希望每個副本集均被載入。如果shard在拷貝集中完全包含x我們應該完全移動到副本集y中。如果副本集y的節點有更低的負載,更多的可用磁碟空間等情況。

分布式專題 分布式鎖

在傳統的單體應用架構中,遇到併發安全性問題時我們可以通過同步鎖synchronized,同步 塊,reentrantlock等方式都可以解決,但隨著業務的發展,單體應用架構不能滿足龐大的使用者請求量,於是分布式系統應用而生,在分布式系統中,由於每個系統都執行在不同的伺服器上,有著不同的jvm,所以j...

HDFS技術之副本機制(五)

hdfs上的檔案對應的block儲存了多個副本,且提供容錯機制,副本丟失或者宕機都會自動恢復,預設儲存3份副本,下面給出乙個副本擺放的架構圖。第一副本 放置在上傳檔案的datanode上 如果是集群外提交,則隨機挑選一台磁碟不太慢 cpu不太忙的節點。第二副本 放置在與第一副本不同的機架的節點上。第...

分布式技術

資料分布式模式 利用多台計算機並行處理多個請求,在相同的時間內完成更多的請求,解決單機效率瓶頸問題。多集群出現的問題如下 資源 乙個系統提供正常能力需要占用的硬體資源 可用性和可擴充套件性 不同分布式系統的指標 選舉流程 優點 演算法複雜度低,選舉快,簡單易實現 缺點 每個節點需要儲存全域性節點訊息...