當前位置:法律諮詢服務網 - 企業資訊 - 壹致性哈希算法怎麽保證數據的壹致性

壹致性哈希算法怎麽保證數據的壹致性

環割法(壹致性 hash)環割法的原理如下:

1. 初始化的時候生成分片數量 X × 環割數量 N 的固定方式編號的字符串,例如 SHARD-1-NODE-1,並計算所有 X×N 個字符串的所有 hash 值。

2. 將所有計算出來的 hash 值放到壹個排序的 Map 中,並將其中的所有元素進行排序。

3. 輸入字符串的時候計算輸入字符串的 hash 值,查看 hash 值介於哪兩個元素之間,取小於 hash 值的那個元素對應的分片為數據的分片。

跳躍法(jumpstringhash)跳躍法的原理如下:1. 根據公式:

將數據落在每壹個節點的概率進行平均分配。

2. 對於輸入的字符串進行計算 hash 值,通過判斷每次產生的偽隨機值是否小於當前判定的節點 1/x,最終取捕獲節點編號最大的作為數據的落點。3. 在實際使用中使用倒數的方法從最大節點值進行反向判斷,壹旦當產生的偽隨機值大於 x 則判定此節點 x 作為數據的落點。

數據比較

下面將通過測試對環割法和跳躍法的性能及均衡性進行對比,說明 DBLE 為何使用跳躍法代替了環割法。

數據源:現場數據 350595 條

測試經過:

1. 通過各自的測試方法執行對於測試數據的分片任務。

2. 測試方法:記錄分片結果的方差;記錄從開始分片至分片結束的時間;記錄分片結果與平均數的最大差值。

3. 由於在求模法 PartitionByString 的方法中要求分片的數量是 1024 的因數,所以測試過程只能使用 2 的指數形式進行測試,並在 PartitionByString 方法進行測試的時候不對於 MAC 地址進行截斷,取全量長度進行測試。

  • 上一篇:建立會計信息化應該探索什麽樣的評價體系?
  • 下一篇:以人才盤點作為起點,繪制壹張組織管理電系統邏輯圖,幫助公司各級管理者建立系統觀?
  • copyright 2024法律諮詢服務網