欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于虛擬環(huán)負(fù)載均衡算法的分布式存儲(chǔ)控制方法與流程

文檔序號(hào):11236815閱讀:747來(lái)源:國(guó)知局
基于虛擬環(huán)負(fù)載均衡算法的分布式存儲(chǔ)控制方法與流程

本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種基于虛擬環(huán)負(fù)載均衡算法的分布式存儲(chǔ)控制方法。



背景技術(shù):

隨著分布式云存儲(chǔ)技術(shù)的發(fā)展和應(yīng)用,業(yè)界逐漸接受在云存儲(chǔ)系統(tǒng)中采用分片存儲(chǔ)、分布式負(fù)載均衡為主要的技術(shù)實(shí)現(xiàn)手段,將大容量文件切分為多個(gè)對(duì)象(object),分別存儲(chǔ)到不同的物理介質(zhì)中。

在分布式對(duì)象存儲(chǔ)中的一個(gè)關(guān)鍵問(wèn)題是數(shù)據(jù)該如何存放。環(huán)狀映射空間是其中最重要的概念,它用于記錄存儲(chǔ)對(duì)象與物理位置間映射關(guān)系。

映射環(huán)用來(lái)確定數(shù)據(jù)駐留在集群中的位置。映射環(huán)空間中每個(gè)節(jié)點(diǎn)的位置由邏輯“環(huán)”來(lái)維護(hù),并存儲(chǔ)在映射中。環(huán)空間使用映射的概念來(lái)保證數(shù)據(jù)的隔離。每個(gè)節(jié)點(diǎn)都確保對(duì)應(yīng)不同的映射,一個(gè)映射可以是一個(gè)硬盤,一個(gè)服務(wù)器,一個(gè)機(jī)架,一個(gè)交換機(jī),甚至是一個(gè)數(shù)據(jù)中心。

如一個(gè)普通hash算法與場(chǎng)景分析的例子,假設(shè)有n臺(tái)存儲(chǔ)服務(wù)器(以下簡(jiǎn)稱node),打算用于圖片文件存儲(chǔ),為了使服務(wù)器的負(fù)載均衡,需要把對(duì)象均勻地映射到每臺(tái)服務(wù)器上,通常會(huì)使用哈希算法來(lái)實(shí)現(xiàn),計(jì)算步驟如下:

1.計(jì)算object的hash值key

2.計(jì)算keymodn值

有n個(gè)存儲(chǔ)節(jié)點(diǎn),將key模n得到的余數(shù)就是該key對(duì)應(yīng)的值需要存放的節(jié)點(diǎn)。比如,n是2,那么值為0、1、2、3、4的key需要分別存放在0、1、0、1和0號(hào)節(jié)點(diǎn)上。如果哈希算法是均勻的,數(shù)據(jù)就會(huì)被平均分配到兩個(gè)節(jié)點(diǎn)中。如果每個(gè)數(shù)據(jù)的訪問(wèn)量比較平均,負(fù)載也會(huì)被平均分配到兩個(gè)節(jié)點(diǎn)上。

但是,當(dāng)數(shù)據(jù)量和訪問(wèn)量進(jìn)一步增加,兩個(gè)節(jié)點(diǎn)無(wú)法滿足需求的時(shí)候,需要增加一個(gè)節(jié)點(diǎn)來(lái)服務(wù)客戶端的請(qǐng)求。這時(shí),n變成了3,映射關(guān)系變成了keymod(n+1),因此,上述哈希值為2、3、4的數(shù)據(jù)需要重新分配(2->server2,3->server0,4->server1)。如果數(shù)據(jù)量很大的話,那么數(shù)據(jù)量的遷移工作將會(huì)非常大。當(dāng)n已經(jīng)很大,從n加入一個(gè)節(jié)點(diǎn)變成n+1個(gè)節(jié)點(diǎn)的過(guò)程,會(huì)導(dǎo)致整個(gè)哈希環(huán)的重新分配,這個(gè)過(guò)程幾乎是無(wú)法容忍的,幾乎全部的數(shù)據(jù)都要重新移動(dòng)一遍。

舉例說(shuō)明,假設(shè)有100個(gè)node的集群,將107項(xiàng)數(shù)據(jù)使用md5hash算法分配到每個(gè)node中。通過(guò)計(jì)算我們發(fā)現(xiàn),為了提高集群1%的存儲(chǔ)能力,需要移動(dòng)9900989個(gè)數(shù)據(jù)項(xiàng),也就是99.01%的數(shù)據(jù)項(xiàng)!顯然,這種算法嚴(yán)重地影響了系統(tǒng)的性能和可擴(kuò)展性。

顯然該種低效率、高成本的實(shí)現(xiàn)方法不是好的解決方案,有必要設(shè)計(jì)出一種新的存儲(chǔ)控制方法,通過(guò)使用普通硬件來(lái)構(gòu)建冗余的、可擴(kuò)展的分布式對(duì)象存儲(chǔ)集群,使存儲(chǔ)容量可達(dá)更高量級(jí),并且實(shí)現(xiàn)成本可控。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明的目的是提供一種基于虛擬環(huán)負(fù)載均衡算法的分布式存儲(chǔ)控制方法,本方法通過(guò)引入“虛擬環(huán)”概念,并采用基于“虛擬環(huán)”映射空間的分布式存儲(chǔ)映射計(jì)算方法,從而能夠在改變集群的node數(shù)量時(shí)(增加/刪除服務(wù)器),能夠盡可能少地改變已存在key和node的映射關(guān)系,以滿足單調(diào)性,使存儲(chǔ)容量可達(dá)更高量級(jí),并且實(shí)現(xiàn)成本可控。

本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:

本發(fā)明的方法包括以下步驟:

步驟一:用戶通過(guò)客戶端遠(yuǎn)程上傳保存大容量數(shù)據(jù);

步驟二:對(duì)數(shù)據(jù)作切分處理;

步驟三:對(duì)每個(gè)數(shù)據(jù)切分塊做hash算法計(jì)算key值;

步驟四:客戶端將切分?jǐn)?shù)據(jù)塊的key值、數(shù)據(jù)唯一標(biāo)識(shí)信息和時(shí)間戳信息等進(jìn)行處理封裝,提交到服務(wù)器,服務(wù)器回傳每個(gè)數(shù)據(jù)分塊對(duì)應(yīng)的節(jié)點(diǎn)ip地址給客戶端,隨后開始并發(fā)數(shù)據(jù)上傳;

步驟五:虛擬環(huán)節(jié)點(diǎn)根據(jù)數(shù)據(jù)的時(shí)間戳和歷史模數(shù)獲取相應(yīng)的映射存儲(chǔ)節(jié)點(diǎn),將接收到的數(shù)據(jù)保存到物理介質(zhì)中,具體是依據(jù)存儲(chǔ)時(shí)間戳,判斷有無(wú)歷史存儲(chǔ);如果有,則進(jìn)入步驟六,如果沒有,根據(jù)當(dāng)前存儲(chǔ)節(jié)點(diǎn)模數(shù)映射到相應(yīng)存儲(chǔ)節(jié)點(diǎn),保存數(shù)據(jù),得到物理存儲(chǔ)節(jié)點(diǎn);

步驟六:根據(jù)存儲(chǔ)節(jié)點(diǎn)歷史模數(shù)記錄,取模運(yùn)算,映射到歷史存儲(chǔ)節(jié)點(diǎn),得到物理存儲(chǔ)節(jié)點(diǎn);

用戶需要遠(yuǎn)程下載數(shù)據(jù)時(shí),通過(guò)遠(yuǎn)程客戶端提交數(shù)據(jù)讀取請(qǐng)求,給出數(shù)據(jù)的唯一標(biāo)識(shí)信息和時(shí)間戳,從服務(wù)器獲取所有相關(guān)key值和映射到的虛擬環(huán)節(jié)點(diǎn)ip,訪問(wèn)節(jié)點(diǎn)下載數(shù)據(jù)。

所述虛擬環(huán)上的節(jié)點(diǎn)數(shù)量在環(huán)形空間保持恒定不變,而每個(gè)節(jié)點(diǎn)對(duì)應(yīng)了若干個(gè)物理存儲(chǔ)節(jié)點(diǎn),虛擬環(huán)節(jié)點(diǎn)在哈希空間中以哈希值排列。

進(jìn)一步,所述步驟二中,原始數(shù)據(jù)經(jīng)過(guò)切分后進(jìn)入map函數(shù)處理,經(jīng)過(guò)map函數(shù)處理的數(shù)據(jù)會(huì)在整個(gè)環(huán)形緩沖區(qū)里進(jìn)行第一次排序。

進(jìn)一步,所述步驟三中,map函數(shù)的輸出結(jié)果根據(jù)key值進(jìn)行hash映射,將數(shù)據(jù)量龐大的map輸出分割為n份來(lái)實(shí)現(xiàn)數(shù)據(jù)的并行處理,n為reduce數(shù)目

本發(fā)明的有益效果是:

本發(fā)明通過(guò)引用一致性哈希算法,可以減少由于增加結(jié)點(diǎn)導(dǎo)致數(shù)據(jù)項(xiàng)的數(shù)量來(lái)提高單調(diào)性,通過(guò)引入虛擬環(huán)和歷史模數(shù)表,可以避免由于存儲(chǔ)節(jié)點(diǎn)數(shù)變化導(dǎo)致數(shù)據(jù)移動(dòng)的問(wèn)題。通過(guò)本發(fā)明的方法,消除了存儲(chǔ)介質(zhì)規(guī)模對(duì)數(shù)據(jù)映射的影響,在保證負(fù)載均衡的基礎(chǔ)上,實(shí)現(xiàn)了云存儲(chǔ)容量的良好的冗余特性和高擴(kuò)展性。

本發(fā)明的其他優(yōu)點(diǎn)、目標(biāo)和特征在某種程度上將在隨后的說(shuō)明書中進(jìn)行闡述,并且在某種程度上,基于對(duì)下文的考察研究對(duì)本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實(shí)踐中得到教導(dǎo)。本發(fā)明的目標(biāo)和其他優(yōu)點(diǎn)可以通過(guò)下面的說(shuō)明書和權(quán)利要求書來(lái)實(shí)現(xiàn)和獲得。

附圖說(shuō)明

為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,其中:

圖1為本發(fā)明的方法流程示意圖;

圖2為本發(fā)明的虛擬環(huán)結(jié)構(gòu)示意圖;

圖3為本發(fā)明所述系統(tǒng)的結(jié)構(gòu)示意圖。

具體實(shí)施方式

以下將參照附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。應(yīng)當(dāng)理解,優(yōu)選實(shí)施例僅為了說(shuō)明本發(fā)明,而不是為了限制本發(fā)明的保護(hù)范圍。

如圖1所示,本發(fā)明的方法包括以下步驟:

步驟一:用戶通過(guò)客戶端遠(yuǎn)程上傳保存大容量數(shù)據(jù);

步驟二:對(duì)數(shù)據(jù)作切分處理;

步驟三:對(duì)每個(gè)數(shù)據(jù)切分塊做hash算法計(jì)算key值;

步驟四:客戶端將切分?jǐn)?shù)據(jù)塊的key值、數(shù)據(jù)唯一標(biāo)識(shí)信息和時(shí)間戳信息等進(jìn)行處理封裝,提交到服務(wù)器,服務(wù)器回傳每個(gè)數(shù)據(jù)分塊對(duì)應(yīng)的節(jié)點(diǎn)ip地址給客戶端,隨后開始并發(fā)數(shù)據(jù)上傳;

步驟五:虛擬環(huán)節(jié)點(diǎn)根據(jù)數(shù)據(jù)的時(shí)間戳和歷史模數(shù)獲取相應(yīng)的映射存儲(chǔ)節(jié)點(diǎn),將接收到的數(shù)據(jù)保存到物理介質(zhì)中,具體是依據(jù)存儲(chǔ)時(shí)間戳,判斷有無(wú)歷史存儲(chǔ);如果有,則進(jìn)入步驟六,如果沒有,根據(jù)當(dāng)前存儲(chǔ)節(jié)點(diǎn)模數(shù)映射到相應(yīng)存儲(chǔ)節(jié)點(diǎn),保存數(shù)據(jù),得到物理存儲(chǔ)節(jié)點(diǎn);

步驟六:根據(jù)存儲(chǔ)節(jié)點(diǎn)歷史模數(shù)記錄,取模運(yùn)算,映射到歷史存儲(chǔ)節(jié)點(diǎn),得到物理存儲(chǔ)節(jié)點(diǎn);

用戶需要遠(yuǎn)程下載數(shù)據(jù)時(shí),通過(guò)遠(yuǎn)程客戶端提交數(shù)據(jù)讀取請(qǐng)求,給出數(shù)據(jù)的唯一標(biāo)識(shí)信息和時(shí)間戳,從服務(wù)器獲取所有相關(guān)key值和映射到的虛擬環(huán)節(jié)點(diǎn)ip,訪問(wèn)節(jié)點(diǎn)下載數(shù)據(jù)。

其中,在步驟二中,原始數(shù)據(jù)經(jīng)過(guò)切分后進(jìn)入map函數(shù)處理,經(jīng)過(guò)map函數(shù)處理的數(shù)據(jù)會(huì)在整個(gè)環(huán)形緩沖區(qū)里進(jìn)行第一次排序。

步驟三中,map函數(shù)的輸出結(jié)果根據(jù)key值進(jìn)行hash映射,將數(shù)據(jù)量龐大的map輸出分割為n份來(lái)實(shí)現(xiàn)數(shù)據(jù)的并行處理,n為reduce數(shù)目。

有鑒于哈希算法在改變node數(shù)時(shí)會(huì)帶來(lái)巨大的數(shù)據(jù)遷移。為了解決這個(gè)問(wèn)題,本方法引入“虛擬環(huán)”的概念,并采用基于“虛擬環(huán)”映射空間的分布式存儲(chǔ)映射計(jì)算方法,主要目的是在改變集群的node數(shù)量時(shí)(增加/刪除服務(wù)器),能夠盡可能少地改變已存在key和node的映射關(guān)系,以滿足單調(diào)性。在該方法中,引入“虛擬環(huán)”映射空間概念,通過(guò)計(jì)算虛結(jié)點(diǎn),能夠減少移動(dòng)為特點(diǎn)來(lái)實(shí)現(xiàn)集群容量的自適應(yīng)性。具體步驟如下:

1、引入“虛擬環(huán)”映射空間

“虛擬環(huán)”上的節(jié)點(diǎn)數(shù)量在環(huán)形空間保持恒定不變,而每個(gè)節(jié)點(diǎn)對(duì)應(yīng)了若干個(gè)“物理”存儲(chǔ)節(jié)點(diǎn),“虛擬環(huán)”節(jié)點(diǎn)在哈??臻g中以哈希值排列。如圖2所示,引入了“虛擬環(huán)”后,映射關(guān)系就從【object--->node】轉(zhuǎn)換成了【object--->virtualnode--->cachenode】。

2、虛擬環(huán)節(jié)點(diǎn)到存儲(chǔ)節(jié)點(diǎn)的映射

由于虛擬環(huán)節(jié)點(diǎn)個(gè)數(shù)在集群的整個(gè)生命周期中是恒定不變的,它與數(shù)據(jù)項(xiàng)的映射關(guān)系不會(huì)發(fā)生變化,改變的僅是虛擬環(huán)node與存儲(chǔ)node的映射關(guān)系,所以需對(duì)以上代碼進(jìn)行優(yōu)化。在虛擬環(huán)節(jié)點(diǎn)上建立“存儲(chǔ)節(jié)點(diǎn)歷史模數(shù)表”,表中的數(shù)據(jù)項(xiàng)記錄虛擬環(huán)節(jié)點(diǎn)在某個(gè)歷史時(shí)間點(diǎn)所映射到的存儲(chǔ)節(jié)點(diǎn)的模數(shù)。

如1000個(gè)虛結(jié)點(diǎn)對(duì)應(yīng)著100個(gè)存儲(chǔ)結(jié)點(diǎn),存儲(chǔ)結(jié)點(diǎn)變動(dòng)時(shí),虛結(jié)點(diǎn)就需要重新分配到結(jié)點(diǎn)。當(dāng)100個(gè)結(jié)點(diǎn)擴(kuò)展到101個(gè)結(jié)點(diǎn)時(shí),此時(shí)至少有一個(gè)結(jié)點(diǎn)分配不到虛結(jié)點(diǎn),那么就需要再在歷史模數(shù)表中增加一項(xiàng)新的存儲(chǔ)節(jié)點(diǎn)數(shù)記錄,而虛結(jié)點(diǎn)是與數(shù)據(jù)項(xiàng)對(duì)應(yīng)的哈希關(guān)系,如果改變了虛節(jié)點(diǎn)數(shù),那么就需要重新分配所有的數(shù)據(jù)項(xiàng),這將導(dǎo)致移動(dòng)大量的數(shù)據(jù)。

3、預(yù)設(shè)合理的存儲(chǔ)節(jié)點(diǎn)數(shù)

所以在設(shè)置虛結(jié)點(diǎn)數(shù)的時(shí)候,需要對(duì)系統(tǒng)預(yù)期的規(guī)模做充分考慮,假如集群的規(guī)模不會(huì)超過(guò)6000個(gè)結(jié)點(diǎn),那么可以將虛結(jié)點(diǎn)數(shù)設(shè)置為結(jié)點(diǎn)數(shù)的100倍。這樣,變動(dòng)任意一個(gè)結(jié)點(diǎn)的負(fù)載僅影響1%的數(shù)據(jù)項(xiàng)。此時(shí)有6百萬(wàn)個(gè)vnode數(shù),使用2bytes來(lái)存儲(chǔ)結(jié)點(diǎn)數(shù)(0~65535)?;镜膬?nèi)存占用是6*106*2bytes=12mb,對(duì)于服務(wù)器來(lái)說(shuō)完全可以承受。

4、存儲(chǔ)節(jié)點(diǎn)映射的取模運(yùn)算

由于在虛擬環(huán)的節(jié)點(diǎn)上記錄了歷史模數(shù)表,存取數(shù)據(jù)時(shí)訪問(wèn)端數(shù)據(jù)應(yīng)攜帶時(shí)間戳,根據(jù)時(shí)間在虛擬環(huán)節(jié)點(diǎn)上通過(guò)獲取歷史模數(shù)表來(lái)進(jìn)行取模運(yùn)算,從而獲取數(shù)據(jù)的具體存儲(chǔ)節(jié)點(diǎn)。

如圖3所示,根據(jù)本發(fā)明的方法思路,本發(fā)明的系統(tǒng)包括云存儲(chǔ)客戶端和云存儲(chǔ)服務(wù)器端,云存儲(chǔ)客戶端包括若干終端和hash算法模塊,云存儲(chǔ)服務(wù)器端包括云存儲(chǔ)服務(wù)器、虛擬環(huán)控制模塊、存儲(chǔ)節(jié)點(diǎn)映射模塊、hash算法模塊、http數(shù)據(jù)傳輸接口模塊、物理介質(zhì)讀寫模塊和數(shù)據(jù)庫(kù)訪問(wèn)接口模塊。各組成部分有機(jī)結(jié)合,用于實(shí)現(xiàn)如前述的方法各步驟。本發(fā)明的方法和系統(tǒng)引用一致性哈希算法是為了減少由于增加結(jié)點(diǎn)導(dǎo)致數(shù)據(jù)項(xiàng)的數(shù)量來(lái)提高單調(diào)性,引入虛擬環(huán)和歷史模數(shù)表的目的是為了避免由于存儲(chǔ)節(jié)點(diǎn)數(shù)變化導(dǎo)致數(shù)據(jù)移動(dòng)的問(wèn)題。通過(guò)本發(fā)明的方法從理論上消除了存儲(chǔ)介質(zhì)規(guī)模對(duì)數(shù)據(jù)映射的影響,在保證負(fù)載均衡的基礎(chǔ)上,實(shí)現(xiàn)了云存儲(chǔ)容量的良好的冗余特性和高擴(kuò)展性。

最后說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
田阳县| 察隅县| 郓城县| 淅川县| 浦县| 哈巴河县| 楚雄市| 祁东县| 潜江市| 敖汉旗| 安宁市| 克什克腾旗| 蓬莱市| 洛浦县| 普兰店市| 新建县| 南城县| 永修县| 启东市| 香港| 通许县| 宝坻区| 麻江县| 靖西县| 上思县| 伊川县| 灵璧县| 郧西县| 安多县| 城市| 土默特右旗| 上思县| 灌南县| 耿马| 南溪县| 民县| 青岛市| 上林县| 进贤县| 张家口市| 常熟市|