1.初始化時,以固定方式編號的字符串用段數x x環割數n生成,例如SHARD-1-NODE-1,計算所有x x n個字符串的所有hash值。
2.將所有計算出的哈希值放入壹個排序映射中,並對其中的所有元素進行排序。
3.當輸入壹個字符串時,計算輸入字符串的hash值,檢查hash值在哪兩個元素之間,選擇小於hash值的元素對應的片段作為數據的片段。
跳躍法原理如下:1。根據公式:
數據落在每個節點上的概率是均勻分布的。
2.計算輸入字符串的哈希值,判斷生成的偽隨機值是否小於當前確定的節點1/x,最後取編號最大的抓取節點作為數據丟棄點。3.在實際使用中,采用倒易的方法,從最大節點值進行逆向判斷,壹旦生成的偽隨機值大於X,則判斷這個節點X為數據落點。
數據比較
下面將通過試驗比較環切法和跳躍法的性能和平衡性,並解釋為什麽DBLE采用跳躍法而不是環切法。
數據來源:350595條現場數據。
測試後:
1.通過他們自己的測試方法執行切片測試數據的任務。
2.測試方法:記錄分割結果的方差;記錄從切片開始到切片結束的時間;記錄分割結果和平均值之間的最大差異。
3.由於PartitionByString方法中要求碎片數為1024的因子,所以測試過程只能以2的指數形式進行測試,並且在測試PartitionByString方法時不截斷MAC地址,取全長進行測試。