一種分配遠程內(nèi)存的方法及裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種分配遠程內(nèi)存的方法及裝置,用于服務(wù)器節(jié)點集群,所述方法包括:建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系;當(dāng)有節(jié)點作為請求者請求分配遠程內(nèi)存時,在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。本發(fā)明實施例首先創(chuàng)建可以體現(xiàn)出各服務(wù)器節(jié)點的物理位置及可貢獻內(nèi)存大小的節(jié)點分布表,然后按照最短路徑優(yōu)先的思路為請求者分配遠程內(nèi)存,不但使請求者可以獲取到所需的內(nèi)存容量,更使得所獲取到的內(nèi)存因為最短路徑的優(yōu)勢在使用時效率更高。
【專利說明】—種分配遠程內(nèi)存的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云計算領(lǐng)域,尤其是涉及一種分配遠程內(nèi)存的方法及裝置。
【背景技術(shù)】
[0002]云計算產(chǎn)生的背景之一,便是幫助企業(yè)來處理海量的數(shù)據(jù),越來越多的數(shù)據(jù)也需要云計算的產(chǎn)品來幫助進行實時分析。而在做海量數(shù)據(jù)處理時,需要有大內(nèi)存容量的機器,所以云計算負載應(yīng)用對大內(nèi)存有強烈需求。而另一方面,云計算所借助的數(shù)據(jù)中心根據(jù)規(guī)模不同,通常由幾十臺、幾百臺、甚至上萬臺計算機服務(wù)器節(jié)點組成,這些服務(wù)器節(jié)點大部分都是采用市場上的商用標(biāo)準(zhǔn)服務(wù)器,它們擁有各自獨立的處理器、私有的內(nèi)存區(qū)域以及獨占的硬盤存儲空間。顯然單臺的服務(wù)器節(jié)點是無法滿足云計算對內(nèi)存的需要的,而當(dāng)在集群范圍內(nèi)實現(xiàn)了各個服務(wù)器節(jié)點可以使用其他遠程節(jié)點的內(nèi)存時,具體該如何在眾多的節(jié)點范圍內(nèi)合理、高效地分配遠程內(nèi)存,是一個不小的難題。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明實施例的目的是提供一種分配遠程內(nèi)存的方法及裝置,以解決集群范圍內(nèi)無法高效地分配遠程內(nèi)存的問題。
[0004]一方面,本發(fā)明實施例提供了一種分配遠程內(nèi)存的方法,用于服務(wù)器節(jié)點集群,所述方法包括:
[0005]建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系;
[0006]判斷是否有節(jié)點作為請求者請求分配遠程內(nèi)存,
[0007]若有,則在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。
[0008]優(yōu)選的,所述根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,包括:
[0009]a、判斷距離所述請求者< i跳范圍內(nèi)的周邊節(jié)點可貢獻內(nèi)存的總和是否大于等于所述請求者請求的內(nèi)存,若是,則繼續(xù)步驟b,若否,則令i增I,并執(zhí)行步驟a,其中i為自然數(shù)且初始時i=l ;
[0010]b、將所述周邊節(jié)點按照可貢獻內(nèi)存從小到大排序;
[0011]C、按照所述從小到大的順序判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,若存在,則將所述貢獻者可以貢獻的內(nèi)存分配給所述請求者,若不存在,則令i增1,執(zhí)行步驟a。
[0012]優(yōu)選的,所述按照所述從小到大的順序依次判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,包括:
[0013]按照所述從小到大的順序,逐一將所述周邊節(jié)點的可貢獻內(nèi)存與所述請求者所請求的內(nèi)存進行比較;
[0014]若所述請求的內(nèi)存小于等于所述周邊節(jié)點中一節(jié)點可貢獻的內(nèi)存,則停止比較,并將這一節(jié)點作為所述貢獻者;
[0015]若所述請求的內(nèi)存均大于所述周邊節(jié)點中任一節(jié)點可貢獻的內(nèi)存,則在所述周邊節(jié)點中選擇兩個或多個節(jié)點共同貢獻內(nèi)存,以滿足所述請求的內(nèi)存容量,并將所選擇的兩個或多個節(jié)點作為所述貢獻者,其中所述選擇的選擇策略為保證所選節(jié)點的數(shù)目最少。
[0016]優(yōu)選的,所述方法還包括:
[0017]在步驟a之前,判斷i是否達到預(yù)設(shè)的閾值,若是,則停止執(zhí)行并返回申請失敗信肩、O
[0018]優(yōu)選的,所述方法還包括:
[0019]在所述為所述請求者分配遠程內(nèi)存之后,通知所述貢獻者已貢獻給所述請求者的內(nèi)存大小,并在所述節(jié)點分布表中更改所述貢獻者可貢獻的內(nèi)存大小。
[0020]優(yōu)選的,所述方法還包括:
[0021]在所述建立節(jié)點分布表之后,周期性地向所述服務(wù)節(jié)點集群內(nèi)的各個節(jié)點發(fā)送狀態(tài)請求信號;
[0022]若節(jié)點返回正常心跳信號,則在所述節(jié)點分布表中維持該節(jié)點的存在,否則,從所述節(jié)點分布表中刪除該節(jié)點。
[0023]優(yōu)選的,所述方法還包括:
[0024]在所述為所述請求者分配遠程內(nèi)存之后,接收所述請求者發(fā)送的獲取所分配的遠程內(nèi)存的請求沒有獲得響應(yīng)的消息;
[0025]根據(jù)所述方法重新為所述請求者尋找貢獻者并分配遠程內(nèi)存。
[0026]另一方面,本發(fā)明實施例還提供了一種分配遠程內(nèi)存的裝置,用于服務(wù)器節(jié)點集群,所述裝置包括:
[0027]節(jié)點分布表建立單元,用于建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系;
[0028]內(nèi)存請求判斷單元,用于判斷是否有節(jié)點作為請求者請求分配遠程內(nèi)存,若有,則觸發(fā)內(nèi)存分配單元;
[0029]內(nèi)存分配單元,用于在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。
[0030]優(yōu)選的,所述內(nèi)存分配單元包括:
[0031]內(nèi)存總和判斷子單元,用于判斷距離所述請求者< i跳范圍內(nèi)的周邊節(jié)點可貢獻內(nèi)存的總和是否大于等于所述請求者請求的內(nèi)存,若是,則觸發(fā)節(jié)點排序子單元,若否,則觸發(fā)控制子單元,其中i為自然數(shù)且初始時i=l ;
[0032]節(jié)點排序子單元,用于將所述周邊節(jié)點按照可貢獻內(nèi)存從小到大排序;
[0033]內(nèi)存選擇子單元,用于按照所述從小到大的順序判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,若存在,則將所述貢獻者可以貢獻的內(nèi)存分配給所述請求者,若不存在,則觸發(fā)控制子單元;
[0034]流程控制子單元,用于令i增1,然后觸發(fā)內(nèi)存總和判斷子單元。
[0035]優(yōu)選的,所述內(nèi)存選擇子單元用于按照所述從小到大的順序依次判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者時,具體用于:
[0036]按照所述從小到大的順序,逐一將所述周邊節(jié)點的可貢獻內(nèi)存與所述請求者所請求的內(nèi)存進行比較;
[0037]若所述請求的內(nèi)存小于等于所述周邊節(jié)點中一節(jié)點可貢獻的內(nèi)存,則停止比較,并將這一節(jié)點作為所述貢獻者;
[0038]若所述請求的內(nèi)存均大于所述周邊節(jié)點中任一節(jié)點可貢獻的內(nèi)存,則在所述周邊節(jié)點中選擇兩個或多個節(jié)點共同貢獻內(nèi)存,以滿足所述請求的內(nèi)存容量,并將所選擇的兩個或多個節(jié)點作為所述貢獻者,其中所述選擇的選擇策略為保證所選節(jié)點的數(shù)目最少。
[0039]優(yōu)選的,所述內(nèi)存分配單元還包括:
[0040]結(jié)束判斷子單元,用于在觸發(fā)內(nèi)存總和判斷子單元之前判斷i是否達到預(yù)設(shè)的閾值,若是,則停止執(zhí)行并返回申請失敗信息。
[0041]優(yōu)選的,所述裝置還包括:
[0042]內(nèi)存變更響應(yīng)單元,用于通知所述貢獻者已貢獻給所述請求者的內(nèi)存大小,并在所述節(jié)點分布表中更改所述貢獻者可貢獻的內(nèi)存大小。
[0043]優(yōu)選的,所述裝置還包括:
[0044]節(jié)點維護單元,用于周期性地向所述服務(wù)節(jié)點集群內(nèi)的各個節(jié)點發(fā)送狀態(tài)請求信號,若節(jié)點返回正常心跳信號,則在所述節(jié)點分布表中維持該節(jié)點的存在,否則,從所述節(jié)點分布表中刪除該節(jié)點。
[0045]優(yōu)選的,所述裝置還包括:
[0046]異常處理單元,用于接收所述請求者發(fā)送的請求獲取所分配的遠程內(nèi)存的請求沒有獲得響應(yīng)的消息,并重新觸發(fā)內(nèi)存分配單元。
[0047]本發(fā)明實施例首先通過資源管理系統(tǒng)創(chuàng)建并維護一張可以體現(xiàn)出集群內(nèi)各服務(wù)器節(jié)點的物理位置及可貢獻內(nèi)存大小的節(jié)點分布表,然后在分配遠程內(nèi)存的時候使用一種對物理位置敏感的分配策略,即考慮請求者和提供者之間的距離遠近,按照最短路徑優(yōu)先的思路為請求者分配遠程內(nèi)存,從而不但使請求者可以獲取到所需的內(nèi)存容量,更使得所獲取到的內(nèi)存因為最短路徑的優(yōu)勢在使用時效率更高。
【專利附圖】
【附圖說明】
[0048]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0049]圖1是基于云控制芯片的系統(tǒng)組件示意圖;
[0050]圖2是云控制芯片的組成與架構(gòu)示意圖;
[0051]圖3是實現(xiàn)資源按需分配的示意圖;
[0052]圖4是本發(fā)明實例一方法的流程圖;
[0053]圖5是節(jié)點分布表拓撲結(jié)構(gòu)示意圖;
[0054]圖6是按照由近及遠地方式分配遠程內(nèi)存的詳細流程圖;
[0055]圖7?11是本發(fā)明實施例二中執(zhí)行各步驟時所對應(yīng)的節(jié)點分布表變化示意圖;
[0056]圖12是本發(fā)明實施例三裝置的示意圖。
【具體實施方式】
[0057]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0058]本發(fā)明的方法是建立在集群范圍內(nèi)各服務(wù)器節(jié)點可以彼此借用遠程內(nèi)存這一基礎(chǔ)之上的,故下面先對如何實現(xiàn)服務(wù)器節(jié)點之間借用遠程內(nèi)存做一個簡要的說明:
[0059]在現(xiàn)有技術(shù)中,當(dāng)需要借助遠程內(nèi)存時可以采用遠程直接數(shù)據(jù)存取(RDMA)技術(shù)。RDMA讓計算機可以直接存取其它計算機的內(nèi)存,而不需要經(jīng)過處理器耗時的傳輸,具有使一臺計算機直接將數(shù)據(jù)通過網(wǎng)絡(luò)傳送到另一臺計算機內(nèi)存中的特性,它將數(shù)據(jù)從一個系統(tǒng)快速移動到遠程系統(tǒng)存儲器中,而不對操作系統(tǒng)造成任何影響。圖1展示了 RDMA數(shù)據(jù)流的傳輸示意過程。相比傳統(tǒng)的緩沖區(qū)拷貝技術(shù)(Buffer copy)和帶有DMA引擎的緩沖區(qū)拷貝技術(shù)(Buffer copy with DMA engine), RDMA技術(shù)通過消除外部存儲器復(fù)制和文本交換操作,因而能騰出總線空間和CPU周期用于改進應(yīng)用系統(tǒng)性能,從而減少對帶寬和處理器開銷的需要,顯著降低了時延。
[0060]但是,RDMA是一種點對點協(xié)議,不但需要在每臺服務(wù)器上均安裝專用網(wǎng)卡(如高端以太網(wǎng)卡或者IB網(wǎng)卡),致使RDMA的硬件實現(xiàn)成本較高,而且更重要的是,RDMA技術(shù)并不能在數(shù)據(jù)中心中對遠程內(nèi)存資源進行合理地、高效地分配,即無法在集群范圍內(nèi)實現(xiàn)各個節(jié)點動態(tài)地使用其他遠程節(jié)點的內(nèi)存。
[0061]在本發(fā)明中,為了實現(xiàn)服務(wù)器節(jié)點之間可以借用遠程內(nèi)存,即為了實現(xiàn)在數(shù)據(jù)中心中動態(tài)分配資源特別是內(nèi)存資源,本發(fā)明使所有節(jié)點都包含一顆云控制芯片,并使用相同的接口和系統(tǒng)中其它節(jié)點相連。一個板子上可以集成不同的處理器和其它部件。云控制芯片提供PCIe和自主設(shè)計的接口用來連接處理器芯片。自主設(shè)計的接口為處理器芯片和云控制芯片直接通信做了優(yōu)化,用來連接自主可控的處理器芯片。PCIe接口可以連接任何帶PCIe端口處理器芯片,它的通信效率受PCIe所限制,但是接納市場上絕大部分的CPU芯片和GPU、FPGA等其他計算加速芯片。譬如,支持通用性的系統(tǒng)可以連接主流x86服務(wù)器芯片,支持高性能計算的系統(tǒng)可以連接GPU芯片。需要大內(nèi)存的系統(tǒng),可以按需采用“內(nèi)存節(jié)點”。一個內(nèi)存節(jié)點沒有處理器芯片,只有一塊或數(shù)塊云控制芯片??蓞⒁妶Dla、lb所示,圖la、Ib均是基于云控制芯片的系統(tǒng)組件示意圖,圖1a為ARM計算節(jié)點,圖1b為大容量內(nèi)存節(jié)點。
[0062]本發(fā)明提出的遠程內(nèi)存使用方法和機制依靠云控制芯片和資源管理系統(tǒng)來實現(xiàn)。它們管理數(shù)據(jù)中心服務(wù)器系統(tǒng)中的計算、內(nèi)存、互連等資源,形成計算云、內(nèi)存云、1云。云控制芯片主要由片上交換網(wǎng)絡(luò),一體化內(nèi)存控制模塊,I/o設(shè)備虛擬化控制器,硬件實現(xiàn)的通信協(xié)議棧,以及PCIe接口和服務(wù)處理核等模塊組成,圖2示出了云控制芯片的組成與架構(gòu)。
[0063]本發(fā)明中,遠程內(nèi)存的使用通過軟件APKApplicat1n Programming Interface,應(yīng)用程序編程接口)進行:首先通過向資源管理系統(tǒng)發(fā)起申請,通過互連網(wǎng)絡(luò),動態(tài)將多個節(jié)點間的資源有機組合起來,實現(xiàn)虛擬服務(wù)器;之后,一旦組合成功,這些物理資源被虛擬服務(wù)器獨占式使用;在使用完畢后,需要將上述資源歸還給資源管理系統(tǒng)。在硬件實現(xiàn)上,通過增加對應(yīng)的硬件管理和地址翻譯機制,以及高速I/O通信棧來保障遠程的節(jié)點訪問。
[0064]在此過程中,數(shù)據(jù)中心的資源管理系統(tǒng)可以集中位于某服務(wù)器節(jié)點或分布式管理,負責(zé)收集、管理、分配各個節(jié)點資源,包括各個節(jié)點貢獻出來的內(nèi)存資源,并對各個節(jié)點上云控制芯片內(nèi)的RTLB(Remote Translat1n Lookaside Buffer:一種由本地物理地址至遠程節(jié)點編號和遠程節(jié)點物理地址的轉(zhuǎn)換表)進行初始化、設(shè)置和更新等操作;本發(fā)明中,可向其他服務(wù)器節(jié)點提供或貢獻內(nèi)存容量的節(jié)點稱為貢獻節(jié)點或貢獻者;由貢獻節(jié)點提供數(shù)據(jù)中心范圍內(nèi)其他節(jié)點使用的內(nèi)存空間稱為被貢獻內(nèi)存;申請和使用這些被貢獻內(nèi)存的節(jié)點稱為請求節(jié)點或請求者。
[0065]圖3a、3b給出了實現(xiàn)資源按需分配的示意圖。其中圖3a示出了 4臺獨立的傳統(tǒng)計算機節(jié)點,而經(jīng)過本發(fā)明以上技術(shù)處理后,各種資源通過整合分別形成計算云、內(nèi)存云、存儲云以及互連云,參見圖3b所示。這樣就不再有傳統(tǒng)計算機節(jié)點的概念和邊界。通過資源調(diào)度和按需分配,就形成了多臺虛擬服務(wù)器。比如,圖3b左側(cè)虛線框內(nèi)的資源形成了第一臺虛擬服務(wù)器,而右側(cè)虛線框形成的第二臺虛擬服務(wù)器則與第一臺進行了有效的資源調(diào)度和共享。
[0066]以上內(nèi)容簡要描述了本發(fā)明是如何使各節(jié)點之間能夠使用遠程內(nèi)存,S卩如何使集群范圍內(nèi)的內(nèi)存動態(tài)分配成為現(xiàn)實。那么接下來更進一步的,如何合理、高效地去分配遠程內(nèi)存,便是本發(fā)明要著重解決的問題。下面進行詳細描述:
[0067]實施例一
[0068]參見圖4,為本發(fā)明實例一方法的流程圖,所述方法為一種分配遠程內(nèi)存的方法,其特征在于,用于服務(wù)器節(jié)點集群,所述方法包括:
[0069]S401、建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系。
[0070]在本實施例中,節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系,其中各節(jié)點之間的連接關(guān)系也可以說是各節(jié)點之間的拓撲結(jié)構(gòu)。在本發(fā)明某些實施例中,這個節(jié)點分布表可以只有一張,而且保存在全局管理者(如資源管理系統(tǒng))那里。而具體如何記錄所述拓撲結(jié)構(gòu)可以有很多種方式,例如:可以直接記錄下所有節(jié)點間兩兩之間的連接關(guān)系;或者從每個節(jié)點出發(fā),記錄所有與該節(jié)點直接或間接相連的節(jié)點,甚至也可以只記錄所有與該節(jié)點直連的節(jié)點(可以推出來所有節(jié)點間兩兩之間的連接關(guān)系)。在本實施例中,是由資源管理系統(tǒng)負責(zé)遠程內(nèi)存的分配,資源管理系統(tǒng)集中位于某服務(wù)器節(jié)點或分布式管理,負責(zé)收集、管理、分配各個節(jié)點資源,包括各個節(jié)點貢獻出來的內(nèi)存資源,并對各個節(jié)點上云控制芯片內(nèi)的RTLB進行初始化、設(shè)置和更新等操作。在分配時的基本思路是考慮請求者和提供者之間的距離遠近,即最短路徑優(yōu)先原則。涵蓋全局的資源管理系統(tǒng)實時監(jiān)控每個節(jié)點的參數(shù)(包括物理位置,內(nèi)存使用情況,負載情況,健康狀況等),然后依據(jù)請求者的物理位置來選取合適的內(nèi)存提供者。資源管理者系統(tǒng)在滿足一定距離范圍內(nèi)(如網(wǎng)絡(luò)中若干hop之內(nèi)的節(jié)點)去選取提供者提供內(nèi)存。所述節(jié)點分布表用拓撲結(jié)構(gòu)表示時可參見圖5所示,圖中Corel、Core2等代表各個服務(wù)器節(jié)點的處理器核,即CPU。
[0071]S402、判斷是否有節(jié)點作為請求者請求分配遠程內(nèi)存。
[0072]S403、若有,則在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。
[0073]本實施例所述的距離,主要包括其他節(jié)點到所述請求者的路由的跳數(shù)(hop),或者也可以看成是通信轉(zhuǎn)發(fā)的次數(shù)。在計算機網(wǎng)絡(luò)中,一個hop是指從一個主機(或路由器)到下一個路由器。由于本發(fā)明使用內(nèi)嵌路由功能的云控制芯片,因此hop在本發(fā)明中也可以指從一個服務(wù)器節(jié)點到下一個服務(wù)器節(jié)點。從拓撲結(jié)構(gòu)的角度來看,兩節(jié)點間的距離即將這兩節(jié)點相連所經(jīng)過的最少的邊數(shù),若只需要經(jīng)過一條邊,則這兩節(jié)點即直接相連。在本發(fā)明某些實施例中,優(yōu)選的所述根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,可以具體包括:
[0074]a、判斷距離所述請求者< i跳范圍內(nèi)的周邊節(jié)點可貢獻內(nèi)存的總和是否大于等于所述請求者請求的內(nèi)存,若是,則繼續(xù)步驟b,若否,則令i增I,并執(zhí)行步驟a,其中i為自然數(shù)且初始時i=l ;
[0075]b、將所述周邊節(jié)點按照可貢獻內(nèi)存從小到大排序;
[0076]C、按照所述從小到大的順序判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,若存在,則將所述貢獻者可以貢獻的內(nèi)存分配給所述請求者,若不存在,則令i增1,執(zhí)行步驟a。
[0077]在本發(fā)明某些實施例中,優(yōu)選的步驟c中所述按照所述從小到大的順序依次判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,可以具體包括:
[0078]按照所述從小到大的順序,逐一將所述周邊節(jié)點的可貢獻內(nèi)存容量與所述請求者所請求的內(nèi)存容量進行比較;
[0079]若所述請求的內(nèi)存容量小于等于所述周邊節(jié)點中一節(jié)點可貢獻的內(nèi)存容量,則停止比較,并將這一節(jié)點作為所述貢獻者;
[0080]若所述請求的內(nèi)存容量均大于所述周邊節(jié)點中任一節(jié)點可貢獻的內(nèi)存容量,則在所述周邊節(jié)點中選擇兩個或多個節(jié)點共同貢獻內(nèi)存,以滿足所述請求的內(nèi)存容量,并將所選擇的兩個或多個節(jié)點作為所述貢獻者,其中所述選擇的選擇策略為保證所選的節(jié)點的數(shù)目最少。
[0081]此外,在本發(fā)明某些實施例中,所述方法還可以包括:
[0082]在步驟a之前,判斷i是否達到預(yù)設(shè)的閾值,若是,則停止執(zhí)行并返回申請失敗信肩、O
[0083]經(jīng)過上面的敘述可以看出:首先是由請求節(jié)點發(fā)起遠程內(nèi)存請求,內(nèi)含請求的內(nèi)存容量。然后資源管理系統(tǒng)先查找距離請求節(jié)點一跳的周邊鄰近節(jié)點,將鄰近節(jié)點中可被貢獻內(nèi)存的信息進行統(tǒng)計,并按容量從小至大排序,可以避免內(nèi)存的浪費。如果一跳的鄰近節(jié)點中被貢獻內(nèi)存的總?cè)萘看笥诨虻扔谡埱笕萘?,則將請求內(nèi)存容量與可貢獻內(nèi)存容量從小至大進行逐一比較:如果請求內(nèi)存容量小于某節(jié)點的可貢獻內(nèi)存容量,則停止比較,并將此可貢獻內(nèi)存區(qū)域標(biāo)記給請求節(jié)點;如果請求內(nèi)存容量大于單一節(jié)點的可貢獻內(nèi)存容量,則在一跳的鄰近節(jié)點中選擇兩個或多個節(jié)點,共同貢獻內(nèi)存,以滿足請求容量。選擇策略,應(yīng)盡量保證使用的貢獻節(jié)點數(shù)目最小。如果一跳的鄰近節(jié)點沒有可貢獻的內(nèi)存空間或可貢獻的內(nèi)存總?cè)萘坎蛔阋詽M足請求總量,則資源管理系統(tǒng)查找距離請求節(jié)點兩跳的周邊節(jié)點,將一跳和兩跳節(jié)點中可被貢獻內(nèi)存的信息進行統(tǒng)計,并按容量從小至大排序。如果一跳和兩跳的鄰近節(jié)點中被貢獻內(nèi)存的總?cè)萘看笥诨虻扔谡埱笕萘?,則將請求內(nèi)存容量與可貢獻內(nèi)存容量從小至大進行逐一比較,選擇貢獻節(jié)點,具體可依據(jù)上述“一跳內(nèi)”的辦法來選取。如果兩跳距離內(nèi)的節(jié)點依舊不能滿足請求,則查找三跳、四跳、甚至更遠的周邊節(jié)點,依此類推,直至滿足請求節(jié)點的請求或達到閾值。圖6是按照以上由近及遠地方式分配遠程內(nèi)存的詳細流程圖。
[0084]此外在本發(fā)明某些實施例中,所述方法還可以包括:
[0085]在所述為所述請求者分配遠程內(nèi)存之后,通知所述貢獻者已貢獻給所述請求者的內(nèi)存容量,并在所述節(jié)點分布表中更改所述貢獻者可貢獻的內(nèi)存容量。
[0086]在本發(fā)明某些實施例中,所述方法還可以包括:
[0087]在所述根據(jù)每個節(jié)點可貢獻內(nèi)存大小和物理位置建立節(jié)點分布表之后:
[0088]I)周期性地向所述服務(wù)節(jié)點集群內(nèi)的各個節(jié)點發(fā)送狀態(tài)請求信號;
[0089]2)若節(jié)點返回正常心跳信號,則在所述節(jié)點分布表中維持該節(jié)點的存在,否則,從所述節(jié)點分布表中刪除該節(jié)點。換句話說,如果貢獻節(jié)點沒有返回應(yīng)答信號(如此節(jié)點宕機),則資源管理系統(tǒng)可認為此貢獻節(jié)點已經(jīng)停止貢獻,需要刪除表中的相應(yīng)條目。此外,如果有節(jié)點正在使用該節(jié)點的內(nèi)存,則資源管理系統(tǒng)還需通使用節(jié)點。
[0090]在本發(fā)明某些實施例中,所述方法還可以包括:
[0091]在為所述請求者分配遠程內(nèi)存之后:
[0092]i)接收所述請求者發(fā)送的獲取所分配的遠程內(nèi)存的請求沒有獲得響應(yīng)的消息;
[0093]ii)根據(jù)所述方法重新為所述請求者尋找貢獻者并分配遠程內(nèi)存。
[0094]換句話說,在資源管理系統(tǒng)發(fā)現(xiàn)貢獻節(jié)點停止貢獻(如發(fā)生了單點故障)之前,請求者可能已經(jīng)發(fā)現(xiàn)向貢獻者發(fā)出的遠程內(nèi)存請求沒有獲得響應(yīng),則請求者不再向此貢獻者發(fā)出請求,同時通知資源管理系統(tǒng),并請求在周邊其他貢獻節(jié)點中為其分配距離最近且滿足容量需求的內(nèi)存。以上I)?2 )或i )?i i )可以分別使用或聯(lián)合使用,形成本實施例的單點故障解決機制。
[0095]此外,在本發(fā)明某些實施例中可以再增加信息收集手段:由云控制芯片收集當(dāng)前節(jié)點上的鏈路帶寬利用率和內(nèi)存利用率,然后通過云控制芯片傳遞上述信息至每個芯片中的服務(wù)處理器核,再由服務(wù)處理器核配合資源管理調(diào)度系統(tǒng)對帶寬、內(nèi)存等資源進行動態(tài)調(diào)度。
[0096]本實施例首先通過資源管理系統(tǒng)創(chuàng)建并維護一張可以體現(xiàn)出集群內(nèi)各服務(wù)器節(jié)點的物理位置及可貢獻內(nèi)存大小的節(jié)點分布表,然后在分配遠程內(nèi)存的時候使用一種對物理位置敏感的分配策略,即考慮請求者和提供者之間的距離遠近,按照最短路徑優(yōu)先的思路為請求者分配遠程內(nèi)存,從而不但使請求者可以獲取到所需的內(nèi)存容量,更使得所獲取到的內(nèi)存因為最短路徑的優(yōu)勢在使用時效率更高。
[0097]實施例二
[0098]下面以上述實施例為基礎(chǔ)并結(jié)合具體場景對本發(fā)明做進一步闡述,參見圖7?圖11所示,是本發(fā)明實施例二中執(zhí)行各步驟時所對應(yīng)的節(jié)點分布表變化示意圖:
[0099]圖7:某一時刻,Core6需要額外的8G內(nèi)存,可是自身內(nèi)存已經(jīng)滿足不了需求,于是向資源管理系統(tǒng)提出內(nèi)存分配請求。資源管理系統(tǒng)根據(jù)各個節(jié)點與請求者的距離,將節(jié)點進行分類,可以分為Ihop范圍、2hop范圍....。圖中“空4G”表示本節(jié)點上有4G內(nèi)存空余,“用4G”表示本節(jié)點上有4G內(nèi)存正在被使用。
[0100]圖8:資源管理系統(tǒng)首先從距離比較近的那類節(jié)點上申請物理內(nèi)存分配給請求節(jié)點,并不要求某一個節(jié)點一次性滿足請求,可以提供部分幫助,單位為1G。例如先向C0re2發(fā)出請求。
[0101]圖9:Core2只能提供4G,提供后,Core2、Core6都得修改內(nèi)存控制器當(dāng)中的內(nèi)存配置表,同時資源管理系統(tǒng)繼續(xù)向Core5發(fā)出請求。
[0102]圖10:Core5提供剩余4G給請求者,同時,Core5和Core6內(nèi)存控制器中的內(nèi)存配置表進行相應(yīng)的更改。至此,一個分配任務(wù)結(jié)束,只要資源管理系統(tǒng)一次只處理一個分配任務(wù),那么即可保證一致性。
[0103]圖11:當(dāng)Core6不再需要占用別人的物理內(nèi)存時,向資源管理系統(tǒng)提出申請。資源管理系統(tǒng)通過Core6內(nèi)存管理器當(dāng)中的內(nèi)存配置選項,釋放相應(yīng)節(jié)點的內(nèi)存,Core2,Core5釋放之前分配給Core6的內(nèi)存,同時修改內(nèi)存控制器當(dāng)中的內(nèi)存配置表。
[0104]本實施例首先通過資源管理系統(tǒng)創(chuàng)建并維護一張可以體現(xiàn)出集群內(nèi)各服務(wù)器節(jié)點的物理位置及可貢獻內(nèi)存大小的節(jié)點分布表,然后在分配遠程內(nèi)存的時候使用一種對物理位置敏感的分配策略,即考慮請求者和提供者之間的距離遠近,按照最短路徑優(yōu)先的思路為請求者分配遠程內(nèi)存,從而不但使請求者可以獲取到所需的內(nèi)存容量,更使得所獲取到的內(nèi)存因為最短路徑的優(yōu)勢在使用時效率更高。
[0105]實施例三
[0106]圖12是本發(fā)明實施例三裝置的示意圖,本實施例與上述兩個方法實施例相對應(yīng),提供了一種分配遠程內(nèi)存的裝置1200,用于服務(wù)器節(jié)點集群,所述裝置1200包括:
[0107]節(jié)點分布表建立單元1201,用于建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系;
[0108]內(nèi)存請求判斷單元1202,用于判斷是否有節(jié)點作為請求者請求分配遠程內(nèi)存,若有,則觸發(fā)內(nèi)存分配單元1203 ;
[0109]內(nèi)存分配單元1203,用于在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。
[0110]優(yōu)選的,所述內(nèi)存分配單元1203具體可以包括:
[0111]內(nèi)存總和判斷子單元,用于判斷距離所述請求者< i跳范圍內(nèi)的周邊節(jié)點可貢獻內(nèi)存的總和是否大于等于所述請求者請求的內(nèi)存,若是,則觸發(fā)節(jié)點排序子單元,若否,則觸發(fā)控制子單元,其中i為自然數(shù)且初始時i=l ;
[0112]節(jié)點排序子單元,用于將所述周邊節(jié)點按照可貢獻內(nèi)存從小到大排序;
[0113]內(nèi)存選擇子單元,用于按照所述從小到大的順序判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,若存在,則將所述貢獻者可以貢獻的內(nèi)存分配給所述請求者,若不存在,則觸發(fā)控制子單元;
[0114]流程控制子單元,用于令i增1,然后觸發(fā)內(nèi)存總和判斷子單元。
[0115]優(yōu)選的,所述內(nèi)存選擇子單元用于按照所述從小到大的順序依次判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者時,具體用于:
[0116]按照所述從小到大的順序,逐一將所述周邊節(jié)點的可貢獻內(nèi)存與所述請求者所請求的內(nèi)存進行比較;
[0117]若所述請求的內(nèi)存小于等于所述周邊節(jié)點中一節(jié)點可貢獻的內(nèi)存,則停止比較,并將這一節(jié)點作為所述貢獻者;
[0118]若所述請求的內(nèi)存均大于所述周邊節(jié)點中任一節(jié)點可貢獻的內(nèi)存,則在所述周邊節(jié)點中選擇兩個或多個節(jié)點共同貢獻內(nèi)存,以滿足所述請求的內(nèi)存容量,并將所選擇的兩個或多個節(jié)點作為所述貢獻者,其中所述選擇的選擇策略為保證所選節(jié)點的數(shù)目最少。
[0119]優(yōu)選的,所述內(nèi)存分配單元1203具體還可以包括:
[0120]結(jié)束判斷子單元,用于在觸發(fā)內(nèi)存總和判斷子單元之前判斷i是否達到預(yù)設(shè)的閾值,若是,則停止執(zhí)行并返回申請失敗信息。
[0121]優(yōu)選的,所述裝置1200還可以包括:
[0122]內(nèi)存變更響應(yīng)單元1204,用于通知所述貢獻者已貢獻給所述請求者的內(nèi)存大小,并在所述節(jié)點分布表中更改所述貢獻者可貢獻的內(nèi)存大小。
[0123]優(yōu)選的,所述裝置1200還可以包括:
[0124]節(jié)點維護單元1205,用于周期性地向所述服務(wù)節(jié)點集群內(nèi)的各個節(jié)點發(fā)送狀態(tài)請求信號,若節(jié)點返回正常心跳信號,則在所述節(jié)點分布表中維持該節(jié)點的存在,否則,從所述節(jié)點分布表中刪除該節(jié)點。
[0125]優(yōu)選的,所述裝置1200還可以包括:
[0126]異常處理單元1206,用于接收所述請求者發(fā)送的請求獲取所分配的遠程內(nèi)存的請求沒有獲得響應(yīng)的消息,并重新觸發(fā)內(nèi)存分配單元。
[0127]對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0128]本實施例首先通過資源管理系統(tǒng)創(chuàng)建并維護一張可以體現(xiàn)出集群內(nèi)各服務(wù)器節(jié)點的物理位置及可貢獻內(nèi)存大小的節(jié)點分布表,然后在分配遠程內(nèi)存的時候使用一種對物理位置敏感的分配策略,即考慮請求者和提供者之間的距離遠近,按照最短路徑優(yōu)先的思路為請求者分配遠程內(nèi)存,從而不但使請求者可以獲取到所需的內(nèi)存容量,更使得所獲取到的內(nèi)存因為最短路徑的優(yōu)勢在使用時效率更高。
[0129]本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
[0130]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:R0M、RAM、磁碟、光盤等。
[0131]還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0132]以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了閘述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。
【權(quán)利要求】
1.一種分配遠程內(nèi)存的方法,用于服務(wù)器節(jié)點集群,其特征在于,所述方法包括: 建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系; 判斷是否有節(jié)點作為請求者請求分配遠程內(nèi)存, 若有,則在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,包括: a、判斷距離所述請求者<i跳范圍內(nèi)的周邊節(jié)點可貢獻內(nèi)存的總和是否大于等于所述請求者請求的內(nèi)存,若是,則繼續(xù)步驟b,若否,則令i增I,并執(zhí)行步驟a,其中i為自然數(shù)且初始時i=l ; b、將所述周邊節(jié)點按照可貢獻內(nèi)存從小到大排序; C、按照所述從小到大的順序判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,若存在,則將所述貢獻者可以貢獻的內(nèi)存分配給所述請求者,若不存在,則令i增1,執(zhí)行步驟a。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述按照所述從小到大的順序依次判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,包括: 按照所述從小到大的順序,逐一將所述周邊節(jié)點的可貢獻內(nèi)存與所述請求者所請求的內(nèi)存進行比較; 若所述請求的內(nèi)存小于等于所述周邊節(jié)點中一節(jié)點可貢獻的內(nèi)存,則停止比較,并將這一節(jié)點作為所述貢獻者; 若所述請求的內(nèi)存均大于所述周邊節(jié)點中任一節(jié)點可貢獻的內(nèi)存,則在所述周邊節(jié)點中選擇兩個或多個節(jié)點共同貢獻內(nèi)存,以滿足所述請求的內(nèi)存容量,并將所選擇的兩個或多個節(jié)點作為所述貢獻者,其中所述選擇的選擇策略為保證所選節(jié)點的數(shù)目最少。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 在步驟a之前,判斷i是否達到預(yù)設(shè)的閾值,若是,則停止執(zhí)行并返回申請失敗信息。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在所述為所述請求者分配遠程內(nèi)存之后,通知所述貢獻者已貢獻給所述請求者的內(nèi)存大小,并在所述節(jié)點分布表中更改所述貢獻者可貢獻的內(nèi)存大小。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在所述建立節(jié)點分布表之后,周期性地向所述服務(wù)節(jié)點集群內(nèi)的各個節(jié)點發(fā)送狀態(tài)請求信號; 若節(jié)點返回正常心跳信號,則在所述節(jié)點分布表中維持該節(jié)點的存在,否則,從所述節(jié)點分布表中刪除該節(jié)點。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在所述為所述請求者分配遠程內(nèi)存之后,接收所述請求者發(fā)送的獲取所分配的遠程內(nèi)存的請求沒有獲得響應(yīng)的消息; 根據(jù)所述方法重新為所述請求者尋找貢獻者并分配遠程內(nèi)存。
8.—種分配遠程內(nèi)存的裝置,用于服務(wù)器節(jié)點集群,其特征在于,所述裝置包括: 節(jié)點分布表建立單元,用于建立節(jié)點分布表,所述節(jié)點分布表包括每個節(jié)點可貢獻內(nèi)存大小以及各節(jié)點之間的連接關(guān)系; 內(nèi)存請求判斷單元,用于判斷是否有節(jié)點作為請求者請求分配遠程內(nèi)存,若有,則觸發(fā)內(nèi)存分配單元; 內(nèi)存分配單元,用于在所述節(jié)點分布表內(nèi)以所述請求者為中心、根據(jù)距離由近及遠尋找可以作為貢獻者的節(jié)點并為所述請求者分配遠程內(nèi)存,所述距離包括其他節(jié)點到所述請求者的路由的跳數(shù)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述內(nèi)存分配單元包括: 內(nèi)存總和判斷子單元,用于判斷距離所述請求者< i跳范圍內(nèi)的周邊節(jié)點可貢獻內(nèi)存的總和是否大于等于所述請求者請求的內(nèi)存,若是,則觸發(fā)節(jié)點排序子單元,若否,則觸發(fā)控制子單元,其中i為自然數(shù)且初始時i=l ; 節(jié)點排序子單元,用于將所述周邊節(jié)點按照可貢獻內(nèi)存從小到大排序; 內(nèi)存選擇子單元,用于按照所述從小到大的順序判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者,若存在,則將所述貢獻者可以貢獻的內(nèi)存分配給所述請求者,若不存在,則觸發(fā)控制子單元; 流程控制子單元,用于令i增1,然后觸發(fā)內(nèi)存總和判斷子單元。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述內(nèi)存選擇子單元用于按照所述從小到大的順序依次判斷所述周邊節(jié)點中是否存在可以單獨或共同提供請求者所需內(nèi)存的一個或多個周邊節(jié)點以作為貢獻者時,具體用于: 按照所述從小到大的順序,逐一將所述周邊節(jié)點的可貢獻內(nèi)存與所述請求者所請求的內(nèi)存進行比較; 若所述請求的內(nèi)存小于等于所述周邊節(jié)點中一節(jié)點可貢獻的內(nèi)存,則停止比較,并將這一節(jié)點作為所述貢獻者; 若所述請求的內(nèi)存均大于所述周邊節(jié)點中任一節(jié)點可貢獻的內(nèi)存,則在所述周邊節(jié)點中選擇兩個或多個節(jié)點共同貢獻內(nèi)存,以滿足所述請求的內(nèi)存容量,并將所選擇的兩個或多個節(jié)點作為所述貢獻者,其中所述選擇的選擇策略為保證所選節(jié)點的數(shù)目最少。
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述內(nèi)存分配單元還包括: 結(jié)束判斷子單元,用于在觸發(fā)內(nèi)存總和判斷子單元之前判斷i是否達到預(yù)設(shè)的閾值,若是,則停止執(zhí)行并返回申請失敗信息。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 內(nèi)存變更響應(yīng)單元,用于通知所述貢獻者已貢獻給所述請求者的內(nèi)存大小,并在所述節(jié)點分布表中更改所述貢獻者可貢獻的內(nèi)存大小。
13.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 節(jié)點維護單元,用于周期性地向所述服務(wù)節(jié)點集群內(nèi)的各個節(jié)點發(fā)送狀態(tài)請求信號,若節(jié)點返回正常心跳信號,則在所述節(jié)點分布表中維持該節(jié)點的存在,否則,從所述節(jié)點分布表中刪除該節(jié)點。
14.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 異常處理單元,用于接收所述請求者發(fā)送的請求獲取所分配的遠程內(nèi)存的請求沒有獲得響應(yīng)的消息,并重新觸發(fā)內(nèi)存分配單元。
【文檔編號】H04L29/06GK104166597SQ201310186194
【公開日】2014年11月26日 申請日期:2013年5月17日 優(yōu)先權(quán)日:2013年5月17日
【發(fā)明者】張立新, 侯銳, 張柳航, 張科 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所