亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

深入理解一致性Hash和虛擬節(jié)點

admin
2024年7月22日 9:30 本文熱度 2526

    在分布式系統(tǒng)中架構(gòu)中我們經(jīng)常提到一致性哈希算法,那么什么是一致性哈希算法,為什么需要一致性哈希算法呢?

1、為什么需要一致性哈希算法

    假設(shè)現(xiàn)在有三臺緩存服務(wù)器(緩存服務(wù)器A、緩存服務(wù)器B、緩存服務(wù)器C),現(xiàn)在將數(shù)據(jù)預(yù)熱到這三臺服務(wù)器,我們可以使用負(fù)載均衡的方法將數(shù)據(jù)緩存到服務(wù)器上,如下圖所示:

    通過負(fù)載均衡的方式可以把數(shù)據(jù)均勻的分發(fā)到三臺緩存服務(wù)器上,在讀取緩存的熱點數(shù)據(jù)就存在一定的困難(因為不清楚數(shù)據(jù)被緩存在那臺服務(wù)器上),讀取數(shù)據(jù)的過程如下所示:

    通過輪詢緩存服務(wù)器的方式讀取緩存的熱點數(shù)據(jù),此時效率就非常的低了,接口的響應(yīng)時間也會變長,從而導(dǎo)致用戶的體驗非常差。

    負(fù)載均衡的方案致命的缺點是無法快速的定位數(shù)據(jù)在哪臺服務(wù)器上,導(dǎo)致需要輪詢服務(wù)器來獲取數(shù)據(jù),為了解決這個痛點便提出使用Hash算法。Hash算法的預(yù)熱數(shù)據(jù)的流程如下圖:

    將數(shù)據(jù)的key計算一個hash值,然后將這個hash值和服務(wù)器的臺數(shù)取模,取模之后的結(jié)果就決定當(dāng)前的數(shù)據(jù)存放在哪臺服務(wù)器上。獲取數(shù)據(jù)的流程如下:

    讀取數(shù)據(jù)的時候,將數(shù)據(jù)key同樣方式獲取hash值,然后將hash值與服務(wù)器的臺數(shù)取模來定位數(shù)據(jù)在哪臺服務(wù)器上。但是hash法也存在一個嚴(yán)重的缺陷,假設(shè)現(xiàn)在增加/減少服務(wù)器數(shù)據(jù)量,如下圖所示:

    我們繼續(xù)使用:hash(key)% 服務(wù)器數(shù)量,來定位數(shù)據(jù)在哪臺服務(wù)器就存在問題了,因為服務(wù)器數(shù)量變化導(dǎo)致原先數(shù)據(jù)定位不準(zhǔn),如下所示:

    假設(shè)現(xiàn)在有大量的請求打進來,由于命中緩存服務(wù)上沒有數(shù)據(jù),請求都落到了資源服務(wù)器上,由于資源服務(wù)器瞬間壓力過大可能會導(dǎo)致服務(wù)崩潰。

    hash隨著服務(wù)器的數(shù)量變化(增加或減少),定位服務(wù)上的緩存的數(shù)據(jù)位置也會變動,就會導(dǎo)致無法獲取數(shù)據(jù)的問題。為了解決這個問題便提出了一致性hash算法。

2、一致性hash和虛擬節(jié)點

    一致性hash算法是對2^32方取模,從0-2^32方計數(shù)形成一個圓環(huán),我們稱這個圓環(huán)為hash環(huán)。

    通過hash(服務(wù)器的ip) % 2^32 = X;通過這個X值可以定位服務(wù)器在圓環(huán)上的位置。

    如何確定數(shù)據(jù)存放在哪個服務(wù)器上呢?如下圖所示:

    如上的數(shù)據(jù)A,我們可以使用hash(數(shù)據(jù)A) % 2^32 = LA;通過LA可以定位數(shù)據(jù)A在圓環(huán)上的位置,然后順時針方便找距離數(shù)據(jù)A最近的服務(wù)器,發(fā)現(xiàn)是服務(wù)器A,那么我們將數(shù)據(jù)A存放到服務(wù)器A上。同理數(shù)據(jù)B也是存放在服務(wù)器上A上。

    讀取數(shù)據(jù)也是同樣按照hash算法取模的方式來定位服務(wù)器,通過這樣的方式可以很快地定位數(shù)據(jù)在哪臺服務(wù)器上。如下所示:

    假設(shè)現(xiàn)在服務(wù)器C下線了,如下所示:

    此時數(shù)據(jù)A定位是沒有問題,數(shù)據(jù)C從原先的服務(wù)器C上定位到服務(wù)器A上,數(shù)據(jù)C是無法獲取到的。換句話講,雖然服務(wù)器C下線了,但是只是部分?jǐn)?shù)據(jù)異常,不會使得整個服務(wù)集群數(shù)據(jù)錯亂,數(shù)據(jù)異常的部分如下所示:

    假設(shè)現(xiàn)在增加了一臺機器D,那么也只會導(dǎo)致部分?jǐn)?shù)據(jù)出現(xiàn)錯亂,如下圖所示:

    此時我們只需要將錯亂的這一部分?jǐn)?shù)據(jù)遷移到服務(wù)器D上可以實現(xiàn)數(shù)據(jù)的同步了。理想狀態(tài)下,一致性hash是很完美的,但是在極端的情況下由于離散型差的問題導(dǎo)致服務(wù)器都集中分布在一起,如下圖所示:

此時數(shù)據(jù)又剛好落在服務(wù)器C和服務(wù)器A之間的區(qū)域上,如下圖所示:

    這樣就導(dǎo)致所有的數(shù)據(jù)壓力都到了服務(wù)器A上,服務(wù)器B和服務(wù)器C就是一個擺設(shè)了作用了。如果服務(wù)器A掛了,那么整個緩存就失效了,這個就是hash環(huán)的傾斜問題。為了解決hash環(huán)傾斜問題,于是便引入了虛擬節(jié)點,也就是把真實的服務(wù)器通過虛擬化的方式復(fù)制一些節(jié)點出來成為虛擬虛擬節(jié)點。如下圖所示:

    通過虛擬節(jié)點的加入就不會導(dǎo)致所有的數(shù)據(jù)都到一臺機器中,同時虛擬節(jié)點越多,緩存數(shù)據(jù)越均勻。

總結(jié):

(1)一致性hash常用于負(fù)載均衡、分布式緩存分區(qū)、數(shù)據(jù)庫分庫分表等場景。

(2)為防止服務(wù)器上的數(shù)據(jù)傾斜問題,通常增加虛擬節(jié)點的方式來讓數(shù)據(jù)更加均勻的分布在機器上。


該文章在 2024/7/22 9:30:22 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved