哈希與一致性哈希
在分布式系統中,哈希和一致性哈希是資料索引或者資料分布的常見實作方式,
資料分布設計原則
在分布式資料存盤系統中,做存盤方案選型時,一般會考慮以下因素:
- 資料均勻
- 資料穩定
- 節點異構性
- 隔離故障域
- 性能穩定性
資料均勻有兩重含義:
- 不同存盤節點中存盤的資料要盡量均衡,避免讓某一個或者某幾個節點存盤壓力過大,而其他節點幾乎沒有什么資料,
- 用戶訪問也要做到均衡,避免出現某一個或者某幾個節點的訪問量很大,但其他節點卻無人問津的情況,
資料穩定是指當存盤節點出現故障需要移除或者擴增時,資料按照分布規則得到的結果應該盡量保持穩定,不要出現大范圍的資料遷移,
節點異構性是指不同存盤節點的硬體配置可能差別很大,這樣平均分配資料就是一種不均衡,
隔離故障域是指為了保證資料的可用和可靠性,需要做資料備份,但是如果主資料和備份資料都放到了同一個硬碟或者節點,就違背了備份的初衷,一個好的資料分布演算法,應該為每個資料映射一組存盤節點,這些節點應該盡量在不同的故障域,
性能穩定是指資料存盤和查詢的效率要有保證,不能因為節點的添加或者洗掉,造成存盤或者訪問性能的嚴重下降,
資料分布方法
我們會涉及4種不同的資料分布方法,
哈希
哈希是指將資料按照提前規定好的函式映射到相應的存盤節點,即進行一個哈希計算,得到的結果就是資料應該存盤的節點,
它是一種非常常用的資料分布方法,核心思想是:1)確定一個哈希函式,2)通過計算得到資料對應的存盤節點,
哈希演算法的一個優點是只要哈希函式設定得當,可以很好的保證資料均勻性,但缺點是穩定性差,當節點數量發生變化時,需要大規模資料遷移,
哈希方法適用于同型別節點且節點數量比較固定的場景,
一致性哈希
一致性哈希也是采取哈希函式,但是進行兩步哈希:
- 對存盤節點進行哈希計算,即對存盤節點進行哈希映射,
- 當對資料進行存盤或者訪問時,首先對資料進行映射得到一個結果,然后找到比該結果大的第一個存盤節點,就是該資料應該存盤的節點,
一致性哈希將存盤節點和資料都映射到一個首尾相連的哈希環上,存盤節點可以根據IP地址進行哈希,資料通常按照順時針方向尋找的方式,來確定自己所屬的存盤節點,即從資料映射在環上的位置開始,順時針方向找到的第一個存盤節點,
一致性哈希是對哈希方法的改進,在資料存盤時采用哈希方式確定存盤位置的基礎上,又增加了一層哈希,也就是在資料存盤前,對存盤節點預先進行了哈希映射,
這種改進很好的解決哈希方法存在的穩定性問題,當節點加入或退出時,僅影響該節點在哈希環上順時針相鄰的后繼節點,
一致性哈希帶來的主要問題是均勻性問題,即對后繼節點的負載會變大,當有節點退出時,該節點的后繼節點需要承擔該節點的所有負載,如果后繼節點承受不住,便會出現節點故障,導致后繼節點的后繼節點也面臨同樣的問題,
一致性哈希方法比較適合同型別節點、節點規模會發生變化的場景,
帶有限負載的一致性哈希
帶有限負載的一致性哈希方法的核心原理是:給每個存盤節點設定一個存盤上限值,來控制存盤節點添加或者洗掉造成的資料不均勻,當資料按照一致性哈希演算法找到相應的存盤節點后,要先判斷該存盤節點是否達到了存盤上限,如果已經達到了上限,則需要繼續尋找該存盤節點順時針方向之后的節點進行存盤,
帶有限負載的一致性哈希方法適合同型別節點、節點規模會發生變化的場景,
帶虛擬節點的一致性哈希
帶虛擬節點的一致性哈希方法的核心思想是:根據每個節點的性能,為每個節點劃分不同數量的虛擬節點,并將這些虛擬節點映射到哈希環中,然后再按照一致性哈希演算法進行資料映射和存盤,
帶虛擬節點的一致性哈希方法比較適合異構節點、節點規模會發生變化的場景,
這種方法不僅解決了節點異構性問題,還提高了系統穩定性,當節點發生變化時,會有多個節點共同分擔系統的變化,但是這種方法需要維護虛擬節點,增加了維護和管理的復雜度,同時,節點變化帶來的資料遷移等操作也會變得復雜,
下面是4種不同的資料分片方法的詳細比較,

資料磁區和資料分片的區別
資料磁區是從資料存盤塊的維度進行劃分,不同的磁區在物理上歸屬于不同的節點,資料磁區中可以存盤不同的資料,也可以存盤相同的資料來實作資料備份,
資料分片是從資料維度進行劃分,它將一個資料結合按照一定的方式劃分成多個資料子集,不同的資料子集存盤在不同的存盤塊上,這些存盤塊可以在不同的節點上,也可以在同一個節點上,
資料磁區和資料分片是兩個不同的概念,屬于分布式存盤系統中不同角色的技術,資料磁區是“資料存盤”相關的技術,資料分片是“資料索引”現骨干的技術,
作者:李潘 出處:http://wing011203.cnblogs.com/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545027.html
標籤:其他
