一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,用于服務(wù)器集群的緩沖共享和緩存均衡,主要加速大規(guī)模數(shù)據(jù)訪問(wèn)速度和消除單節(jié)點(diǎn)緩存失效的影響。本發(fā)明可以有效提高服務(wù)器集群的1性能,不但提供統(tǒng)一存儲(chǔ)空間,并能將緩存相對(duì)均勻的分布到各服務(wù)器節(jié)點(diǎn)中。
【背景技術(shù)】
[0002]傳統(tǒng)的服務(wù)器集群中,為了實(shí)現(xiàn)負(fù)載均衡,將N臺(tái)服務(wù)器進(jìn)行hash取模,將鍵值為X的數(shù)據(jù)請(qǐng)求分配或者路由到hash (X) mod N對(duì)應(yīng)的服務(wù)器中。
[0003]該算法十分簡(jiǎn)單,但是若增加了服務(wù)器的數(shù)量,將導(dǎo)致原來(lái)的緩存數(shù)據(jù)進(jìn)行重新映射,造成服務(wù)器集群大量讀取硬盤數(shù)據(jù)的情形,造成很大的系統(tǒng)負(fù)載。因此采用傳統(tǒng)方式的緩存設(shè)計(jì)方案無(wú)法對(duì)現(xiàn)有的集群進(jìn)行動(dòng)態(tài)擴(kuò)容。
[0004]若服務(wù)器集群中存在單服務(wù)器節(jié)點(diǎn)失效,那么移除該節(jié)點(diǎn)也會(huì)引起緩存數(shù)據(jù)和服務(wù)器不匹配,因此導(dǎo)致了緩存數(shù)據(jù)資源劇烈變化,影響了系統(tǒng)的整體性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問(wèn)題是:鑒于上述問(wèn)題,本發(fā)明的主要目的在于,提供一種基于一致性hash算法的網(wǎng)絡(luò)cache設(shè)計(jì)方法,該方法可以用于服務(wù)器集群的緩沖共享和緩存均衡,主要加速大規(guī)模數(shù)據(jù)訪問(wèn)速度和消除單節(jié)點(diǎn)緩存失效的影響。
[0006]本發(fā)明所采用的技術(shù)方案為:
一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,首先將服務(wù)器集群的緩存集中,放入統(tǒng)一的資源池內(nèi),資源池內(nèi)的所有資源可以被任一資源調(diào)度使用,采用NUMA進(jìn)行緩存的管理;將hash值放入一個(gè)2m的環(huán)形空間中,將單臺(tái)服務(wù)器也看成對(duì)象進(jìn)行hash計(jì)算放入hash環(huán)中;然后將數(shù)據(jù)塊通過(guò)hash算法計(jì)算出對(duì)應(yīng)的key值,將該值放入到hash空間中。
[0007]若某節(jié)點(diǎn)宕機(jī),該節(jié)點(diǎn)失效,原來(lái)指向該節(jié)點(diǎn)的數(shù)據(jù)塊重新緩存到另一節(jié)點(diǎn)中,其他數(shù)據(jù)塊仍然緩存到原來(lái)的節(jié)點(diǎn)中;
若服務(wù)器集群需要擴(kuò)容或者替代失效節(jié)點(diǎn),原來(lái)指向失效節(jié)點(diǎn)的數(shù)據(jù)塊重新緩存到新增加節(jié)點(diǎn)中,其他數(shù)據(jù)塊仍然緩存到原來(lái)的節(jié)點(diǎn)中。
[0008]所述方法將物理節(jié)點(diǎn)通過(guò)算法得到虛擬節(jié)點(diǎn),并將虛擬節(jié)點(diǎn)映射到hash空間。
[0009]所述虛擬節(jié)點(diǎn)具體設(shè)置過(guò)程為:將其中的一個(gè)Node節(jié)點(diǎn),通過(guò)hash算法得到Key值命名,然后將2m_key的值作為新的key值命名,虛擬出兩個(gè)節(jié)點(diǎn),兩個(gè)節(jié)點(diǎn)時(shí)在hash空間中均勾分布;同理,其他節(jié)點(diǎn)也是相同計(jì)算,將獲得的虛擬節(jié)點(diǎn)映射到hash空間中。
[0010]本發(fā)明的有益效果為:
本發(fā)明技術(shù)用于服務(wù)器集群的緩沖共享和緩存均衡,能夠加速大規(guī)模數(shù)據(jù)訪問(wèn)速度和消除單節(jié)點(diǎn)緩存失效的影響,可以有效提高服務(wù)器集群的1性能,不但提供統(tǒng)一存儲(chǔ)空間,并能將緩存相對(duì)均勻的分布到各服務(wù)器節(jié)點(diǎn)中。
【附圖說(shuō)明】
[0011 ] 圖1為服務(wù)器集群緩存資源組建緩存池示意圖;
圖2為數(shù)據(jù)塊通過(guò)Hash映射到統(tǒng)一空間示意圖;
圖3為服務(wù)器通過(guò)Hash映射到統(tǒng)一空間示意圖;
圖4為刪除服務(wù)器操作示意圖;
圖5為添加服務(wù)器操作示意圖;
圖6為未添加虛擬服務(wù)器時(shí)數(shù)據(jù)塊分布示意圖;
圖7為添加虛擬服務(wù)器后數(shù)據(jù)塊分布示意圖;
圖8為未添加虛擬服務(wù)器時(shí)數(shù)據(jù)塊分布示意圖;
圖9為添加虛擬服務(wù)器后數(shù)據(jù)塊分布示意圖。
【具體實(shí)施方式】
[0012]下面參照附圖所示,通過(guò)【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明:
實(shí)施例1:
一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,首先將服務(wù)器集群的緩存集中,放入統(tǒng)一的資源池內(nèi),資源池內(nèi)的所有資源可以被任一資源調(diào)度使用,采用NUMA進(jìn)行緩存的管理;將hash值放入一個(gè)2m的環(huán)形空間中,將單臺(tái)服務(wù)器也看成對(duì)象進(jìn)行hash計(jì)算放入hash環(huán)中;然后將數(shù)據(jù)塊Object A、B、C和D通過(guò)hash算法計(jì)算出對(duì)應(yīng)的key值,將該值放入到hash空間中;通過(guò)以上兩部操作就將服務(wù)器節(jié)點(diǎn)和數(shù)據(jù)塊都映射在同一hash空間,然后按照順時(shí)針?lè)较驅(qū)?shù)據(jù)塊放入到對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)中,如圖2、圖3所示。
[0013]服務(wù)器集群是將多臺(tái)服務(wù)器集中在一起提供服務(wù),但是在客戶端看來(lái)是一臺(tái)服務(wù)器。集群可以進(jìn)行并行操作,集群化操作可以減少單點(diǎn)故障的影響,并實(shí)現(xiàn)了集群化的資源高效利用。若存在N臺(tái)服務(wù)器集群,那么對(duì)任一服務(wù)器來(lái)說(shuō)其緩存都擴(kuò)大了 N倍,圖1所示,由于緩存池中緩存對(duì)于任一服務(wù)器來(lái)說(shuō),都存在不同的訪問(wèn)速度(本地緩存訪問(wèn)速度快,非本地緩存訪問(wèn)速度慢),因此采用NUMA進(jìn)行緩存的管理。
[0014]NUMA(Non Uniform Memory Access Architecture)技術(shù)可以使眾多服務(wù)器像單一系統(tǒng)那樣運(yùn)轉(zhuǎn),同時(shí)保留小系統(tǒng)便于編程和管理的優(yōu)點(diǎn)。非統(tǒng)一內(nèi)存訪問(wèn)(NUMA)是一種用于多處理器的電腦記憶體設(shè)計(jì),內(nèi)存訪問(wèn)時(shí)間取決于處理器的內(nèi)存位置。在NUMA下,處理器訪問(wèn)它自己的本地存儲(chǔ)器的速度比非本地存儲(chǔ)器(存儲(chǔ)器的地方到另一個(gè)處理器之間共享的處理器或存儲(chǔ)器)快一些。
[0015]實(shí)施例2:
在實(shí)施例1的基礎(chǔ)上,本實(shí)施例中,對(duì)于任一集群的操作來(lái)說(shuō),都存在單臺(tái)服務(wù)器宕機(jī)的情況,但是服務(wù)器宕機(jī)不能影響集群的性能和服務(wù),因此需要對(duì)服務(wù)器的刪除和添加進(jìn)行操作,服務(wù)器集群中若出現(xiàn)某一臺(tái)服務(wù)器宕機(jī),其緩存內(nèi)容失效,影響了全部服務(wù)器的工作,那么就要出現(xiàn)緩存迀移;同理,當(dāng)服務(wù)器集群的數(shù)量不滿足要求,無(wú)法為外界提供足夠服務(wù),需要添加節(jié)點(diǎn)數(shù)量進(jìn)行擴(kuò)容,過(guò)程如下:
若N2節(jié)點(diǎn)宕機(jī),該節(jié)點(diǎn)失效,如圖4所示,原來(lái)指向N2的數(shù)據(jù)塊A與B需要重新緩存到N3中,會(huì)出現(xiàn)緩存迀移,但是數(shù)據(jù)塊C與D仍然緩存到原來(lái)的節(jié)點(diǎn)中,因此不會(huì)出現(xiàn)數(shù)據(jù)全部迀移,減少了系統(tǒng)資源的消耗;
若服務(wù)器集群需要擴(kuò)容或者替代失效節(jié)點(diǎn),如N4節(jié)點(diǎn)添加到服務(wù)器集群,如圖5所示,原來(lái)指向N3的數(shù)據(jù)塊A需要重新緩存到N4中,會(huì)出現(xiàn)緩存迀移,但是數(shù)據(jù)塊B、C與D仍然緩存到原來(lái)的節(jié)點(diǎn)中,因此不會(huì)出現(xiàn)數(shù)據(jù)全部迀移,同樣減少了系統(tǒng)資源的消耗。
[0016]實(shí)施例3
在實(shí)施例1或2的基礎(chǔ)上,本實(shí)施例所述方法將物理節(jié)點(diǎn)通過(guò)算法得到虛擬節(jié)點(diǎn),并將虛擬節(jié)點(diǎn)映射到hash空間,虛擬節(jié)點(diǎn)的添加能避免了單一服務(wù)器節(jié)點(diǎn)出現(xiàn)大量的數(shù)據(jù)緩存,實(shí)現(xiàn)了數(shù)據(jù)的均衡負(fù)載。
[0017]實(shí)施例4
在實(shí)施例3的基礎(chǔ)上,本實(shí)施例所述虛擬節(jié)點(diǎn)具體設(shè)置過(guò)程為:
將Nodel通過(guò)hash算法得到Key值命名為VNl,然后將2m_key的值作為新的key值,得到新節(jié)點(diǎn)命名為VN4.即節(jié)點(diǎn)I在節(jié)點(diǎn)中虛擬出兩個(gè)節(jié)點(diǎn),兩個(gè)節(jié)點(diǎn)時(shí)在hash空間中均勾分布。同理,對(duì)于Node2和Node3也是相同計(jì)算,這樣三個(gè)物理節(jié)點(diǎn)變成了 6個(gè)虛擬節(jié)點(diǎn),將6個(gè)虛擬節(jié)點(diǎn)映射到hash空間中??梢钥吹皆瓉?lái)集中的緩存(如圖6,圖8所示),可以相對(duì)均勻的分布到3個(gè)物理節(jié)點(diǎn)中,如圖7,圖9所示。
[0018]以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
【主權(quán)項(xiàng)】
1.一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,其特征在于:首先將服務(wù)器集群的緩存集中,放入統(tǒng)一的資源池內(nèi),資源池內(nèi)的所有資源可以被任一資源調(diào)度使用,采用NUMA進(jìn)行緩存的管理;將hash值放入一個(gè)2m的環(huán)形空間中,將單臺(tái)服務(wù)器也看成對(duì)象進(jìn)行hash計(jì)算放入hash環(huán)中;然后將數(shù)據(jù)塊通過(guò)hash算法計(jì)算出對(duì)應(yīng)的key值,將該值放入到hash空間中。2.根據(jù)權(quán)利要求1所述的一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,其特征在于:若某節(jié)點(diǎn)宕機(jī),該節(jié)點(diǎn)失效,原來(lái)指向該節(jié)點(diǎn)的數(shù)據(jù)塊重新緩存到另一節(jié)點(diǎn)中,其他數(shù)據(jù)塊仍然緩存到原來(lái)的節(jié)點(diǎn)中; 若服務(wù)器集群需要擴(kuò)容或者替代失效節(jié)點(diǎn),原來(lái)指向失效節(jié)點(diǎn)的數(shù)據(jù)塊重新緩存到新增加節(jié)點(diǎn)中,其他數(shù)據(jù)塊仍然緩存到原來(lái)的節(jié)點(diǎn)中。3.根據(jù)權(quán)利要求1或2所述的一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,其特征在于:所述方法將物理節(jié)點(diǎn)通過(guò)算法得到虛擬節(jié)點(diǎn),并將虛擬節(jié)點(diǎn)映射到hash空間。4.根據(jù)權(quán)利要求3所述的一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,其特征在于,所述虛擬節(jié)點(diǎn)具體設(shè)置過(guò)程為:將其中的一個(gè)Node節(jié)點(diǎn),通過(guò)hash算法得到Key值命名,然后將2m-key的值作為新的key值命名,虛擬出兩個(gè)節(jié)點(diǎn),兩個(gè)節(jié)點(diǎn)時(shí)在hash空間中均勻分布;同理,其他節(jié)點(diǎn)也是相同計(jì)算,將獲得的虛擬節(jié)點(diǎn)映射到hash空間中。
【專利摘要】本發(fā)明公開(kāi)了一種基于一致性hash的網(wǎng)絡(luò)cache設(shè)計(jì)方法,首先將服務(wù)器集群的緩存集中,放入統(tǒng)一的資源池內(nèi),資源池內(nèi)的所有資源可以被任一資源調(diào)度使用,采用NUMA進(jìn)行緩存的管理;將hash值放入一個(gè)2m的環(huán)形空間中,將單臺(tái)服務(wù)器也看成對(duì)象進(jìn)行hash計(jì)算放入hash環(huán)中;然后將數(shù)據(jù)塊通過(guò)hash算法計(jì)算出對(duì)應(yīng)的key值,將該值放入到hash空間中。本發(fā)明技術(shù)用于服務(wù)器集群的緩沖共享和緩存均衡,能夠加速大規(guī)模數(shù)據(jù)訪問(wèn)速度和消除單節(jié)點(diǎn)緩存失效的影響,可以有效提高服務(wù)器集群的IO性能,不但提供統(tǒng)一存儲(chǔ)空間,并能將緩存相對(duì)均勻的分布到各服務(wù)器節(jié)點(diǎn)中。
【IPC分類】H04L29/08
【公開(kāi)號(hào)】CN105007328
【申請(qǐng)?zhí)枴緾N201510457562
【發(fā)明人】張凡凡, 吳登勇, 李保來(lái)
【申請(qǐng)人】山東超越數(shù)控電子有限公司
【公開(kāi)日】2015年10月28日
【申請(qǐng)日】2015年7月30日