在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

判定哈希算法好壞的四個定義

算法與數據結構 ? 來源:未知 ? 作者:李倩 ? 2018-07-27 11:36 ? 次閱讀

一致性哈希算法在1997年由麻省理工學院提出的一種分布式哈希(DHT)實現算法,設計目標是為了解決因特網中的熱點(Hot spot)問題,初衷和CARP十分類似。一致性哈希修正了CARP使用的簡 單哈希算法帶來的問題,使得分布式哈希(DHT)可以在P2P環境中真正得到應用。

一致性hash算法提出了在動態變化的Cache環境中,判定哈希算法好壞的四個定義:

1、平衡性(Balance):平衡性是指哈希的結果能夠盡可能分布到所有的緩沖中去,這樣可以使得所有的緩沖空間都得到利用。很多哈希算法都能夠滿足這一條件。

2、單調性(Monotonicity):單調性是指如果已經有一些內容通過哈希分派到了相應的緩沖中,又有新的緩沖加入到系統中。哈希的結果應能夠保證原有已分配的內容可以被映射到原有的或者新的緩沖中去,而不會被映射到舊的緩沖集合中的其他緩沖區。

3、分散性(Spread):在分布式環境中,終端有可能看不到所有的緩沖,而是只能看到其中的一部分。當終端希望通過哈希過程將內容映射到緩沖上時,由于不同終端所見的緩沖范圍有可能不同,從而導致哈希的結果不一致,最終的結果是相同的內容被不同的終端映射到不同的緩沖區中。這種情況顯然是應該避免的,因為它導致相同內容被存儲到不同緩沖中去,降低了系統存儲的效率。分散性的定義就是上述情況發生的嚴重程度。好的哈希算法應能夠盡量避免不一致的情況發生,也就是盡量降低分散性。

4、負載(Load):負載問題實際上是從另一個角度看待分散性問題。既然不同的終端可能將相同的內容映射到不同的緩沖區中,那么對于一個特定的緩沖區而言,也可能被不同的用戶映射為不同 的內容。與分散性一樣,這種情況也是應當避免的,因此好的哈希算法應能夠盡量降低緩沖的負荷。

在分布式集群中,對機器的添加刪除,或者機器故障后自動脫離集群這些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有機器添加或者刪除后,很多原有的數據就無法找到了,這樣嚴重的違反了單調性原則。接下來主要講解一下一致性哈希算法是如何設計的:

環形Hash空間

按照常用的hash算法來將對應的key哈希到一個具有2^32次方個桶的空間中,即0~(2^32)-1的數字空間中。現在我們可以將這些數字頭尾相連,想象成一個閉合的環形。如下圖

把數據通過一定的hash算法處理后映射到環上

現在我們將object1、object2、object3、object4四個對象通過特定的Hash函數計算出對應的key值,然后散列到Hash環上。如下圖:

Hash(object1) = key1;Hash(object2) = key2;Hash(object3) = key3;Hash(object4) = key4;

將機器通過hash算法映射到環上

在采用一致性哈希算法的分布式集群中將新的機器加入,其原理是通過使用與對象存儲一樣的Hash算法將機器也映射到環中(一般情況下對機器的hash計算是采用機器的IP或者機器唯一的別名作為輸入值),然后以順時針的方向計算,將所有對象存儲到離自己最近的機器中。

假設現在有NODE1,NODE2,NODE3三臺機器,通過Hash算法得到對應的KEY值,映射到環中,其示意圖如下:

Hash(NODE1) = KEY1;Hash(NODE2) = KEY2;Hash(NODE3) = KEY3;

通過上圖可以看出對象與機器處于同一哈希空間中,這樣按順時針轉動object1存儲到了NODE1中,object3存儲到了NODE2中,object2、object4存儲到了NODE3中。在這樣的部署環境中,hash環是不會變更的,因此,通過算出對象的hash值就能快速的定位到對應的機器中,這樣就能找到對象真正的存儲位置了。

機器的刪除與添加

普通hash求余算法最為不妥的地方就是在有機器的添加或者刪除之后會照成大量的對象存儲位置失效,這樣就大大的不滿足單調性了。下面來分析一下一致性哈希算法是如何處理的。

1.節點(機器)的刪除

以上面的分布為例,如果NODE2出現故障被刪除了,那么按照順時針遷移的方法,object3將會被遷移到NODE3中,這樣僅僅是object3的映射位置發生了變化,其它的對象沒有任何的改動。如下圖:

2.節點(機器)的添加

如果往集群中添加一個新的節點NODE4,通過對應的哈希算法得到KEY4,并映射到環中,如下圖:

通過按順時針遷移的規則,那么object2被遷移到了NODE4中,其它對象還保持這原有的存儲位置。通過對節點的添加和刪除的分析,一致性哈希算法在保持了單調性的同時,還是數據的遷移達到了最小,這樣的算法對分布式集群來說是非常合適的,避免了大量數據遷移,減小了服務器的的壓力。

平衡性

根據上面的圖解分析,一致性哈希算法滿足了單調性和負載均衡的特性以及一般hash算法的分散性,但這還并不能當做其被廣泛應用的原由,因為還缺少了平衡性。下面將分析一致性哈希算法是如何滿足平衡性的。hash算法是不保證平衡的,如上面只部署了NODE1和NODE3的情況(NODE2被刪除的圖),object1存儲到了NODE1中,而object2、object3、object4都存儲到了NODE3中,這樣就照成了非常不平衡的狀態。在一致性哈希算法中,為了盡可能的滿足平衡性,其引入了虛擬節點。

——“虛擬節點”( virtual node )是實際節點(機器)在 hash 空間的復制品( replica ),一實際個節點(機器)對應了若干個“虛擬節點”,這個對應個數也成為“復制個數”,“虛擬節點”在 hash 空間中以hash值排列。

以上面只部署了NODE1和NODE3的情況(NODE2被刪除的圖)為例,之前的對象在機器上的分布很不均衡,現在我們以2個副本(復制個數)為例,這樣整個hash環中就存在了4個虛擬節點,最后對象映射的關系圖如下:

根據上圖可知對象的映射關系:object1->NODE1-1,object2->NODE1-2,object3->NODE3-2,object4->NODE3-1。通過虛擬節點的引入,對象的分布就比較均衡了。那么在實際操作中,正真的對象查詢是如何工作的呢?對象從hash到虛擬節點到實際節點的轉換如下圖:

“虛擬節點”的hash計算可以采用對應節點的IP地址加數字后綴的方式。例如假設NODE1的IP地址為192.168.1.100。引入“虛擬節點”前,計算 cache A 的 hash 值:

Hash(“192.168.1.100”);

引入“虛擬節點”后,計算“虛擬節”點NODE1-1和NODE1-2的hash值:

Hash(“192.168.1.100#1”); // NODE1-1Hash(“192.168.1.100#2”); // NODE1-2

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器
    +關注

    關注

    0

    文章

    784

    瀏覽量

    40750
  • Hash
    +關注

    關注

    0

    文章

    32

    瀏覽量

    13211
  • 哈希算法
    +關注

    關注

    1

    文章

    56

    瀏覽量

    10755

原文標題:5分鐘理解一致性哈希算法

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    有源晶振四個腳是如何定義的?

    有源晶振四個腳是如何定義的?有源晶振型號類型比較多,而且每一種型號的引腳定義都有所不同,接法也不是通用的。下面小揚介紹一下有源晶振常用引腳識別法,以方便大家:有點標記的為1腳,按逆時
    的頭像 發表于 04-28 15:37 ?1556次閱讀
    有源晶振<b class='flag-5'>四個</b>腳是如何<b class='flag-5'>定義</b>的?

    步進電機的四個端口是如何定義

    char#define uint unsigned int ***it d1=P1^0; //定義步進電機的四個端口***it d2=P1^1;***it...
    發表于 07-07 07:26

    基于雙字哈希結構的匹配算法

    中文分詞是計算機進行文本分析的關鍵技術。基于提高分詞效率以滿足日益增長的文本分析需求,通過分析常用的基于詞典的機械分詞算法與詞典機制的優缺點,在對最大匹配算法進行改進的同時,采用雙字哈希詞典設計了
    發表于 11-03 17:16 ?6次下載
    基于雙字<b class='flag-5'>哈希</b>結構的匹配<b class='flag-5'>算法</b>

    WSN關鍵點判定算法

    局域信息進行建模,接下來結合節點剩余能量和節點失效后網絡能耗的變化,建立能量因素模型,最終得到一綜合的關鍵點判定模型。利用Matlab仿真平臺與其他算法進行對比仿真,結果表明該算法
    發表于 03-07 10:58 ?0次下載
    WSN關鍵點<b class='flag-5'>判定</b><b class='flag-5'>算法</b>

    哈希哈希算法的介紹

    聊到區塊鏈的時候也少不了會聽到“哈希”、“哈希函數”、“哈希算法”,是不是聽得一頭霧水?別急,這一講我們來講講什么是哈希
    的頭像 發表于 05-22 14:11 ?6610次閱讀
    <b class='flag-5'>哈希</b>及<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>的介紹

    如何判斷LM324四個運放的好壞?,LM324運放好壞的簡易測試工具概述

    要判斷LM324四個運放的好壞,可按圖將其四個運放連好,圖中的兩10K電阻R1和R2構成分壓電路,Vcc假如為6V,為四個運放的反相輸入端
    發表于 09-10 08:00 ?40次下載
    如何判斷LM324<b class='flag-5'>四個</b>運放的<b class='flag-5'>好壞</b>?,LM324運放<b class='flag-5'>好壞</b>的簡易測試工具概述

    哈希算法的基本含義與分類

    根據維基百科的定義哈希函數要做的事情是給一任意大小的數據生成出一固定長度的數據,作為它的映射。所謂映射就是一一對應。一可靠的
    發表于 12-26 11:20 ?4030次閱讀
    <b class='flag-5'>哈希</b><b class='flag-5'>算法</b>的基本含義與分類

    什么是哈希算法用途是什么

    哈希算法又稱散列算法,是指某種從任意長度的數據中創建數字“指紋”的算法。它可以將任意長度的數據映射為固定長度的數據,這個映射后的數據我們稱之為哈希
    發表于 01-11 11:01 ?1.1w次閱讀

    基于多因子判定與滲流模型相結合的裂縫檢測算法資料概述

    ,提高滲流處理效率;然后,對提取到的滲流點進行滲流處理;最后,提出了一種結合裂縫走向的多因子判定連:接算法算法通過四個判定因子對裂縫連接的
    發表于 04-26 16:23 ?13次下載
    基于多因子<b class='flag-5'>判定</b>與滲流模型相結合的裂縫檢測<b class='flag-5'>算法</b>資料概述

    使用多因子判定與滲流模型實現裂縫檢測算法論文說明

    ,提高滲流處理效率;然后,對提取到的滲流點進行滲流處理;最后,提出了一種結合裂縫走向的多因子判定連接算法算法通過四個判定因子對裂縫連接的合
    發表于 12-04 15:46 ?1次下載
    使用多因子<b class='flag-5'>判定</b>與滲流模型實現裂縫檢測<b class='flag-5'>算法</b>論文說明

    多因子判定與滲流模型相結合的裂縫檢測算法的詳細資料說明

    滲流處理效率;然后對提取到的滲流點進行滲流處理;最后提出了一種結合裂縫走向的多因子判定連接算法算法通過四個判定因子對裂縫連接的合理性進行分
    發表于 03-27 10:17 ?13次下載

    哈希算法是什么,哈希游戲系統開發方案

    哈希算法可理解為一種消息摘要算法,將消息或數據壓縮變小并擁有固定格式。由于其單向運算具有一定的不可逆性,哈希算法已成為加密
    的頭像 發表于 06-14 09:14 ?1147次閱讀

    哈希是什么,常見的哈希算法有哪些

    可理解為一種消息摘要算法,將消息或數據壓縮變小并擁有固定格式。由于其單向運算具有一定的不可逆性,哈希算法已成為加密算法中一構成部分,但完整
    的頭像 發表于 06-23 14:57 ?7387次閱讀

    區塊哈希競猜游戲系統開發加密哈希算法概述

    ? 哈希算法(Hash function)又稱散列算法,是一種從任何數據(文件、字符等)中創建小的數字“指紋”的方法。哈希算法只需滿足把一
    的頭像 發表于 06-24 09:51 ?1146次閱讀
    區塊<b class='flag-5'>哈希</b>競猜游戲系統開發加密<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>概述

    哈希算法函數的定義描述及其特征介紹

    哈希的本質是一采用哈希算法的數學函數,它被廣泛應用于區塊鏈中構建區塊以及確認交易信息的完整性上。 什么是哈希
    的頭像 發表于 06-28 21:02 ?6531次閱讀
    主站蜘蛛池模板: 五月激情站| 在线色网| jlzzjlzz亚洲大全| 好吊788gaoco| 超级毛片| 欧美18在线| 一区二区三区视频免费观看| 日本护士69xx00| 夜夜狠狠| 永久看日本大片免费| 五月情婷婷| 欧美一区二区三区成人看不卡| 男人的天堂视频在线| 黄色3急| 国产日韩精品一区二区在线观看| 成人ww| 午夜不卡影院| 精品久久久久久| 男操女视频在线观看| 九九九精品午夜在线观看| 一色屋免费视频| 色噜噜色偷偷| 久久人精品| 夜夜艹天天干| 好吊日在线| 日本毛片大全| 天堂网a| 快色视频在线观看| 操碰人人| 国产在线小视频| 亚1洲二区三区四区免费| 乱肉情欲杂乱小说| 性欧美黑人xxxx| 欧美人与动性xxxxbbbb| 丁香婷婷基地| 美女牲交视频一级毛片| 好黄好硬好爽好刺激| 亚洲色图图片| 精品欧美一区二区三区| 亚洲偷图色综合色就色| 国产午夜爽爽窝窝在线观看|