成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一致性Hash

spacewander / 3512人閱讀

摘要:當(dāng)時(shí)十分興奮,立即去找了關(guān)于一致性協(xié)議的文章來(lái)看。到了今天再去回想,發(fā)現(xiàn)對(duì)一致性協(xié)議的概念已經(jīng)模糊不清了。一致性算法一致性哈希算法在年由麻省理工學(xué)院的等人在解決分布式中提出的,設(shè)計(jì)目標(biāo)是為了解決因特網(wǎng)中的熱點(diǎn)問題,初衷和十分類似。

第一次知道一致性Hash協(xié)議是在方騰飛的技術(shù)文章實(shí)戰(zhàn)解析-論三年內(nèi)快速成長(zhǎng)為一名技術(shù)專家里看到的。

問:對(duì)于三十歲的程度員,如果還想再深入做技術(shù),有什么建議?

答:技術(shù)人員一定要有危機(jī)感,無(wú)論多大年紀(jì)仍然要持續(xù)的學(xué)習(xí),我也已經(jīng)三十多了,每周會(huì)花點(diǎn)時(shí)間學(xué)習(xí)點(diǎn)技術(shù)。
但是年紀(jì)大了,其實(shí)時(shí)間不會(huì)那么多,所以要提高學(xué)習(xí)的效率,掌握一些學(xué)習(xí)方法和方法論,并且要靜下心來(lái)持續(xù)的學(xué)習(xí)。
學(xué)技術(shù)什么時(shí)間都不晚,因?yàn)榭傆行录夹g(shù)冒出來(lái),但是一些永遠(yuǎn)不變的技術(shù)可以優(yōu)先學(xué)習(xí),比如各種協(xié)議(TCP,HTTP,一致性hash協(xié)議),實(shí)現(xiàn)原理,算法等。

當(dāng)時(shí)十分興奮,立即去找了關(guān)于一致性hash協(xié)議的文章來(lái)看。到了今天再去回想,發(fā)現(xiàn)對(duì)一致性hash協(xié)議的概念已經(jīng)模糊不清了。雖然關(guān)于一致性hash協(xié)議的文章數(shù)不勝數(shù),但是還是需要用自己的語(yǔ)言來(lái)表達(dá)一遍,才能真正的理解這些技術(shù)概念,成為自己的東西。這也是寫這篇文章的理由。

什么是一致性Hash協(xié)議?

一致性Hash協(xié)議是指滿足了以下4個(gè)條件的Hash算法:

均衡性(Balance)

單調(diào)性(Monotonicity)

分散性(Spread)

負(fù)載(Load)

均衡性

均衡性是指Hash的結(jié)果應(yīng)該盡可能的平均分配給所有的節(jié)點(diǎn),實(shí)現(xiàn)負(fù)載均衡的效果,這也是最基本的特性。

單調(diào)性

單調(diào)性是指在節(jié)點(diǎn)增加或減少的情況下,已Hash的結(jié)果與節(jié)點(diǎn)的映射關(guān)系盡量不發(fā)生變化。單調(diào)性低的Hash算法在節(jié)點(diǎn)增加或減少的時(shí)候會(huì)出現(xiàn)Hash的結(jié)果與節(jié)點(diǎn)的映射關(guān)系大量失效的情況,造成嚴(yán)重的性能問題或系統(tǒng)故障。

分散性

分散性是指相同內(nèi)容在不同客戶端Hash的結(jié)果是否一致。因?yàn)樵诜植际降沫h(huán)境下,不同客戶端可以看到的節(jié)點(diǎn)數(shù)可能是不同的,分散性高的Hash算法會(huì)導(dǎo)致相同的內(nèi)容卻映射了多個(gè)節(jié)點(diǎn)。

負(fù)載

負(fù)載是從節(jié)點(diǎn)角度出發(fā),不同內(nèi)容的Hash結(jié)果卻映射了同一個(gè)節(jié)點(diǎn)位置。

普通余數(shù)Hash算法

Hash結(jié)果 % 節(jié)點(diǎn)數(shù),非常的簡(jiǎn)單和好用。雖然這種算法滿足了均衡性,但是單調(diào)性卻非常的差勁,一旦節(jié)點(diǎn)數(shù)有變動(dòng)就會(huì)造成大量的Hash的結(jié)果與節(jié)點(diǎn)的映射關(guān)系失效
。只適用于節(jié)點(diǎn)數(shù)固定的場(chǎng)景。

一致性Hash算法

一致性哈希算法在1997年由麻省理工學(xué)院的Karger等人在解決分布式Cache中提出的,設(shè)計(jì)目標(biāo)是為了解決因特網(wǎng)中的熱點(diǎn)(Hot spot)問題,初衷和CARP十分類似。一致性哈希修正了CARP使用的簡(jiǎn)單哈希算法帶來(lái)的問題,使得DHT可以在P2P環(huán)境中真正得到應(yīng)用。

首先構(gòu)造一個(gè)長(zhǎng)度為2^32的整數(shù)環(huán),然后將節(jié)點(diǎn)Hash的結(jié)果均勻映射到整數(shù)環(huán)上。

這時(shí)將內(nèi)容映射到整數(shù)環(huán)上。

如圖所示,Hash的結(jié)果與節(jié)點(diǎn)的映射關(guān)系是根據(jù)Hash的結(jié)果按順時(shí)針遇到的第一個(gè)節(jié)點(diǎn)來(lái)判定的。這樣做是為了有良好的單調(diào)性,假如現(xiàn)在節(jié)點(diǎn)C故障了那么新的映射關(guān)系如下圖所示:

我們可以看到原本屬于節(jié)點(diǎn)C的映射現(xiàn)在都重新映射到了節(jié)點(diǎn)D上,這樣至少保證了大部分的映射可以正常工作。

保證良好的均衡性

一致性Hash算法的均衡性取決于節(jié)點(diǎn)的位置是否分布均勻,如果是按上圖所示分布節(jié)點(diǎn),那么很明顯節(jié)點(diǎn)D的壓力遠(yuǎn)遠(yuǎn)高于其他節(jié)點(diǎn)。不過即使節(jié)點(diǎn)已經(jīng)分布均勻了,如果節(jié)點(diǎn)數(shù)量太少的話也很容易造成數(shù)據(jù)傾斜問題。

虛擬節(jié)點(diǎn)

虛擬節(jié)點(diǎn)是用來(lái)解決節(jié)點(diǎn)數(shù)量過少造成的數(shù)據(jù)傾斜問題。顧名思義,通過虛擬出一些節(jié)點(diǎn)來(lái)增加總節(jié)點(diǎn)數(shù),這樣就有良好的均衡性了。

后記

原理雖然簡(jiǎn)單實(shí)現(xiàn)起來(lái)卻挺麻煩,大家如果有興趣可以自己去實(shí)現(xiàn)一個(gè)版本。我雖然寫了個(gè)demo但感覺并不好,就不放上來(lái)獻(xiàn)丑了。計(jì)劃是一周寫一篇文章的,現(xiàn)在已經(jīng)寫了5篇了,動(dòng)力開始不足了。原因可能很多,比如不知道寫什么,肚子里墨水不多等。希望能堅(jiān)持下去,為了更好的明天。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71723.html

相關(guān)文章

  • 什么是致性Hash算法?

    摘要:五一致性算法的容錯(cuò)性和可擴(kuò)展性現(xiàn)假設(shè)不幸宕機(jī),可以看到此時(shí)對(duì)象不會(huì)受到影響,只有對(duì)象被重定位到。綜上所述,一致性算法對(duì)于節(jié)點(diǎn)的增減都只需重定位環(huán)空間中的一小部分?jǐn)?shù)據(jù),具有較好的容錯(cuò)性和可擴(kuò)展性。 最近有小伙伴跑過來(lái)問什么是Hash一致性算法,說(shuō)面試的時(shí)候被問到了,因?yàn)椴涣私?,所以就沒有回答上,問我有沒有相應(yīng)的學(xué)習(xí)資料推薦,當(dāng)時(shí)上班,沒時(shí)間回復(fù),晚上回去了就忘了這件事,今天突然看到這個(gè),...

    feng409 評(píng)論0 收藏0
  • 強(qiáng)致性hash實(shí)現(xiàn)java版本及強(qiáng)致性hash原理

    摘要:好的哈希算法應(yīng)能夠盡量避免不一致的情況發(fā)生,也就是盡量降低分散性。一致性哈希算法的基本實(shí)現(xiàn)原理是將機(jī)器節(jié)點(diǎn)和值都按照一樣的算法映射到一個(gè)的圓環(huán)上。 一致性 hash 分布式過程中我們將服務(wù)分散到若干的節(jié)點(diǎn)上,以此通過集體的力量提升服務(wù)的目的。然而,對(duì)于一個(gè)客戶端來(lái)說(shuō),該由哪個(gè)節(jié)點(diǎn)服務(wù)呢?或者說(shuō)對(duì)某個(gè)節(jié)點(diǎn)來(lái)說(shuō)他分配到哪些任務(wù)呢? 強(qiáng)哈希 考慮到單服務(wù)器不能承載,因此使用了分布式架構(gòu),最初...

    hzc 評(píng)論0 收藏0
  • 通過PHP實(shí)現(xiàn)致性哈希算法

    摘要:通過虛擬節(jié)點(diǎn)優(yōu)化一致性算法為了提高一致性算法的平衡性,我們首先能夠想到的是,增加節(jié)點(diǎn)數(shù),但是機(jī)器畢竟是需要經(jīng)費(fèi)啊,不是說(shuō)增就能隨意增,那就增加虛擬節(jié)點(diǎn),這樣就沒毛病了。 一、案例分析(1)問題概述 假設(shè)我們的圖片數(shù)據(jù)均勻的分配在三臺(tái)服務(wù)(分別標(biāo)注為服務(wù)器A,服務(wù)器B、服務(wù)器C)上面,現(xiàn)在我們要從里面取圖片,服務(wù)端在拿到這個(gè)請(qǐng)求后,怎么會(huì)指定,這張圖片是存在服務(wù)器A、服務(wù)器B,還是服務(wù)器...

    tulayang 評(píng)論0 收藏0
  • session致性架構(gòu)設(shè)計(jì)實(shí)踐

    摘要:最常見的,會(huì)把用戶的登錄信息用戶信息存儲(chǔ)在中,以保持登錄狀態(tài)。什么是一致性問題只要用戶不重啟瀏覽器,每次短連接請(qǐng)求,理論上服務(wù)端都能定位到,保持會(huì)話。在高可用時(shí),如何保證路由的一致性,是今天將要討論的問題。 一、緣起 什么是session?服務(wù)器為每個(gè)用戶創(chuàng)建一個(gè)會(huì)話,存儲(chǔ)用戶的相關(guān)信息,以便多次請(qǐng)求能夠定位到同一個(gè)上下文。 Web開發(fā)中,web-server可以自動(dòng)為同一個(gè)瀏覽器的訪...

    freewolf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<