本申請涉及通信技術(shù)領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)處理方法、裝置和服務器。
背景技術(shù):
在大數(shù)據(jù)計算過程中,通常都會存在大量的中間計算結(jié)果,這些中間計算結(jié)果一般會存儲在磁盤中,并在需要利用中間計算結(jié)果進行計算時,再從磁盤中讀取該計算結(jié)果。然而相對于內(nèi)存而言,磁盤的讀寫效率較慢,而數(shù)據(jù)讀寫效率對大數(shù)據(jù)計算的計算效率有著很大的影響。
為了提高大數(shù)據(jù)計算的計算效率,目前提出了內(nèi)存計算引擎,其主要特點是在進行大數(shù)據(jù)計算過程中,不再依賴磁盤而是可以將中間計算結(jié)果存儲在內(nèi)存,從而大大提高計算效率。然而,當由于服務器物理內(nèi)存有限,因此,如果內(nèi)存計算引擎無法從本地獲取到足夠的內(nèi)存空間,也必須借助磁盤進行臨時數(shù)據(jù)緩存操作,從而影響到數(shù)據(jù)計算效率。
技術(shù)實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┝艘环N數(shù)據(jù)處理方法、裝置和服務器,以提高大數(shù)據(jù)計算的計算效率。
為了實現(xiàn)上述目的,現(xiàn)提出的方案如下:
一種數(shù)據(jù)處理方法,其特征在于,所述方法包括:
對待處理數(shù)據(jù)進行計算處理;
將所述計算處理的中間計算結(jié)果存儲到服務器的本地內(nèi)存中;
如果檢測到所述服務器的本地內(nèi)存空間不足時,從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,所述分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間;
將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
優(yōu)選的,所述從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,包括:
向管理所述分布式內(nèi)存集群的管理服務器發(fā)送內(nèi)存分配請求;
獲取所述管理服務器返回的目標內(nèi)存空間的地址,所述目標內(nèi)存空間為從所述分布式內(nèi)存集群中確定出的可用的內(nèi)存空間。
優(yōu)選的,所述從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,包括:
依據(jù)管理所述分布式內(nèi)存集群的管理服務器上報的內(nèi)存占用情況,從所述分布式內(nèi)存集群中確定可用的目標內(nèi)存空間。
優(yōu)選的,還包括:
接收所述管理服務器在所述分布式內(nèi)存集群中空閑內(nèi)存發(fā)生變化時所上報的內(nèi)存占用情況;
存儲所述內(nèi)存占用情況。
優(yōu)選的,所述將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間,包括:
通過所述目標內(nèi)存空間所在的服務器提供的訪問接口,將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
另一方面,本申請實施例還提供了一種服務器,包括:
處理器,用于對待處理數(shù)據(jù)進行計算處理;
內(nèi)存儲器,用于存儲所述處理器進行所述計算處理的中間計算結(jié)果;
所述處理器,還用于如果檢測到內(nèi)存儲器的空間不足時,從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,所述分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間;
通信接口,用于在所述內(nèi)存儲器的空間不足時,將所述處理器進行所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
優(yōu)選的,所述通信接口還用于,向管理所述分布式內(nèi)存集群的管理服務器發(fā)送內(nèi)存分配請求;獲取所述管理服務器返回的內(nèi)存空間的地址,所述管理服務器返回的內(nèi)存空間為從所述分布式內(nèi)存集群中確定出的可用的內(nèi)存空間;
所述處理器在從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間時,具體用于:將所述管理服務器返回的內(nèi)存空間的地址確定為所述分布式內(nèi)存集群中,可用的目標內(nèi)存空間。
優(yōu)選的,所述通信接口,還用于獲取所述分布式內(nèi)存集群的管理服務器上報的內(nèi)存占用情況;
所述處理器在從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間時,具體用于,依據(jù)所述管理服務器上報的內(nèi)存占用情況,從所述分布式內(nèi)存集群中確定可用的目標內(nèi)存空間。
優(yōu)選的,所述通信接口,還用于接收所述管理服務器在所述分布式內(nèi)存集群中空閑內(nèi)存發(fā)生變化時所上報的內(nèi)存占用情況;
所述服務器還包括:存儲器,用于存儲所述內(nèi)存占用情況。
優(yōu)選的,所述通信接口在將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間時,具體用于,通過所述目標內(nèi)存空間所在的服務器提供的訪問接口,將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
另一方面,本申請實施例還提供了一種數(shù)據(jù)處理裝置,所述裝置包括:
數(shù)據(jù)計算單元,用于對待處理數(shù)據(jù)進行計算處理;
第一數(shù)據(jù)存儲單元,用于將所述計算處理的中間計算結(jié)果存儲到服務器的本地內(nèi)存中;
外部內(nèi)存確定單元,用于如果檢測到所述服務器的本地內(nèi)存空間不足時,從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,所述分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間;
第二數(shù)據(jù)存儲單元,用于將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
由以上內(nèi)容可知,在服務器對待處理數(shù)據(jù)進行計算處理的過程中,可以優(yōu)先將計算處理所產(chǎn)生的中間計算結(jié)果存儲到本地內(nèi)存中,如果檢測到本地內(nèi)存的存儲空間不足時,則可以從分布式內(nèi)存集群的內(nèi)存空間中選取出可用的目標內(nèi)存空間,并將計算處理過程中未存儲的中間計算結(jié)果存儲到該分布式內(nèi)存集群的目標內(nèi)存空間中,從而實現(xiàn)了將對待處理數(shù)據(jù)進行計算處理過程中所產(chǎn)生的所有中間計算結(jié)果都存儲到內(nèi)存中,而由于內(nèi)存對于數(shù)據(jù)讀寫的效率較高,因此,將所有中間計算結(jié)果都存儲在本地內(nèi)存或者分布式內(nèi)存集群的內(nèi)存空間,有利于提高數(shù)據(jù)處理過程中對于中間計算結(jié)果的讀寫效率,從而有利于提高數(shù)據(jù)處理效率,提高了服務器的計算性能。
附圖說明
為了更清楚地說明本申請實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請一種數(shù)據(jù)處理方法一個實施例的流程示意圖;
圖2示出了本申請實施例中分布式內(nèi)存集群的一個組成結(jié)構(gòu)示意圖;
圖3示出了應用本申請的一種數(shù)據(jù)處理方法的一種數(shù)據(jù)處理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖4示出了本申請一種數(shù)據(jù)處理方法又一個實施例的流程示意圖;
圖5示出了本申請一種數(shù)據(jù)處理方法又一個實施例的流程示意圖;
圖6示出了本申請一種服務器的組成架構(gòu)示意圖;
圖7示出了本申請一種數(shù)據(jù)處理裝置一個實施例的組成結(jié)構(gòu)示意圖。
具體實施方式
本申請實施例提供了一種數(shù)據(jù)處理方法、裝置和服務器,本申請的方案適用于大數(shù)據(jù)計算等需要在數(shù)據(jù)計算過程中緩存中間計算結(jié)果的場景中。具體的,本申請的方案可以應用于進行數(shù)據(jù)計算的單個服務器,也可以是應用于服務器集群中用于實現(xiàn)數(shù)據(jù)計算處理的任意一個服務器中。
本申請的方案將分布式集群中的多個服務器的內(nèi)存空間構(gòu)成一個分布式內(nèi)存集群,這樣,在進行數(shù)據(jù)計算的服務器存在本地內(nèi)存空間不足的情況下,可以借助分布式內(nèi)存集群中的內(nèi)存進行中間計算結(jié)果的存儲,以實現(xiàn)對本地內(nèi)存的補充,從而可以避免由于將中間計算結(jié)果存儲到服務器本地磁盤中而影響到數(shù)據(jù)計算效率。
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
參見圖1,其示出了本申請一種數(shù)據(jù)處理方法一個實施例的流程示意圖,本實施例的方法可以應用于服務器,該服務器可以為獨立的服務器,也可以是服務器集群中的服務器,如大數(shù)據(jù)計算平臺中的服務器。本實施例的方法可以包括以下步驟:
101,對待處理數(shù)據(jù)進行計算處理。
該待處理數(shù)據(jù)就是需要進行計算處理的數(shù)據(jù),也就是該服務器當前需要處理的數(shù)據(jù),在本申請實施例中,待處理數(shù)據(jù)可以為一些復雜的,或者需要較大計算量的數(shù)據(jù)。
對該待處理數(shù)據(jù)進行計算處理的方式可以有多種,在此不加以限制。如,可以通過MapReduce計算引擎對待處理數(shù)據(jù)進行計算處理。
102,將計算處理的中間計算結(jié)果存儲到服務器的本地內(nèi)存中。
在本申請實施例中,由于待處理數(shù)據(jù)所需的計算量較大,在待處理數(shù)據(jù)進行計算處理的過程中會產(chǎn)生大量的中間計算結(jié)果,中間計算結(jié)果并未完成對該待處理數(shù)據(jù)的計算處理所得的最終結(jié)果,而僅僅在為了計算得到該最終結(jié)果的過程中所產(chǎn)生的一些中間結(jié)果,為了能夠在后續(xù)可以利用中間計算結(jié)果最終計算出最終結(jié)果,需要將對待處理數(shù)據(jù)進行計算處理過程中所產(chǎn)生的中間計算結(jié)果進行緩存。如,在基于MapReduce計算引擎對待處理數(shù)據(jù)進行計算的過程中需要涉及到一些中間計算結(jié)果的搬移緩存,即俗稱的Shuffle操作。
與現(xiàn)有的方式相似,在本申請實施例中會將計算處理中所產(chǎn)生的中間計算結(jié)果優(yōu)先存儲到該服務器的本地內(nèi)存中。
103,如果檢測到該服務器的本地內(nèi)存空間不足時,從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間。
其中,分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間。
如,參見圖2,其示出了一種分布式內(nèi)存集群的組成結(jié)構(gòu)示意圖,由圖2可以看出,該分布式內(nèi)存集群包括分布于多個不同存儲服務器201中的多個內(nèi)存,每個存儲服務器201中的內(nèi)存都是該分布式內(nèi)存集群中的一部分,這樣該多個存儲節(jié)點的多個內(nèi)存對外呈現(xiàn)為一個內(nèi)存集群(也可以俗稱為內(nèi)存池),內(nèi)存集群中的所有內(nèi)存可以認為一個整體,內(nèi)存集群的內(nèi)存空間的大小為所有存儲服務器201中內(nèi)存空間的總和。
在對待處理數(shù)據(jù)進行計算處理的過程中,可以對本地內(nèi)存的剩余空間進行監(jiān)控,一旦檢測到該本地內(nèi)存空間不足,則可以從該服務器之外的分布式內(nèi)存集群中選取可用的目標內(nèi)存空間,以對本地內(nèi)存空間進行補充。
其中,本地內(nèi)存空間不足可以有多種可能的情況,如,本地內(nèi)存剩余的可用空間小于預設閾值;又如,本地內(nèi)存剩余的可用空間小于計算處理過程中當前產(chǎn)生的中間計算結(jié)果所需占據(jù)的存儲空間等。
104,將計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到該目標內(nèi)存空間。
在確定出目標內(nèi)存空間之后,可以依據(jù)該目標內(nèi)存空間所在的地址,將中間計算結(jié)果存儲到該目標內(nèi)存空間。
可選的,確定出可用的目標內(nèi)存空間之后,還可以確定出可用的目標內(nèi)存空間所在的服務器,并將計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果傳輸給該目標內(nèi)存空間所在的服務器,以便該目標內(nèi)存空間所在的服務器將該未存儲的中間計算結(jié)果存儲到該目標內(nèi)存空間中。其中,該目標內(nèi)存空間可以位于一臺服務器中,也可以是位于多臺服務器中。
進一步的,為了提高數(shù)據(jù)讀寫的便捷性,分布式內(nèi)存集群中的服務器均向外提供了訪問接口,因此可以通過該目標內(nèi)存空間所在的服務器提供的訪問接口,將該計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到該目標內(nèi)存空間。
需要說明的是,本申請實施例中確定出的目標可用內(nèi)存空間可以是分布式內(nèi)存集群中當前剩余的所有空閑內(nèi)存,在該種情況下,將未存儲的中間計算結(jié)果存儲到該可用內(nèi)存空間中可以是:隨機從可用內(nèi)存空間中隨機選取內(nèi)存空間來存儲未存儲的中間計算結(jié)果;也可以是:根據(jù)預先設定的分布式存儲集群中各個服務器的優(yōu)先級順序,依次將該未存儲的中間計算結(jié)果存儲到分布式內(nèi)存集群中優(yōu)先級較高的服務器的可用內(nèi)存空間中。
當然,本申請實施例中確定出的目標可用內(nèi)存空間也可以是分布式內(nèi)存集群中,存儲該未存儲中間計算結(jié)果的內(nèi)存空間,在該種情況下,該目標內(nèi)存空間的空間大小與該未存儲中間計算結(jié)果所需的內(nèi)存大小相同,因此,可以直接將該計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到該目標可用內(nèi)存空間中。
在對待處理數(shù)據(jù)進行計算處理的服務器本身的內(nèi)存空間不足的情況下,該服務器可以將計算處理中產(chǎn)生的尚未被存儲的中間計算結(jié)果存儲到該分布式內(nèi)存集群中可用的目標內(nèi)存空間中,從而使得中間計算結(jié)果仍可以存儲在內(nèi)存中,而無需再存儲到服務器本地的磁盤中。
可見,在本申請實施例中,在服務器對待處理數(shù)據(jù)進行計算處理的過程中,可以優(yōu)先將計算處理所產(chǎn)生的中間計算結(jié)果存儲到本地內(nèi)存中,如果檢測到本地內(nèi)存的存儲空間不足時,則可以從分布式內(nèi)存集群的內(nèi)存空間中選取出可用的目標內(nèi)存空間,并將計算處理過程中未存儲的中間計算結(jié)果存儲到該分布式內(nèi)存集群的目標內(nèi)存空間中,從而實現(xiàn)了將對待處理數(shù)據(jù)進行計算處理過程中所產(chǎn)生的所有中間計算結(jié)果都存儲到內(nèi)存中,而由于內(nèi)存對于數(shù)據(jù)讀寫的效率較高,因此,將所有中間計算結(jié)果都存儲在本地內(nèi)存或者分布式內(nèi)存集群的內(nèi)存空間,有利于提高數(shù)據(jù)處理過程中對于中間計算結(jié)果的讀寫效率,從而有利于提高數(shù)據(jù)處理效率,提高了服務器的計算性能。
可以理解的是,在本申請實施例中,服務器從分布式內(nèi)存集群中確定可用的目標內(nèi)存空間的具體實現(xiàn)方式可以有多種:
在一種可能的情況中,進行計算處理的服務器可以從分布式內(nèi)存集群所對應的多個存儲服務器中查詢可用內(nèi)存空間的情況,為了便于區(qū)分,本申請實施例中將分布式內(nèi)存集群中各個內(nèi)存所歸屬的服務器稱為存儲服務器。如,分布式內(nèi)存集群中的存儲服務器可以定期或者在自身內(nèi)存空間發(fā)生變化的情況下,主動向該進行計算處理的服務器上報自身可用內(nèi)存空間的信息;又如,進行計算處理的服務器可以定期或者在需要確定分布式內(nèi)存集群中可用的內(nèi)存空間時,依次向存儲服務器請求該存儲服務器中內(nèi)存的使用情況的信息。
可以理解的是,由于進行計算處理的服務器本身需要承擔數(shù)據(jù)計算的任務,因此,如果由該服務器來主動或被動獲取每個存儲服務器中內(nèi)存的使用情況,并對內(nèi)存使用情況進行管理,必然會占用該服務器較多的處理資源,從而影響會影響到該服務器對應數(shù)據(jù)計算處理的性能。特別的,對于由多個進行數(shù)據(jù)計算處理的服務器所構(gòu)成的分布式數(shù)據(jù)計算系統(tǒng)而言,如果每臺用于數(shù)據(jù)計算的服務器均需要管理該分布式內(nèi)存集群中的內(nèi)存資源的使用情況,必然會導致該分布式數(shù)據(jù)計算系統(tǒng)整體的計算性能較差。
為了進一步提高該進行計算處理的服務器的數(shù)據(jù)處理性能,在另一種可能的情況中,可以在該分布式內(nèi)存集群中部署一臺用于管理該分布式內(nèi)存集群的管理服務器。該管理服務器可以管理分布式內(nèi)存集群中所有存儲服務器的內(nèi)存使用情況,這樣,進行計算處理的服務器只需要與該管理服務器進行交互,就可以獲取到該分布式內(nèi)存集群中剩余的可用內(nèi)存空間的相關(guān)信息。如,參見圖3,其示出了本申請一種應用本申請的一種數(shù)據(jù)處理方法的一種數(shù)據(jù)處理系統(tǒng)的組成結(jié)構(gòu)示意圖。
由圖3可見,該數(shù)據(jù)處理系統(tǒng)可以包括:至少一個用于進行數(shù)據(jù)計算處理的計算節(jié)點301,該計算節(jié)點就相當于前面所提到的進行計算處理的服務器??梢岳斫獾氖?,當采用獨立的服務器處理數(shù)據(jù)時,該數(shù)據(jù)處理系統(tǒng)可以僅僅包括一臺數(shù)據(jù)節(jié)點,當采用分布式計算集群來處理數(shù)據(jù)時,該數(shù)據(jù)處理可以包括多臺計算節(jié)點。
分布式內(nèi)存集群可以包括多個存儲服務器302以及用于管理該分布式內(nèi)存集群的管理服務器303。
其中,管理服務器303通過網(wǎng)絡與該多個存儲服務器以及該計算節(jié)點相連。
管理服務器可以存儲該分布式內(nèi)存集群中多個存儲服務器所對應的總內(nèi)存空間以及當前可用的內(nèi)存空間。
計算節(jié)點可以通過管理服務器獲取到分布式內(nèi)存集群中內(nèi)存的使用情況,如分布式內(nèi)存集群中存在多少可用內(nèi)存空間,可用內(nèi)存空間處于哪些存儲服務器中。
需要說明的是,圖3所示的場景中,以分布式內(nèi)存集群由獨立于計算節(jié)點的多個存儲服務器組成為例進行介紹,在該種情況下,計算節(jié)點是獨立于該分布式內(nèi)存集群所包含的服務器之外的服務器。但是可以理解的是,在實際應用中,為了實現(xiàn)資源共享,該計算節(jié)點也可以屬于分布式內(nèi)存集群所包括的服務器,也就是說,分布式內(nèi)存集群所包括的多個服務器既可以是計算節(jié)點,又可以作為存儲服務器。如,當分布式內(nèi)存集群中的存儲服務器需要進行數(shù)據(jù)計算時,該存儲服務器就相當于計算節(jié)點,且如果在數(shù)據(jù)計算過程中存在內(nèi)存空間不足的情況,則可以通過管理服務器確定該分布式內(nèi)存集群中哪些存儲服務器中還存在可用內(nèi)存空間,并借助其他存儲服務器的可用內(nèi)存空間來完成中間計算結(jié)果的緩存。
結(jié)合圖3,參見圖4,其示出了本申請一種數(shù)據(jù)處理方法又一個實施例的流程示意圖,本實施例的方法可以應用于服務器,該服務器具備數(shù)據(jù)處理功能,本實施例的方法可以包括:
401,對待處理數(shù)據(jù)進行計算處理。
402,將計算處理的中間計算結(jié)果存儲到服務器的本地內(nèi)存中。
403,如果檢測到該服務器的本地內(nèi)存空間不足時,向管理分布式內(nèi)存集群的管理服務器發(fā)送內(nèi)存分配請求。
其中,分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間。
該分布式內(nèi)存集群所包括的服務器可以包括對待處理數(shù)據(jù)進行計算處理的服務器,也可以不包括對待處理數(shù)據(jù)進行計算處理的該服務器。
404,獲取該管理服務器返回的目標內(nèi)存空間的地址,該目標內(nèi)存空間為從分布式內(nèi)存集群中確定出的可用的內(nèi)存空間。
在本申請實施例中,該內(nèi)存分配請求用于請求可用內(nèi)存空間。該管理服務器響應于該內(nèi)存分配請求,從分布式內(nèi)存集群中確定出可用的目標內(nèi)存空間,并將目標內(nèi)存空間的地址返回給該服務器。
可選的,該內(nèi)存分配請求還可以攜帶當前所需的內(nèi)存空間大小,相應的,該管理服務器可以依據(jù)服務器所需的內(nèi)存空間大小,從分布式內(nèi)存空間中,確定出與所需的內(nèi)存空間大小相同空間的目標內(nèi)存空間。
當然,在實際應用中,為了避免服務器在計算過程中頻繁請求分配內(nèi)存空間,該內(nèi)存分配請求中可以不攜帶所需的內(nèi)存空間大小,而管理服務器一般會獲取設定大小的目標內(nèi)存空間,該設定大小可以根據(jù)需要設定,一般可以以能夠滿足服務器緩存一次或多次中間計算結(jié)果所需的內(nèi)存大小為依據(jù)。
405,將計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到該目標內(nèi)存空間。
如,可以通過目標內(nèi)存空間所在的服務器提供的訪問接口,將該計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
可以理解的是,圖4僅僅是服務器通過管理服務器確定目標內(nèi)存空間的一種實現(xiàn)方式,在實際應用中,還可以有其他方式來確定目標內(nèi)存空間,如,結(jié)合圖3,參見圖5,其示出了本申請一種數(shù)據(jù)處理方法又一個實施例的流程示意圖,本實施例的方法可以應用于服務器,該服務器具備數(shù)據(jù)處理功能,本實施例的方法可以包括:
501,對待處理數(shù)據(jù)進行計算處理。
502,將計算處理的中間計算結(jié)果存儲到服務器的本地內(nèi)存中。
步驟501和步驟502可以參見前面實施例的相關(guān)介紹,在此不再贅述。
503,如果檢測到該服務器的本地內(nèi)存空間不足時,依據(jù)管理分布式內(nèi)存集群的管理服務器上報的內(nèi)存占用情況,從分布式內(nèi)存集群中確定可用的目標內(nèi)存空間。
其中,分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間。與前面實施例相似,該分布式內(nèi)存集群所包括的服務器可以包括對待處理數(shù)據(jù)進行計算處理的服務器,也可以不包括對待處理數(shù)據(jù)進行計算處理的該服務器。
在本實施例中,管理服務器可以主動向進行計算處理的服務器上報分布式內(nèi)存集群中內(nèi)存占用情況,如,分布式內(nèi)存集群中存在多少可用內(nèi)存,以及這些可用內(nèi)存分布于哪些服務器中等等信息。相應的,該進行計算處理的服務器可以根據(jù)管理服務器上報的內(nèi)存占用情況,從該分布式內(nèi)存集群所包含的內(nèi)存空間中確定出可用的目標內(nèi)存空間,以便進行未存儲的計算結(jié)果存儲到該可用的目標內(nèi)存空間中。
504,將計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到該目標內(nèi)存空間。
該步驟504可以參見前面實施例的相關(guān)介紹,在此不再贅述。
505,接收該管理服務器在分布式內(nèi)存集群中空閑內(nèi)存發(fā)生變化時所上報的內(nèi)存占用情況。
506,存儲所述內(nèi)存占用情況。
可以理解的是,由于進行計算處理的服務器將中間計算結(jié)果存儲到分布式內(nèi)存集群之后,后續(xù)還可能會取出該中間計算結(jié)果,或者在完成計算之后,刪除該中間計算結(jié)果;當然,還可以有其他進行計算處理的服務器也會將數(shù)據(jù)存儲到該分布式內(nèi)存集群中,這樣,分布式內(nèi)存集群中可用的內(nèi)存空間就可能會存在動態(tài)變化,因此,管理服務器可以在分布式內(nèi)存集群中空閑內(nèi)存的大小發(fā)生變化時,重新向進行計算處理的服務器上報內(nèi)存占用情況,以便該服務器存儲內(nèi)存占用情況。
其中,該步驟505和步驟506的順序并不限于圖5所示,在實際應用中,該步驟505和506可能會與本實施例中501至504中的任意一步同時執(zhí)行。
本申請實施例還提供了一種服務器,如圖6,其示出了本申請一種服務器的組成結(jié)構(gòu)示意圖,本實施例的服務器可以包括:
處理器601、內(nèi)存儲器602和通信接口603。
其中,處理器601,用于對待處理數(shù)據(jù)進行計算處理;
內(nèi)存儲器602,用于存儲所述處理器進行所述計算處理的中間計算結(jié)果;
所述處理器601,還用于如果檢測到內(nèi)存儲器的空間不足時,從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,所述分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間;
通信接口603,用于在所述內(nèi)存儲器的空間不足時,將所述處理器進行所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
可選的,所述通信接口還用于,向管理所述分布式內(nèi)存集群的管理服務器發(fā)送內(nèi)存分配請求;獲取所述管理服務器返回的內(nèi)存空間的地址,所述管理服務器返回的內(nèi)存空間為從所述分布式內(nèi)存集群中確定出的可用的內(nèi)存空間;
所述處理器在從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間時,具體用于:將所述管理服務器返回的內(nèi)存空間的地址確定為所述分布式內(nèi)存集群中,可用的目標內(nèi)存空間。
可選的,所述通信接口,還用于獲取所述分布式內(nèi)存集群的管理服務器上報的內(nèi)存占用情況;
所述處理器在從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間時,具體用于,依據(jù)所述管理服務器上報的內(nèi)存占用情況,從所述分布式內(nèi)存集群中確定可用的目標內(nèi)存空間。
可選的,所述通信接口,還用于接收所述管理服務器在所述分布式內(nèi)存集群中空閑內(nèi)存發(fā)生變化時所上報的內(nèi)存占用情況;
所述服務器還包括:存儲器,用于存儲所述內(nèi)存占用情況。
可選的,所述通信接口在將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間時,具體用于,通過所述目標內(nèi)存空間所在的服務器提供的訪問接口,將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
另一方面,對應本申請實施例的一種數(shù)據(jù)處理方法,本申請實施例還提供了一種數(shù)據(jù)處理裝置。
參見圖7,其示出了本申請一種數(shù)據(jù)處理裝置一個實施例的組成結(jié)構(gòu)示意圖,本實施例的數(shù)據(jù)處理裝置可以包括:
數(shù)據(jù)計算單元701,用于對待處理數(shù)據(jù)進行計算處理;
第一數(shù)據(jù)存儲單元702,用于將所述計算處理的中間計算結(jié)果存儲到服務器的本地內(nèi)存中;
外部內(nèi)存確定單元703,用于如果檢測到所述服務器的本地內(nèi)存空間不足時,從分布式內(nèi)存集群中,確定可用的目標內(nèi)存空間,所述分布式內(nèi)存集群包括分布于多個服務器中的內(nèi)存空間;
第二數(shù)據(jù)存儲單元704,用于將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
可選的,所述外部內(nèi)存確定單元,包括:
內(nèi)存請求單元,用于如果檢測到所述服務器的本地內(nèi)存空間不足時,向管理所述分布式內(nèi)存集群的管理服務器發(fā)送內(nèi)存分配請求;
內(nèi)存獲取單元,用于獲取所述管理服務器返回的目標內(nèi)存空間的地址,所述目標內(nèi)存空間為從所述分布式內(nèi)存集群中確定出的可用的內(nèi)存空間。
可選的,所述外部內(nèi)存確定單元,包括:
外部內(nèi)存確定子單元,用于依據(jù)管理所述分布式內(nèi)存集群的管理服務器上報的內(nèi)存占用情況,從所述分布式內(nèi)存集群中確定可用的目標內(nèi)存空間。
進一步,所述裝置還包括:
占用情況接收單元,用于接收所述管理服務器在所述分布式內(nèi)存集群中空閑內(nèi)存發(fā)生變化時所上報的內(nèi)存占用情況;
占用情況存儲單元,用于存儲所述內(nèi)存占用情況。
可選的,所述第二數(shù)據(jù)存儲單元704具體為,用于通過所述目標內(nèi)存空間所在的服務器提供的訪問接口,將所述計算處理中產(chǎn)生的且未存儲的中間計算結(jié)果存儲到所述目標內(nèi)存空間。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。