論文名稱:基于動(dòng)態(tài)權(quán)重的一致性哈希微服務(wù)負(fù)載均衡優(yōu)化
摘要
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,互聯(lián)網(wǎng)服務(wù)器集群的負(fù)載能力正面臨前所未有的挑戰(zhàn)。在這樣的背景下,實(shí)現(xiàn)合理的負(fù)載均衡策略變得尤為重要。為了達(dá)到最佳的效率,可以利用一致性哈希算法對集群負(fù)載均衡系統(tǒng)進(jìn)行負(fù)載分配。針對微服務(wù)架構(gòu)的服務(wù)器集群場景,本文分析了集群負(fù)載均衡的特性,并提出了一種基于虛擬節(jié)點(diǎn)的一致性哈希環(huán)設(shè)計(jì)與分割方法,以及基于動(dòng)態(tài)權(quán)值的分配策略。在一致性哈希算法的基礎(chǔ)上,實(shí)現(xiàn)了服務(wù)集群之間的負(fù)載轉(zhuǎn)移,解決了微服務(wù)集群中服務(wù)負(fù)載增多導(dǎo)致負(fù)載不均衡的問題,進(jìn)而防止某些服務(wù)因負(fù)載壓力過大而導(dǎo)致崩潰的情況。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)的一致性哈希算法相比,改進(jìn)后的負(fù)載均衡策略降低了負(fù)載不均衡的概率至原來的31%;并且動(dòng)態(tài)分配策略具有良好的負(fù)載均衡性能,有效地解決了微服務(wù)分布式架構(gòu)的負(fù)載均衡問題。
關(guān)鍵詞:微服務(wù);一致性哈希;負(fù)載均衡;動(dòng)態(tài)權(quán)值
1 引言
隨著信息時(shí)代的發(fā)展,人們對系統(tǒng)網(wǎng)站的使用量越來越多,這對系統(tǒng)服務(wù)器的負(fù)載能力提出了考驗(yàn)。解決負(fù)載問題一般是采用2種方法,一種是使用具有強(qiáng)大硬件配置的后臺(tái)服務(wù)網(wǎng)絡(luò),但因?yàn)楦鞣N原因這種方法很難實(shí)現(xiàn);而另一種便是采用負(fù)載均衡方法來解決服務(wù)負(fù)載過大的問題。負(fù)載均衡廣泛地應(yīng)用于分布式環(huán)境,由于當(dāng)今大數(shù)據(jù)與云計(jì)算的廣泛使用,分布式服務(wù)系統(tǒng)也被開發(fā)人員頻繁使用。其中微服務(wù)架構(gòu)作為分布式架構(gòu)的代表,因?yàn)槠?strong>按功能來劃分服務(wù)的特點(diǎn),會(huì)導(dǎo)致各個(gè)服務(wù)的負(fù)載均衡難以控制,出現(xiàn)有的服務(wù)訪問量過高,而有的服務(wù)基本無人訪問的問題。
目前解決負(fù)載均衡的方法有很多,但是針對微服務(wù)架構(gòu)的負(fù)載均衡方法還在不斷地研究之中。很多企業(yè)都在構(gòu)建自己的微服務(wù)服務(wù)集群,開發(fā)自己的云計(jì)算平臺(tái),因此解決微服務(wù)負(fù)載均衡問題被各大公司提上了日程。
針對微服務(wù)的負(fù)載均衡問題,本文提出一種基于動(dòng)態(tài)權(quán)重的一致性哈希負(fù)載均衡優(yōu)化方法。一致性哈希是一種具有良好橫向擴(kuò)展性的集群動(dòng)態(tài)擴(kuò)展技術(shù)。但是,一致性哈希自身并沒有負(fù)載均衡的措施,很容易導(dǎo)致負(fù)載的傾斜。本文針對電商系統(tǒng),將系統(tǒng)按功能劃分微服務(wù)架構(gòu),部署在 Docker 容器中,提出一種基于虛擬機(jī)節(jié)點(diǎn)的一致性哈希服務(wù)劃分方式,使用動(dòng)態(tài)權(quán)重實(shí)現(xiàn)服務(wù)訪問量過大時(shí),自動(dòng)增加服務(wù)和服務(wù)負(fù)載傳遞。通過與輪詢和傳統(tǒng)一致性哈希算法的實(shí)驗(yàn)對比,表明此方法相比傳統(tǒng)一致性哈希算法在負(fù)載均衡方面有很大的性能提升。
2 相關(guān)工作
針對微服務(wù)集群的負(fù)載均衡問題,當(dāng)使用微服務(wù)時(shí),首先要考慮一些設(shè)計(jì)上的均衡問題,例如平衡微服務(wù)的大小和數(shù)量,平衡單個(gè)微服務(wù)和整個(gè)系統(tǒng)之間的非功能性需求。文獻(xiàn)[1]介紹了一種用 Hash 算法解決這些平衡問題的方案。文獻(xiàn)[2]介紹了一種用于構(gòu)建云應(yīng)用程序的軟件框架 Orle-ans,它運(yùn)用貪婪策略處理負(fù)載平衡。它將請求隨機(jī)分配給服務(wù)器,如果請求被分配給過載的服務(wù)器,服務(wù)器將拒絕請求,然后其被重新分配給另一臺(tái)服務(wù)器;如果服務(wù)器未過載,但服務(wù)器上的請求激活空間過載,則到達(dá)的請求將被發(fā)送到此服務(wù)器上新創(chuàng)建的激活空間中,閑置足夠長時(shí)間的激活空間將被關(guān)閉,此方法類似于本文的微服務(wù)方法。但是,本文添加了權(quán)重屬性以更準(zhǔn)確地測量負(fù)載。Microsoft Azure Service Fabric 的平衡管理器根據(jù)網(wǎng)絡(luò)流量來計(jì)算哈希函數(shù)。哈希函數(shù)需要源 IP、源端口、目標(biāo) IP、目標(biāo)端口和協(xié)議類型等信息,管理器確保來自同一鏈接的所有包都被相同的服務(wù)器接收并且平均分配。文獻(xiàn)[3]提出了一種運(yùn)用一致性哈希加強(qiáng)緩存來減小大型 Web 應(yīng)用程序中故障的負(fù)面影響。Ringpop 是一個(gè) Uber 開發(fā)的使用一致性哈希進(jìn)行負(fù)載均衡的開源庫,它為每個(gè)節(jié)點(diǎn)添加統(tǒng)一數(shù)量的副本點(diǎn),這與本文的方法類似。但是,由于節(jié)點(diǎn)分布不均,無法保證這些點(diǎn)的均勻分布。文獻(xiàn)[4]介紹了一種針對哈希環(huán)節(jié)點(diǎn)的遍歷次數(shù)進(jìn)行優(yōu)化的多重查詢方法;文獻(xiàn)[5]提出了 EFAH Hashing 算法;文獻(xiàn)[6]提出了一種更快捷、占用資源更少的一致性哈希算法,叫做跳躍性一致性哈希算法;文獻(xiàn)[7]提出了一種基于跳躍 Hash 的對象分布算法。文獻(xiàn)[7]研究了基于 Nginx 服務(wù)器的 Web 服務(wù)集群的負(fù)載均衡場景,提出了一種基于動(dòng)態(tài)權(quán)重最小連接算法 DWLC(Dynamic Weighted Least-Connection),根據(jù)每臺(tái)從機(jī)的性能來決定權(quán)重設(shè)置,并根據(jù) Least-Connection 算法來決定最后分配結(jié)果。
容器技術(shù)近些年被廣泛應(yīng)用到分布式系統(tǒng)開發(fā)中。在所有的容器平臺(tái)中,Docker 絕對是最受開發(fā)者歡迎的。2013年,Docker 的推出開啟了應(yīng)用程序開發(fā)的一場革命,有大量的論文使用 Docker 作為環(huán)境的解決方案。文獻(xiàn)[8]測試了本地 Docker 環(huán)境與傳統(tǒng) RedHat 環(huán)境之間的性能差異。該測試表明,在性能之間只有0.4%的可忽略的差異。這意味著 Docker 容器可以在生產(chǎn)環(huán)境中發(fā)揮更大的作用。文獻(xiàn)[9]提出了一種基于 Docker 和 Agave 的網(wǎng)關(guān),在 Docker 的幫助下將網(wǎng)關(guān)更加輕量級化。
3 動(dòng)態(tài)權(quán)重一致性哈希劃分方法
3.1 基本概念
實(shí)現(xiàn)微服務(wù)架構(gòu)的負(fù)載均衡是非常重要的,因?yàn)椴恢缹?huì)有多少用戶進(jìn)行訪問。假設(shè)一個(gè)服務(wù)同時(shí)處理用戶請求的上限為1000,分配20個(gè)服務(wù)為10000名用戶來提供服務(wù)。當(dāng)有20000名用戶發(fā)出請求時(shí),將必須開啟新的服務(wù)來處理新增加的請求,這些服務(wù)中有的服務(wù)是過載的而有的服務(wù)卻是相對空閑的。
本文選擇一致性哈希作為哈希函數(shù)。然而一致性哈希函數(shù)存在一些缺陷。一致性哈希在超過1000個(gè)虛擬節(jié)點(diǎn)的環(huán)境中效果最好,而通常很多應(yīng)用程序的切片鍵太少,所以無法使用一致性哈希來解決負(fù)載均衡問題,因此需要改進(jìn)以彌補(bǔ)這種缺陷。
3.2 虛擬節(jié)點(diǎn)劃分
虛擬節(jié)點(diǎn)是一種被廣泛應(yīng)用于工程場景的概念,通過網(wǎng)絡(luò)映射的方式,在一臺(tái)物理主機(jī)上搭建多個(gè)網(wǎng)絡(luò)連接。本文運(yùn)用虛擬節(jié)點(diǎn),旨在縮短用戶的請求映射到哈希環(huán)上后尋找目標(biāo)節(jié)點(diǎn)所需要遍歷的哈希長度,從而提升分配的效率。
一致性哈希方法的基本原理是將存儲(chǔ)空間抽象成一個(gè)232節(jié)點(diǎn)的圓,將存儲(chǔ)節(jié)點(diǎn)分配到這個(gè)圓上,環(huán)上的節(jié)點(diǎn)都有一個(gè)哈希值。采用同樣的方法求出存儲(chǔ)數(shù)據(jù)的鍵的哈希值,并同樣映射到圓上。然后從數(shù)據(jù)映射到的位置順時(shí)針查找,將數(shù)據(jù)存儲(chǔ)在第一個(gè)找到的服務(wù)器上。
在本文微服務(wù)架構(gòu)場景下,一致性哈希的關(guān)鍵步驟是將每個(gè)服務(wù)映射到圓邊緣上的點(diǎn),但如果服務(wù)的數(shù)量不夠,會(huì)導(dǎo)致分布不均勻,這就會(huì)造成負(fù)載不均的問題。本文用于解決該問題的方法是在用戶與服務(wù)之間增加一個(gè)虛擬層,其哈希環(huán)如圖1所示,虛擬層由大量虛擬節(jié)點(diǎn)組成。使用一致性哈希創(chuàng)建用戶與虛擬節(jié)點(diǎn)之間的映射,虛擬節(jié)點(diǎn)與服務(wù)之間通過簡單取模操作創(chuàng)建映射,通過這種方法就有足夠的虛擬節(jié)點(diǎn)來進(jìn)行一致性哈希操作。虛擬節(jié)點(diǎn)的數(shù)量也很重要,如果虛擬節(jié)點(diǎn)的數(shù)量過少,將會(huì)導(dǎo)致原有的一致性哈希方法負(fù)載均衡效果不明顯;反之,則會(huì)導(dǎo)致找到一個(gè)對應(yīng)用戶的虛擬節(jié)點(diǎn)所需時(shí)間過長。
本文根據(jù)用戶請求的IP地址來計(jì)算用戶的key,服務(wù)的key通過服務(wù)的IP地址與端口來計(jì)算。我們使用FNV(Fowler-Noll-Vo)算法[10]來Hash這些信息。FNV算法分為FNV-1,F(xiàn)NV-1a和FNV-03種,目前FNV-0算法已經(jīng)被放棄使用了,而FNV-1a算法只是在FNV-1的基礎(chǔ)上將相乘和異或運(yùn)算進(jìn)行了順序調(diào)換,其它過程和參數(shù)與FNV-1相同,F(xiàn)NV-1a算法在進(jìn)行小數(shù)據(jù)哈希時(shí)有更好的性能(小于4個(gè)字節(jié)),故本文采用FNV-1算法。FNV-1算法能在保持較小沖突率的情況下Hash大量的數(shù)據(jù),因?yàn)樗叨确稚⒌奶匦?,使其適用于Hash一些非常相近的字符串。通過求出的數(shù)據(jù)Hash值,可以盡量保證相同的用戶Hash到相同的服務(wù)上去。使用FNV-1算法來Hash信息如圖2所示。
3.3 動(dòng)態(tài)權(quán)重均衡
因?yàn)?strong>一致性哈希算法本身并沒有相應(yīng)的負(fù)載均衡策略,所以本文通過一種基于動(dòng)態(tài)權(quán)值分配的方法對微服務(wù)的負(fù)載進(jìn)行均衡優(yōu)化。分布式系統(tǒng)的負(fù)載均衡是復(fù)雜的,其系統(tǒng)資源占用因用戶而異,一些活躍的用戶需要更多的資源,因此需要為其開辟更多的微服務(wù);相反,一些相對不活躍的用戶很少訪問服務(wù),不需要給他們分配很多微服務(wù)。
我們根據(jù)用戶的訪問情況計(jì)算用戶的權(quán)重,將用戶權(quán)重屬性定義到用戶的數(shù)據(jù)表中,權(quán)重定義為:
其中,W是用戶的權(quán)重值,Nu是用戶發(fā)起請求的次數(shù),Ns是請求調(diào)用微服務(wù)的數(shù)量,t是用戶訪問的時(shí)間。Nu,Ns和t由服務(wù)收集和更新,通過自動(dòng)平衡服務(wù)進(jìn)行更改。因?yàn)闄?quán)重短時(shí)間內(nèi)不會(huì)顯著變化,所以可以間隔一段時(shí)間后進(jìn)行更改。
自動(dòng)平衡服務(wù)計(jì)算并保存每個(gè)服務(wù)組中用戶的總權(quán)重。如果一個(gè)用戶想要登錄,并且給用戶分配的權(quán)重超過了給他分配的服務(wù)權(quán)重的上限,自動(dòng)平衡服務(wù)就會(huì)撤銷之前的分配,并且將其分配給一個(gè)新的服務(wù)。如果所有的服務(wù)都達(dá)到了上限,自動(dòng)平衡服務(wù)就會(huì)開辟一個(gè)新的服務(wù),并將用戶分配給這個(gè)服務(wù)。這樣,負(fù)載過高的服務(wù)只能接收那些不活躍的用戶,而活躍的用戶會(huì)分配給負(fù)載相對較低的服務(wù)。
動(dòng)態(tài)權(quán)重均衡算法如算法1所示。
如果用戶超過1小時(shí)沒有任何操作,自動(dòng)平衡服務(wù)將從服務(wù)器組中減去此用戶的權(quán)重。如果用戶之后又進(jìn)行操作,自動(dòng)平衡服務(wù)將重復(fù)上述操作。
3.4 服務(wù)間的負(fù)載轉(zhuǎn)移
在分布式架構(gòu)系統(tǒng)中,用戶的遷移量對系統(tǒng)的負(fù)載均衡尤為重要,當(dāng)某些服務(wù)中的用戶訪問量增多時(shí),會(huì)導(dǎo)致服務(wù)的壓力過大,影響系統(tǒng)執(zhí)行效率,嚴(yán)重時(shí)會(huì)導(dǎo)致服務(wù)宕機(jī)崩潰,因此,需要將負(fù)載壓力過大的服務(wù)中的用戶轉(zhuǎn)移到其他壓力相對較小的服務(wù)中去。
當(dāng)用戶登錄或注銷時(shí),服務(wù)的總權(quán)重將變得不平衡。可以關(guān)閉那些空閑的服務(wù),但是有些服務(wù)還是負(fù)載過大。故需要將一些負(fù)載壓力過大服務(wù)中的服務(wù)請求轉(zhuǎn)移到負(fù)載相對小的服務(wù)中。因此,本文設(shè)計(jì)了一種基于動(dòng)態(tài)權(quán)重的服務(wù)之間負(fù)載轉(zhuǎn)移的算法。
負(fù)載轉(zhuǎn)移算法如算法2所示。
通過遍歷所有的服務(wù)和用戶,檢查哪些用戶請求需要被轉(zhuǎn)移,哪些服務(wù)可以用來接受這些請求。當(dāng)遍歷所有的服務(wù),沒有服務(wù)滿足接收用戶請求的條件時(shí),系統(tǒng)將自動(dòng)開啟一個(gè)新的服務(wù),用來接收轉(zhuǎn)移的用戶請求。
在該算法中,通過概率搜索來選擇接收用戶轉(zhuǎn)移的服務(wù),而不是通過隨機(jī)選擇和在符合條件的服務(wù)列表中順序選擇。這種方法是由Menon等人[11]首次提出的,該方法按固定順序從多個(gè)處理器中選擇一個(gè)處理器。本文將目標(biāo)換為系統(tǒng)中無順序的微服務(wù),自動(dòng)平衡服務(wù)為空閑服務(wù)列表中的每個(gè)服務(wù)分配一個(gè)概率。服務(wù)被選擇的概率如下所示:
其中,Pi 是分配給服務(wù)i 的概率,Lmax是系統(tǒng)中服務(wù)的負(fù)載最大值,Lmin是系統(tǒng)中服務(wù)的負(fù)載最小值,Lavg是系統(tǒng)中服務(wù)的負(fù)載平均值。Z 是一個(gè)與負(fù)載最大值、最小值和平均值相關(guān)的常數(shù)。然后自動(dòng)平衡服務(wù)根據(jù)概率Pi 來選擇接收用戶轉(zhuǎn)移的服務(wù),負(fù)載越大的服務(wù)被選擇的概率越小。在應(yīng)用上,其實(shí)不需要選擇負(fù)載最小的服務(wù)來接收轉(zhuǎn)移的負(fù)載,只需要保證相關(guān)用戶負(fù)載被轉(zhuǎn)移到負(fù)載較少的服務(wù)中去。結(jié)合前面舉一個(gè)例子,假設(shè)一組服務(wù)的負(fù)載為{40,25,30,20,40},得出 Z 為4.1,概率為{0,0.32,0.24,0.44,0}。這意味著負(fù)載為最大負(fù)載值40的服務(wù),不被自動(dòng)平衡服務(wù)識(shí)別為可以接收轉(zhuǎn)移負(fù)載的服務(wù),剩下3個(gè)服務(wù)根據(jù)概率值來被選擇為接收負(fù)載的服務(wù)。
假如上述的服務(wù)組中增加了一個(gè)用戶,其負(fù)載變?yōu)椋矗?,26,30,20,40},那么它的概率變?yōu)?{0,0.32,0.23,0.45,0}。這些服務(wù)的概率與之前的沒有顯著差異,所以不需要在每次增加新用戶時(shí)都對服務(wù)的概率進(jìn)行重新計(jì)算,只需要在服務(wù)組的Lmax和Lmin顯著變化時(shí)對概率進(jìn)行重新計(jì)算。
4 實(shí)驗(yàn)結(jié)果及分析
4.1 實(shí)驗(yàn)平臺(tái)及部署
本實(shí)驗(yàn)在VMwareworkstation上進(jìn)行,在VM上安裝并運(yùn)行Docker虛擬機(jī)。使用雙核CPU和8GB內(nèi)存,虛擬機(jī)的系統(tǒng)為Ubuntu16.04.2。將服務(wù)部署在Docker容器中,使用apt-get命令來安裝實(shí)驗(yàn)中需要的軟件。
4.2 實(shí)驗(yàn)方案
為了觀察本文算法的負(fù)載均衡效果,標(biāo)準(zhǔn)差是衡量負(fù)載均衡的一個(gè)流行度量,但是在有些情況下,2組負(fù)載數(shù)據(jù)的標(biāo)準(zhǔn)差σ是相同的,為了解決這一問題,將最大負(fù)載與平均負(fù)載的差除以平均負(fù)載作為衡量負(fù)載均衡的另一指標(biāo)U,負(fù)載不平衡的概率為:
加入不平衡參數(shù)U 后的負(fù)載如表1所示。
這個(gè)標(biāo)準(zhǔn)由負(fù)載最大的服務(wù)來主導(dǎo)。假設(shè)有2個(gè)服務(wù)組,它們的平均負(fù)載都為10,并且它們的標(biāo)準(zhǔn)差也相等。很明顯,負(fù)載最大值為20的服務(wù)組負(fù)載不平衡的概率大于負(fù)載最大值為15的服務(wù)組。前一個(gè)的負(fù)載不平衡率為1.0,而后一個(gè)為0.5。
使用ApacheJMeter作為本文的基準(zhǔn)測試工具。ApacheJMeter是Apache為基準(zhǔn)HTTP服務(wù)器提供的壓力測試工具。它可以模擬多線程并發(fā)請求和測試服務(wù)器負(fù)載壓力。使用Docker容器部署20個(gè)服務(wù)組來進(jìn)行負(fù)載均衡測試。本文設(shè)計(jì)的實(shí)驗(yàn)將會(huì)通過同等時(shí)間長度內(nèi),發(fā)送1×103,5×103,10×103,50×103,100×1035個(gè)數(shù)量級的數(shù)據(jù)請求來觀察在不同的負(fù)載情況下,本文算法的實(shí)際計(jì)算效率和負(fù)載均衡狀況。
4.3 運(yùn)行效率測試
首先需要比較本文算法與傳統(tǒng)一致性哈希算法和輪詢算法的運(yùn)行效率差異,輪詢算法是一種常見的負(fù)載均衡算法,主要是將請求按順序輪流分配到服務(wù)器上,其對比圖如圖3所示。
從實(shí)驗(yàn)的結(jié)果來看,本文基于動(dòng)態(tài)權(quán)重的一致性哈希算法在各個(gè)并發(fā)量的情況下效果相對穩(wěn)定,有較好的表現(xiàn)。因?yàn)閭鹘y(tǒng)一致性哈希算法沒有添加虛擬節(jié)點(diǎn)進(jìn)行優(yōu)化,導(dǎo)致每次分配都需要遍歷很長的距離,從而導(dǎo)致額外的開銷增多,隨著訪問量的增加,處理的效率隨之降低。而另外一組輪詢算法因?yàn)槭窃谡麄€(gè)微服務(wù)集群中按順序選擇服務(wù),其在并發(fā)請求數(shù)量增加的情況下處理效果相對穩(wěn)定,但如果集群中服務(wù)節(jié)點(diǎn)數(shù)量增加,會(huì)產(chǎn)生一些分配性能上的損失。
4.4 節(jié)點(diǎn)劃分方法
測試通過比較3種不同的算法來評估本文算法的切分服務(wù)。表2顯示了3種算法的負(fù)載不平衡概率結(jié)果。
由表2所示,改進(jìn)后的一致性哈希算法負(fù)載不平衡概率較低,是原有一致性哈希算法的31%。基于虛擬節(jié)點(diǎn)的一致性哈希算法的標(biāo)準(zhǔn)差和不平衡概率較低,明顯小于傳統(tǒng)一致性哈希算法和輪詢算法的。這是因?yàn)閭鹘y(tǒng)一致性哈希算法中沒有足夠的服務(wù)來作為節(jié)點(diǎn),用戶的請求很可能集中訪問某一節(jié)點(diǎn)導(dǎo)致負(fù)載傾斜,所以當(dāng)節(jié)點(diǎn)數(shù)量不足時(shí),只使用一致性哈希算法來進(jìn)行節(jié)點(diǎn)劃分,其結(jié)果是不理想的。而輪詢算法是通過在服務(wù)集群的服務(wù)列表中按順序分配請求,而微服務(wù)集群中的服務(wù)器存在性能上的差異,導(dǎo)致高性能的服務(wù)器負(fù)載低,而低性能的服務(wù)器負(fù)載過高。
4.5 動(dòng)態(tài)權(quán)重方法
測試由于動(dòng)態(tài)加權(quán)的方法是在劃分方法的基礎(chǔ)上改進(jìn)的,所以測試的方法與之前大致相同。區(qū)別是本文創(chuàng)建了10個(gè)虛擬用戶,并設(shè)置了他們的訪問時(shí)間和訪問次數(shù)。使用ApacheJMeter?qū)τ脩暨M(jìn)行了多次重復(fù)實(shí)驗(yàn),結(jié)果見表3,其中 Wavg為權(quán)重的平均值,σw 為權(quán)重的標(biāo)準(zhǔn)差。表3結(jié)果表明,該方法具有良好的負(fù)載均衡性能,其不僅可以均衡用戶的訪問數(shù)量,還可以使用戶的負(fù)載水平達(dá)到一個(gè)相對的平衡。
4.6 負(fù)載傳遞方法
測試首先重復(fù)上述步驟,然后通過自動(dòng)平衡服務(wù)發(fā)送一個(gè)信號(hào),使其對服務(wù)集群中的服務(wù)進(jìn)行負(fù)載均衡,其結(jié)果如表4所示,其中 Before為集群中服務(wù)進(jìn)行負(fù)載傳遞前的各項(xiàng)數(shù)值,After?yàn)檫M(jìn)行負(fù)載傳遞后的各項(xiàng)數(shù)值。表4的結(jié)果表明,經(jīng)過負(fù)載傳遞之后,服務(wù)集群中權(quán)重和用戶數(shù)基本分配均等。此方法很大程度上解決了負(fù)載均衡問題。
文章來源:http://www.zghlxwxcb.cn/news/detail-828892.html
5 結(jié)束語
隨著大數(shù)據(jù)時(shí)代的到來,處理負(fù)載均衡問題已經(jīng)成為服務(wù)集群的重要問題,一種有效的負(fù)載均衡方法決定著系統(tǒng)所能發(fā)揮的性能。本文針對分布式系統(tǒng)的負(fù)載均衡問題,對一致性哈希算法進(jìn)行優(yōu)化,提出一種基于動(dòng)態(tài)權(quán)重的一致性哈希處理負(fù)載問題的策略。通過增加一層虛擬節(jié)點(diǎn)的哈希環(huán)來解決傳統(tǒng)一致性哈希算法因?yàn)楣?jié)點(diǎn)不足導(dǎo)致負(fù)載傾斜的問題;并提出了基于權(quán)重分配負(fù)載以及實(shí)現(xiàn)服務(wù)負(fù)載傳遞的方法。從實(shí)驗(yàn)結(jié)果來看,該方法有效地提高了系統(tǒng)的性能,降低了負(fù)載不平衡的概率,實(shí)現(xiàn)了服務(wù)集群中各服務(wù)的負(fù)載和用戶訪問的均衡。與傳統(tǒng)的方法相比,負(fù)載均衡的效果得到了有效的提高。文章來源地址http://www.zghlxwxcb.cn/news/detail-828892.html
到了這里,關(guān)于論文閱讀-基于動(dòng)態(tài)權(quán)重的一致性哈希微服務(wù)負(fù)載均衡優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!