本技術(shù)實(shí)施例涉及存儲領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
背景技術(shù):
1、數(shù)據(jù)緩存技術(shù)是一種介于傳統(tǒng)的存儲器與處理器之間的存儲單元,用于暫時(shí)存儲已訪問過的數(shù)據(jù)和指令,以提高計(jì)算機(jī)處理器的訪問速度。數(shù)據(jù)緩存通常以內(nèi)存來暫時(shí)存儲和快速訪問數(shù)據(jù)。當(dāng)計(jì)算機(jī)應(yīng)用需要讀取某個(gè)數(shù)據(jù)時(shí),首先會查找緩存中是否已經(jīng)存在該數(shù)據(jù),如果是,則可以直接從緩存中讀取,從而減少從磁盤或網(wǎng)絡(luò)讀取數(shù)據(jù)需要的時(shí)間和開銷。
2、內(nèi)存文件描述符(memory?file?descriptor,memfd)是linux內(nèi)核中的一個(gè)系統(tǒng)調(diào)用,用于創(chuàng)建一個(gè)匿名的、臨時(shí)的、基于內(nèi)存的文件,可以被用作臨時(shí)文件、共享內(nèi)存、進(jìn)程間通信等場景。在分布式系統(tǒng)中主要是用在進(jìn)程間進(jìn)行數(shù)據(jù)共享,達(dá)成數(shù)據(jù)在進(jìn)程間免拷貝傳遞的目的。
3、但分布式系統(tǒng)為數(shù)據(jù)對象創(chuàng)建對應(yīng)的內(nèi)存文件描述符來指示數(shù)據(jù)對象的數(shù)據(jù)時(shí),數(shù)據(jù)的緩存單位是數(shù)據(jù)對象整體,需要用一個(gè)內(nèi)存文件描述符對應(yīng)一個(gè)數(shù)據(jù)對象的數(shù)據(jù),當(dāng)大數(shù)據(jù)操作只需要訪問數(shù)據(jù)對象中的部分?jǐn)?shù)據(jù)時(shí),也會對整個(gè)數(shù)據(jù)對象進(jìn)行緩存,導(dǎo)致內(nèi)存利用率較低。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種數(shù)據(jù)處理方法及裝置,由此提高大數(shù)據(jù)場景下內(nèi)存利用率。
2、第一方面,本技術(shù)提供一種數(shù)據(jù)處理方法,應(yīng)用于分布式系統(tǒng)中的存儲服務(wù)端(store?server),存儲服務(wù)端與分布式系統(tǒng)中的存儲客戶端(store?client)連接。在數(shù)據(jù)處理方法的流程中,首先存儲服務(wù)端接收存儲客戶端發(fā)送的針對目標(biāo)數(shù)據(jù)對象的讀取請求,讀取請求攜帶所述目標(biāo)數(shù)據(jù)對象的參數(shù),目標(biāo)數(shù)據(jù)對象的參數(shù)用于指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間。然后,存儲服務(wù)端確定地址空間對應(yīng)的多個(gè)內(nèi)存文件描述符,多個(gè)內(nèi)存文件描述符指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)。最后,向存儲客戶端發(fā)送多個(gè)內(nèi)存文件描述符的內(nèi)存地址。
3、其中,目標(biāo)數(shù)據(jù)對象的參數(shù)包括目標(biāo)數(shù)據(jù)對象的標(biāo)識、目標(biāo)數(shù)據(jù)對象的偏移地址和目標(biāo)數(shù)據(jù)對象的長度。如此,存儲服務(wù)端能夠在數(shù)據(jù)對象存儲于多個(gè)內(nèi)存文件描述符時(shí),根據(jù)對象標(biāo)識、偏移地址和長度確定數(shù)據(jù)對象的地址空間的數(shù)據(jù)范圍,從而確定該數(shù)據(jù)范圍對應(yīng)的多個(gè)內(nèi)存文件描述符。
4、在現(xiàn)有的分布式系統(tǒng)中的內(nèi)存共享方案中,在分布式系統(tǒng)每個(gè)節(jié)點(diǎn)上部署一個(gè)存儲服務(wù)端或存儲服務(wù)端服務(wù),應(yīng)用可以通過存儲服務(wù)端創(chuàng)建數(shù)據(jù)對象,并為數(shù)據(jù)對象創(chuàng)建用于存儲數(shù)據(jù)對象的內(nèi)存文件,同時(shí)通過內(nèi)存文件描述符將內(nèi)存文件的內(nèi)存地址通過存儲客戶端映射到應(yīng)用的進(jìn)程中進(jìn)行共享,應(yīng)用向內(nèi)存地址寫入應(yīng)用數(shù)據(jù),并將數(shù)據(jù)對象的對象標(biāo)識(object?identify)返回應(yīng)用,使應(yīng)用能夠通過對象標(biāo)識在分布式系統(tǒng)中的任何節(jié)點(diǎn)中讀取對象中的數(shù)據(jù)。但應(yīng)用數(shù)據(jù)的緩存單位是數(shù)據(jù)對象整體,需要用一個(gè)內(nèi)存文件描述符對應(yīng)一個(gè)數(shù)據(jù)對象的數(shù)據(jù),當(dāng)大數(shù)據(jù)操作只需要訪問數(shù)據(jù)對象中的部分?jǐn)?shù)據(jù)時(shí),也會對內(nèi)存文件描述符指示的整個(gè)數(shù)據(jù)對象進(jìn)行緩存,導(dǎo)致內(nèi)存利用率較低。
5、相對于上述內(nèi)存共享方案,本技術(shù)的數(shù)據(jù)處理方法中,一個(gè)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間的數(shù)據(jù)范圍對應(yīng)多個(gè)內(nèi)存文件描述符,即數(shù)據(jù)對象緩存時(shí)按一定粒度被拆分為多段數(shù)據(jù),每段數(shù)據(jù)在內(nèi)存中的地址空間對應(yīng)一個(gè)內(nèi)存文件描述符。數(shù)據(jù)對象被訪問時(shí),存儲服務(wù)端向存儲客戶端返回?cái)?shù)據(jù)對象的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間的數(shù)據(jù)范圍對應(yīng)多個(gè)內(nèi)存文件描述符的內(nèi)存地址,從而完成以內(nèi)存文件描述符為粒度的數(shù)據(jù)對象訪問。如此,數(shù)據(jù)對象可以按內(nèi)存文件描述符為粒度進(jìn)行拆分存儲及訪問,能夠?qū)崿F(xiàn)以內(nèi)存文件描述符為粒度的熱數(shù)據(jù)內(nèi)存存儲,從而將一個(gè)數(shù)據(jù)對象的熱數(shù)據(jù)存儲于內(nèi)存,將該數(shù)據(jù)對象的冷數(shù)據(jù)在系統(tǒng)文件中持久化存儲,使內(nèi)存能夠緩存更多數(shù)據(jù)對象的熱數(shù)據(jù),提升內(nèi)存使用率。
6、作為一種可能的實(shí)現(xiàn)方式,存儲服務(wù)端確定目標(biāo)數(shù)據(jù)對象的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間的數(shù)據(jù)范圍對應(yīng)的多個(gè)內(nèi)存文件描述符時(shí),若地址空間的數(shù)據(jù)范圍存在對應(yīng)的多個(gè)內(nèi)存文件描述符,確定需要向存儲客戶端發(fā)送的多個(gè)內(nèi)存文件描述符為地址空間的數(shù)據(jù)范圍存在對應(yīng)的多個(gè)內(nèi)存文件描述符。若地址空間的數(shù)據(jù)范圍不存在對應(yīng)的多個(gè)內(nèi)存文件描述符,存儲服務(wù)端申請新的內(nèi)存文件描述符加載目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù),并確定需要向存儲客戶端發(fā)送的多個(gè)內(nèi)存文件描述符為新的內(nèi)存文件描述符。如此,存儲服務(wù)端可以按照存儲客戶端的數(shù)據(jù)對象讀取需求,從內(nèi)存文件描述符讀取數(shù)據(jù)對象或使內(nèi)存文件描述符加載數(shù)據(jù)后讀取數(shù)據(jù)對象,使內(nèi)存文件描述符在加載或存儲數(shù)據(jù)對象時(shí)具有更高的靈活性,提高了內(nèi)存利用率。
7、作為一種可能的實(shí)現(xiàn)方式,存儲服務(wù)端在響應(yīng)存儲客戶端進(jìn)行數(shù)據(jù)對象訪問之前,還需要創(chuàng)建目標(biāo)數(shù)據(jù)對象,并緩存目標(biāo)數(shù)據(jù)對象的應(yīng)用數(shù)據(jù)??蛇x地,存儲服務(wù)端接收存儲客戶端發(fā)送的申請請求,申請請求包括目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù),用于請求寫入目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)。然后根據(jù)申請請求在內(nèi)存文件描述符池中確定多個(gè)內(nèi)存文件描述符,內(nèi)存文件描述符池包括未釋放的至少一個(gè)內(nèi)存文件描述符,再根據(jù)申請請求將應(yīng)用數(shù)據(jù)寫入上述多個(gè)內(nèi)存文件描述符指示的內(nèi)存文件。如此,存儲服務(wù)端通過內(nèi)存文件描述符池使用未釋放的內(nèi)存文件描述符寫入應(yīng)用數(shù)據(jù),循環(huán)使用內(nèi)存文件描述符,避免每次需要緩存應(yīng)用數(shù)據(jù)時(shí)創(chuàng)建新的內(nèi)存文件描述符時(shí)出現(xiàn)內(nèi)存缺頁異常,降低了數(shù)據(jù)寫入延遲。
8、可選地,在內(nèi)存文件描述符池中存在空閑內(nèi)存文件描述符時(shí),存儲服務(wù)端在內(nèi)存文件描述符池中確定多個(gè)內(nèi)存文件描述符;在內(nèi)存文件描述符池中不存在空閑內(nèi)存文件描述符時(shí),存儲服務(wù)端從操作系統(tǒng)中創(chuàng)建多個(gè)內(nèi)存文件描述符。其中,存儲服務(wù)端在創(chuàng)建內(nèi)存文件描述符時(shí),若內(nèi)存文件描述符池中缺少n個(gè)內(nèi)存文件描述符,則存儲服務(wù)端從操作系統(tǒng)中創(chuàng)建n個(gè)內(nèi)存文件描述符,n的取值可以是1,也可以是存儲應(yīng)用數(shù)據(jù)需要的內(nèi)存文件描述符總量,還可以是1至存儲應(yīng)用數(shù)據(jù)需要的內(nèi)存文件描述符總量之間的任意數(shù)值。
9、可選地,本技術(shù)不限制內(nèi)存文件描述符的大小。
10、例如,多個(gè)內(nèi)存文件描述符中的每個(gè)內(nèi)存文件描述符的大小相同,即每個(gè)內(nèi)存文件描述符指示的內(nèi)存文件的大小相同。如此,存儲服務(wù)端能夠根據(jù)應(yīng)用數(shù)據(jù)的存儲容量需求快速確定需要的內(nèi)存文件描述符的數(shù)量,提高了數(shù)據(jù)處理效率。
11、又如,多個(gè)內(nèi)存文件描述符中的每個(gè)內(nèi)存文件描述符的大小部分或全部不同。如此,存儲服務(wù)端能夠根據(jù)應(yīng)用數(shù)據(jù)的存儲容量需求靈活選取對應(yīng)大小的內(nèi)存文件描述符,避免大小不匹配導(dǎo)致的內(nèi)存浪費(fèi),提高了內(nèi)存利用率。
12、可選地,存儲服務(wù)端在將應(yīng)用數(shù)據(jù)寫入多個(gè)內(nèi)存文件描述符時(shí),以內(nèi)存文件描述符為粒度,將應(yīng)用數(shù)據(jù)拆分后寫入多個(gè)內(nèi)存文件描述符。
13、作為一種可能的實(shí)現(xiàn)方式,存儲服務(wù)端以內(nèi)存文件描述符為粒度,將應(yīng)用數(shù)據(jù)中的冷數(shù)據(jù)進(jìn)行持久化存儲,并將持久化存儲后的內(nèi)存文件描述符釋放回內(nèi)存文件描述符池。如此,針對同一數(shù)據(jù)對象的熱數(shù)據(jù)和冷數(shù)據(jù),可以將熱數(shù)據(jù)緩存于內(nèi)存中,將冷數(shù)據(jù)落盤至系統(tǒng)文件中進(jìn)行持久化存儲,使內(nèi)存能夠緩存更多數(shù)據(jù)對象的熱數(shù)據(jù),提高內(nèi)存利用率。
14、第二方面,本技術(shù)提供一種數(shù)據(jù)處理方法,應(yīng)用于分布式系統(tǒng)中的存儲客戶端,存儲客戶端與分布式系統(tǒng)中的存儲服務(wù)端連接。在數(shù)據(jù)處理方法的流程中,首先存儲客戶端向存儲服務(wù)端發(fā)送針對目標(biāo)數(shù)據(jù)對象的讀取請求,以指示存儲服務(wù)端確定目標(biāo)數(shù)據(jù)對象包含的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間的數(shù)據(jù)范圍對應(yīng)的多個(gè)內(nèi)存文件描述符,并向存儲客戶端發(fā)送多個(gè)內(nèi)存文件描述符的內(nèi)存地址。然后,存儲客戶端將多個(gè)內(nèi)存文件描述符的內(nèi)存地址映射為連續(xù)地址空間。最后,存儲客戶端向應(yīng)用返回連續(xù)地址空間的起始地址。
15、作為一種可能的實(shí)現(xiàn)方式,存儲客戶端還可以向存儲服務(wù)端發(fā)送申請請求。申請請求包括數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù),用于請求寫入目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)。存儲服務(wù)端根據(jù)申請請求在內(nèi)存文件描述符池中確定多個(gè)內(nèi)存文件描述符,并根據(jù)申請請求將應(yīng)用數(shù)據(jù)寫入多個(gè)內(nèi)存文件描述符指示的內(nèi)存文件。內(nèi)存文件描述符池包括未釋放的至少一個(gè)內(nèi)存文件描述符。然后,存儲客戶端將多個(gè)內(nèi)存文件描述符的內(nèi)存地址映射為連續(xù)地址空間,向連續(xù)地址空間寫入應(yīng)用數(shù)據(jù),再向應(yīng)用返回?cái)?shù)據(jù)對象的對象標(biāo)識。其中,對象標(biāo)識用于指示目標(biāo)數(shù)據(jù)對象。
16、第二方面與第一方面區(qū)別在于執(zhí)行主體不同,第二方面可以結(jié)合第一方面的任一種可能的實(shí)現(xiàn)方式,在此不再贅述。
17、第三方面,本技術(shù)提供一種數(shù)據(jù)處理系統(tǒng),包括存儲客戶端和存儲服務(wù)端。存儲服務(wù)端用于接收存儲客戶端發(fā)送的針對目標(biāo)數(shù)據(jù)對象的讀取請求;讀取請求攜帶目標(biāo)數(shù)據(jù)對象的參數(shù),目標(biāo)數(shù)據(jù)對象的參數(shù)用于指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間,其中,目標(biāo)數(shù)據(jù)對象的參數(shù)包括目標(biāo)數(shù)據(jù)對象的標(biāo)識、目標(biāo)數(shù)據(jù)對象的偏移地址和目標(biāo)數(shù)據(jù)對象的長度;確定地址空間對應(yīng)的多個(gè)內(nèi)存文件描述符;多個(gè)內(nèi)存文件描述符指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù);向存儲客戶端發(fā)送多個(gè)內(nèi)存文件描述符的內(nèi)存地址。存儲客戶端用于向存儲服務(wù)端發(fā)送針對目標(biāo)數(shù)據(jù)對象的讀取請求,將多個(gè)內(nèi)存文件描述符的內(nèi)存地址映射為連續(xù)地址空間,向應(yīng)用返回連續(xù)地址空間的起始地址。
18、第四方面,本技術(shù)提供一種數(shù)據(jù)處理裝置,包括收發(fā)模塊和處理模塊。收發(fā)模塊,用于接收存儲客戶端發(fā)送的針對目標(biāo)數(shù)據(jù)對象的讀取請求;讀取請求攜帶目標(biāo)數(shù)據(jù)對象的參數(shù),目標(biāo)數(shù)據(jù)對象的參數(shù)用于指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間,其中,目標(biāo)數(shù)據(jù)對象的參數(shù)包括目標(biāo)數(shù)據(jù)對象的標(biāo)識、目標(biāo)數(shù)據(jù)對象的偏移地址和目標(biāo)數(shù)據(jù)對象的長度。處理模塊,用于確定地址空間對應(yīng)的多個(gè)內(nèi)存文件描述符;多個(gè)內(nèi)存文件描述符指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)。收發(fā)模塊,還用于向存儲客戶端發(fā)送多個(gè)內(nèi)存文件描述符的內(nèi)存地址。
19、作為一種可能的實(shí)現(xiàn)方式,數(shù)據(jù)處理裝置還可以包括執(zhí)行第一方面所述的數(shù)據(jù)處理方法的操作步驟的其他模塊。
20、第五方面,本技術(shù)提供一種數(shù)據(jù)處理裝置,包括收發(fā)模塊和處理模塊。收發(fā)模塊,用于向存儲服務(wù)端發(fā)送針對目標(biāo)數(shù)據(jù)對象的讀取請求;讀取請求攜帶目標(biāo)數(shù)據(jù)對象的參數(shù),目標(biāo)數(shù)據(jù)對象的參數(shù)用于指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)在內(nèi)存中的地址空間,其中,目標(biāo)數(shù)據(jù)對象的參數(shù)包括目標(biāo)數(shù)據(jù)對象的標(biāo)識、目標(biāo)數(shù)據(jù)對象的偏移地址和目標(biāo)數(shù)據(jù)對象的長度,以指示存儲服務(wù)端確定地址空間對應(yīng)的多個(gè)內(nèi)存文件描述符,向存儲客戶端發(fā)送多個(gè)內(nèi)存文件描述符的內(nèi)存地址;多個(gè)內(nèi)存文件描述符指示目標(biāo)數(shù)據(jù)對象包括的應(yīng)用數(shù)據(jù)。處理模塊,用于將多個(gè)內(nèi)存文件描述符的內(nèi)存地址映射為連續(xù)地址空間。收發(fā)模塊,還用于向應(yīng)用返回連續(xù)地址空間的起始地址。
21、作為一種可能的實(shí)現(xiàn)方式,數(shù)據(jù)處理裝置還可以包括執(zhí)行第二方面所述的數(shù)據(jù)處理方法的操作步驟的其他模塊。
22、關(guān)于第二方面、第三方面、第四方面、第五方面的技術(shù)原理和有益效果,可以參考前述第一方面的相關(guān)描述,在此不再贅述。
23、第六方面,提供一種計(jì)算設(shè)備集群,包括至少一個(gè)計(jì)算設(shè)備,每個(gè)計(jì)算設(shè)備包括處理器和存儲器。至少一個(gè)計(jì)算設(shè)備的處理器用于執(zhí)行至少一個(gè)計(jì)算設(shè)備的存儲器中存儲的指令,以使得計(jì)算設(shè)備集群執(zhí)行上述第一方面中任意一種可能的實(shí)施方式所述的數(shù)據(jù)處理方法。
24、第七方面,提供一種計(jì)算設(shè)備集群,包括至少一個(gè)計(jì)算設(shè)備,每個(gè)計(jì)算設(shè)備包括處理器和存儲器。至少一個(gè)計(jì)算設(shè)備的處理器用于執(zhí)行至少一個(gè)計(jì)算設(shè)備的存儲器中存儲的指令,以使得計(jì)算設(shè)備集群執(zhí)行上述第二方面中任意一種可能的實(shí)施方式所述的數(shù)據(jù)處理方法。
25、第八方面,提供一種計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序或指令,當(dāng)該計(jì)算機(jī)程序或指令在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行上述第一方面中任意一種可能的實(shí)施方式所述的數(shù)據(jù)處理方法。
26、第九方面,提供一種計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序或指令,當(dāng)該計(jì)算機(jī)程序或指令在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行上述第二方面中任意一種可能的實(shí)施方式所述的數(shù)據(jù)處理方法。
27、第十方面,提供一種計(jì)算機(jī)可讀存儲介質(zhì)。該可讀存儲介質(zhì)包括:計(jì)算機(jī)程序或指令;當(dāng)該計(jì)算機(jī)程序或指令在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行上述第一方面中任意一種可能的實(shí)施方式所述的數(shù)據(jù)處理方法。
28、第十一方面,提供一種計(jì)算機(jī)可讀存儲介質(zhì)。該可讀存儲介質(zhì)包括:計(jì)算機(jī)程序或指令;當(dāng)該計(jì)算機(jī)程序或指令在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行上述第二方面中任意一種可能的實(shí)施方式所述的數(shù)據(jù)處理方法。