两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種訪問共享內(nèi)存的方法和裝置制造方法

文檔序號:7775151閱讀:224來源:國知局
一種訪問共享內(nèi)存的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種訪問共享內(nèi)存的方法和裝置,屬于計算機(jī)領(lǐng)域。該方法包括:獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,所述目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),所述共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系;調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口API;通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作。該裝置包括:第一獲取模塊、調(diào)用模塊和訪問模塊。本發(fā)明中訪問節(jié)點(diǎn)可以直接從共享內(nèi)存映射表中獲取目的節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,簡化了訪問共享內(nèi)存的處理過程;并且,通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,提高了共享內(nèi)存的讀寫性能。
【專利說明】一種訪問共享內(nèi)存的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)領(lǐng)域,特別涉及一種訪問共享內(nèi)存的方法和裝置。
【背景技術(shù)】
[0002]在服務(wù)器集群中,共享內(nèi)存是指可以被服務(wù)器集群中的不同節(jié)點(diǎn)服務(wù)器訪問的大容量內(nèi)存,當(dāng)節(jié)點(diǎn)服務(wù)器本地內(nèi)存不足時,節(jié)點(diǎn)服務(wù)器可以訪問共享內(nèi)存,對共享內(nèi)存進(jìn)行讀寫操作。
[0003]現(xiàn)有技術(shù)中提供了一種訪問共享內(nèi)存的方法,可以為:在計算機(jī)集群中,選取一個代理服務(wù)器,代理服務(wù)器對集群中的共享內(nèi)存進(jìn)行管理。當(dāng)集群中某個節(jié)點(diǎn)服務(wù)器的內(nèi)存不足時,節(jié)點(diǎn)服務(wù)器發(fā)送調(diào)用請求給代理服務(wù)器,該調(diào)用請求攜帶節(jié)點(diǎn)服務(wù)器的標(biāo)識;代理服務(wù)器接收節(jié)點(diǎn)服務(wù)器發(fā)送的調(diào)用請求,并根據(jù)該調(diào)用請求為節(jié)點(diǎn)服務(wù)器分配共享內(nèi)存,發(fā)送分配的共享內(nèi)存的標(biāo)識給節(jié)點(diǎn)服務(wù)器。節(jié)點(diǎn)服務(wù)器根據(jù)共享內(nèi)存的標(biāo)識遠(yuǎn)程調(diào)用共享內(nèi)存;并根據(jù)讀寫算法對該調(diào)用的共享內(nèi)存進(jìn)行讀寫操作。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]當(dāng)節(jié)點(diǎn)服務(wù)器本地內(nèi)存不足時,需要發(fā)送請求給代理服務(wù)器,由代理服務(wù)器分配共享內(nèi)存,操作復(fù)雜;并且,節(jié)點(diǎn)服務(wù)器遠(yuǎn)程調(diào)用共享內(nèi)存的過程消耗大量系統(tǒng)資源,降低系統(tǒng)性能。

【發(fā)明內(nèi)容】

[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種訪問共享內(nèi)存的方法和裝置。所述技術(shù)方案如下:
[0007]第一方面,本發(fā)明提供了一種訪問共享內(nèi)存的方法,所述方法包括:
[0008]獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,所述目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),所述共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系;
[0009]調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口 API ;
[0010]通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀
寫操作。
[0011]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作,包括:
[0012]通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識將所述待寫入的數(shù)據(jù)寫入所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
[0013]結(jié)合第一方面,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作,包括:
[0014]通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識和所述待讀出的數(shù)據(jù)的標(biāo)識從所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取所述待讀出的數(shù)據(jù);
[0015]接收所述目的節(jié)點(diǎn)發(fā)送的所述待讀出的數(shù)據(jù)。
[0016]結(jié)合第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,包括:
[0017]獲取所述共享內(nèi)存映射表;
[0018]從所述共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為所述目的節(jié)點(diǎn)的標(biāo)識;
[0019]根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識獲取所述目的節(jié)點(diǎn);
[0020]根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識從所述共享內(nèi)存映射表中獲取與所述目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的所述共享內(nèi)存的標(biāo)識。
[0021]結(jié)合第一方面,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識之前,所述方法還包括:
[0022]將自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共享內(nèi)存映射表中。
[0023]結(jié)合第一方面,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識之前,所述方法還包括:
[0024]發(fā)送注冊請求給代理節(jié)點(diǎn),所述注冊請求攜帶自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,使所述代理節(jié)點(diǎn)將所述自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共孚內(nèi)存映射表中。
[0025]結(jié)合第一方面的第三種可能,在第一方面的第六種可能的實(shí)現(xiàn)方式中,所述獲取所述共享內(nèi)存映射表,包括:
[0026]從本地已存儲的數(shù)據(jù)庫中獲取所述共享內(nèi)存映射表;或者,
[0027]發(fā)送第一獲取請求給代理節(jié)點(diǎn),所述第一獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識;接收所述代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
[0028]結(jié)合第一方面的第六種可能,在第一方面的第七種可能的實(shí)現(xiàn)方式中,所述發(fā)送第一獲取請求給代理節(jié)點(diǎn)之后,所述方法還包括:
[0029]判斷在第一預(yù)設(shè)時間內(nèi)是否接收到所述代理節(jié)點(diǎn)發(fā)送的所述共享內(nèi)存映射表;
[0030]如果否,發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),所述第二獲取請求攜帶所述自身節(jié)點(diǎn)的標(biāo)識,所述備份代理節(jié)點(diǎn)為所述代理節(jié)點(diǎn)的備份節(jié)點(diǎn);
[0031]接收所述備份代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
[0032]結(jié)合第一方面的第三種可能,在第一方面的第八種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0033]每隔第二預(yù)設(shè)時間獲取所述共享內(nèi)存映射表;
[0034]將本地已存儲的所述共享內(nèi)存映射表更新為所述獲取的共享內(nèi)存映射表。
[0035]第二方面,本發(fā)明提供了一種訪問共享內(nèi)存的裝置,所述裝置包括:
[0036]第一獲取模塊,用于獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,所述目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),所述共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系;
[0037]調(diào)用模塊,用于調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口 API ;[0038]訪問模塊,用于通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共孚內(nèi)存進(jìn)行讀與操作。
[0039]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述訪問模塊,包括:
[0040]第一發(fā)送單元,用于通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識將所述待寫入的數(shù)據(jù)寫入所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
[0041]結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述訪問模塊,包括:
[0042]第二發(fā)送單元,用于通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識和所述待讀出的數(shù)據(jù)的標(biāo)識從所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取所述待讀出的數(shù)據(jù);
[0043]接收單元,用于接收所述目的節(jié)點(diǎn)發(fā)送的所述待讀出的數(shù)據(jù)。
[0044]結(jié)合第二方面,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述第一獲取模塊,包括:
[0045]第一獲取單元,用于獲取所述共享內(nèi)存映射表;
[0046]選擇單元,用于從所述共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為所述目的節(jié)點(diǎn)的標(biāo)識;
[0047]第二獲取單元,用于根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識獲取所述目的節(jié)點(diǎn);
[0048]第三獲取單元,用于根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識從所述共享內(nèi)存映射表中獲取與所述目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的所述共享內(nèi)存的標(biāo)識。
[0049]結(jié)合第二方面,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0050]保存模塊,用于將自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共享內(nèi)存映射表中。
[0051]結(jié)合第二方面,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0052]第一發(fā)送模塊,用于發(fā)送注冊請求給代理節(jié)點(diǎn),所述注冊請求攜帶自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,使所述代理節(jié)點(diǎn)將所述自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共孚內(nèi)存映射表中。
[0053]結(jié)合第二方面的第三種可能,在第二方面的第六種可能的實(shí)現(xiàn)方式中,所述第一獲取單元,用于從本地已存儲的數(shù)據(jù)庫中獲取所述共享內(nèi)存映射表;或者,所述第一獲取單元,用于發(fā)送第一獲取請求給代理節(jié)點(diǎn),所述第一獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識;接收所述代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
[0054]結(jié)合第二方面的第六種可能,在第二方面的第七種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0055]判斷模塊,用于判斷在第一預(yù)設(shè)時間內(nèi)是否接收到所述代理節(jié)點(diǎn)發(fā)送的所述共享內(nèi)存映射表;
[0056]如果否,第二發(fā)送模塊,用于發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),所述第二獲取請求攜帶所述自身節(jié)點(diǎn)的標(biāo)識,所述備份代理節(jié)點(diǎn)為所述代理節(jié)點(diǎn)的備份節(jié)點(diǎn);
[0057]接收模塊,用于接收所述備份代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
[0058]結(jié)合第二方面的第三種可能,在第二方面的第八種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0059]第二獲取模塊,用于每隔第二預(yù)設(shè)時間獲取所述共享內(nèi)存映射表;
[0060]更新模塊,用于將本地已存儲的所述共享內(nèi)存映射表更新為所述獲取的共享內(nèi)存映射表。
[0061]第三方面,本發(fā)明提供了一種訪問共享內(nèi)存的裝置,所述裝置包括:存儲器和處理器,所述存儲器存儲程序代碼,所述處理器用于調(diào)用所述存儲器中的程序代碼執(zhí)行如第一方面提供的訪問共享內(nèi)存的方法。
[0062]在本發(fā)明實(shí)施例中,訪問節(jié)點(diǎn)從共享內(nèi)存映射表中獲取目的節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,不需要代理節(jié)點(diǎn)分配共享內(nèi)存,簡化了訪問共享內(nèi)存的處理過程;并且,訪問節(jié)點(diǎn)通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,提高了共享內(nèi)存的讀寫性能。
【專利附圖】

【附圖說明】
[0063]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0064]圖1是本發(fā)明實(shí)施例1提供的一種訪問共享內(nèi)存的方法流程圖;
[0065]圖2是本發(fā)明實(shí)施例2提供的一種訪問共享內(nèi)存的方法流程圖;
[0066]圖3是本發(fā)明實(shí)施例3提供的一種訪問共享內(nèi)存的裝置結(jié)構(gòu)示意圖;
[0067]圖4是本發(fā)明實(shí)施例4提供的一種訪問共享內(nèi)存的另一裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0068]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0069]實(shí)施例1
[0070]本發(fā)明實(shí)施例提供了 一種訪問共享內(nèi)存的方法。參見圖1,其中,該方法包括:
[0071]101:獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系;
[0072]102:調(diào)用 RDMA (Remote Direct Memory Access,遠(yuǎn)程直接內(nèi)存訪問)的 API(Application Programming Interface,應(yīng)用程序編程接口);
[0073]103:通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作。
[0074]在本發(fā)明實(shí)施例中,訪問節(jié)點(diǎn)從共享內(nèi)存映射表中獲取目的節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,不需要代理節(jié)點(diǎn)分配共享內(nèi)存,簡化了訪問共享內(nèi)存的處理過程;并且,訪問節(jié)點(diǎn)通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,提高了共享內(nèi)存的讀寫性能。
[0075]實(shí)施例2
[0076]本發(fā)明實(shí)施例提供了一種訪問共享內(nèi)存的方法。參見圖2,其中,該方法包括:[0077]201:訪問節(jié)點(diǎn)將節(jié)點(diǎn)的標(biāo)識和共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共孚內(nèi)存映射表中;
[0078]其中,訪問節(jié)點(diǎn)為服務(wù)器集群中的任一節(jié)點(diǎn),用于訪問服務(wù)器集群中目的節(jié)點(diǎn)的共享內(nèi)存的節(jié)點(diǎn);目的節(jié)點(diǎn)為共享內(nèi)存映射表一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),目的節(jié)點(diǎn)為被訪問節(jié)點(diǎn)。
[0079]其中,共享內(nèi)存映射表位于共享內(nèi)存管理組件中;共享內(nèi)存管理組件用于對共享內(nèi)存進(jìn)行管理,且一個服務(wù)器集群中存在一個或多個共享內(nèi)存管理組件。當(dāng)服務(wù)器集群中存在一個共享內(nèi)存管理組件時,該共享內(nèi)存管理組件部署在代理節(jié)點(diǎn)中,代理節(jié)點(diǎn)為服務(wù)器集群中任一節(jié)點(diǎn);當(dāng)服務(wù)器集群中存在多個共享內(nèi)存管理組件時,共享內(nèi)存管理組件可以部署在服務(wù)器集群中包括的每個節(jié)點(diǎn)上。
[0080]其中,如果訪問節(jié)點(diǎn)上沒有安裝共享內(nèi)存管理組件,服務(wù)器集群中僅代理節(jié)點(diǎn)上安裝共孚內(nèi)存管理組件時,訪問節(jié)點(diǎn)將節(jié)點(diǎn)的標(biāo)識和共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中的操作,可以為:
[0081 ] 訪問節(jié)點(diǎn)發(fā)送注冊請求給代理節(jié)點(diǎn),該注冊請求攜帶訪問節(jié)點(diǎn)的標(biāo)識和訪問節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,代理節(jié)點(diǎn)接收訪問節(jié)點(diǎn)發(fā)送的注冊請求,并根據(jù)注冊請求獲取訪問節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,將訪問節(jié)點(diǎn)的標(biāo)識和訪問節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中。
[0082]其中,如果訪問節(jié)點(diǎn)上安裝共享內(nèi)存管理組件時,訪問節(jié)點(diǎn)將節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中的操作,可以為:
[0083]訪問節(jié)點(diǎn)發(fā)送第一注冊請求給本節(jié)點(diǎn)的共享內(nèi)存管理組件,該第一注冊請求攜帶訪問節(jié)點(diǎn)的標(biāo)識和訪問節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識;共享內(nèi)存管理組件接收訪問節(jié)點(diǎn)發(fā)送的第一注冊請求,并根據(jù)第一注冊請求獲取訪問節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,將訪問節(jié)點(diǎn)的標(biāo)識和共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共孚內(nèi)存映射表中。
[0084]其中,將訪問節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中的操作,可以為:
[0085]將訪問節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系編碼為64bit數(shù)據(jù),64bit數(shù)據(jù)中包括的高16bit數(shù)據(jù)為訪問節(jié)點(diǎn)的標(biāo)識;64bit數(shù)據(jù)中包括的低48bit數(shù)據(jù)為共享內(nèi)存的標(biāo)識。
[0086]其中,需要說明的是,注冊請求攜帶訪問節(jié)點(diǎn)的標(biāo)識和訪問節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,注冊請求中還可以攜帶共享內(nèi)存的起始地址和長度。第一注冊請求攜帶節(jié)點(diǎn)的標(biāo)識和節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識,第一注冊請求中還可以攜帶共享內(nèi)存的起始地址和長度。
[0087]其中,服務(wù)器集群中每個節(jié)點(diǎn)均將節(jié)點(diǎn)的標(biāo)識和節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中。
[0088]其中,在步驟201之前,需要按照服務(wù)器集群中各節(jié)點(diǎn)的基礎(chǔ)設(shè)施要求進(jìn)行系統(tǒng)安裝和配置,本發(fā)明提供的訪問共享內(nèi)存的方法,依賴于這些配置。
[0089]其中,系統(tǒng)配置包括:RDMA能力的鏈路層、操作系統(tǒng)層、驅(qū)動層和協(xié)議棧層。
[0090]其中,RDMA能力的鏈路層主要由具有RDMA能力的硬件網(wǎng)絡(luò)接口卡提供;例如,無線帶寬 inf iniband 網(wǎng)絡(luò)接口 HCA (Host Channel Adapter,主機(jī)通道適配器)、RoCE (RDMAover Converged Ethernet,基于融合以太網(wǎng)的RDMA)網(wǎng)絡(luò)接口卡或者iWARP (InternetWide-Area RDMA Protocol,廣域因特網(wǎng)上的RDMA協(xié)議)網(wǎng)絡(luò)接口卡。
[0091]其中,操作系統(tǒng)層主要提供操作系統(tǒng)平臺。
[0092]其中,驅(qū)動層主要針對硬件網(wǎng)絡(luò)接口卡提供底層設(shè)備驅(qū)動;例如,可以采用開源OFED (OpenFabrics Enterprise Distribution, OpenFabrics 企業(yè)發(fā)行版),其中已包含的主流RDMA網(wǎng)絡(luò)接口卡的驅(qū)動。
[0093]其中,協(xié)議棧層主要針對RDMA操作,提供協(xié)議處理;例如,可以采用開源的OFED發(fā)布版。
[0094]202:訪問節(jié)點(diǎn)獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識;
[0095]其中,目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn);共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系。
[0096]其中,當(dāng)訪問節(jié)點(diǎn)的內(nèi)存不足時,訪問節(jié)點(diǎn)需要訪問共享內(nèi)存。訪問節(jié)點(diǎn)訪問共享內(nèi)存時,獲取需要訪問的目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識。
[0097]其中,訪問節(jié)點(diǎn)獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識的操作,可以為:
[0098]訪問節(jié)點(diǎn)獲取共享內(nèi)存映射表,從共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為目的節(jié)點(diǎn)的標(biāo)識;訪問節(jié)點(diǎn)根據(jù)目的節(jié)點(diǎn)的標(biāo)識獲取目的節(jié)點(diǎn);并根據(jù)目的節(jié)點(diǎn)的標(biāo)識從共孚內(nèi)存映射表中獲取與目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識。
[0099]其中,需要說明的是,訪問節(jié)點(diǎn)中實(shí)現(xiàn)存儲有目的節(jié)點(diǎn)的標(biāo)識和目的節(jié)點(diǎn)的對應(yīng)關(guān)系,根據(jù)目的節(jié)點(diǎn)的標(biāo)識可以從目的節(jié)點(diǎn)的標(biāo)識和目的節(jié)點(diǎn)的對應(yīng)關(guān)系中獲取與目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的目的節(jié)點(diǎn)。
[0100]其中,從共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為目的節(jié)點(diǎn)的標(biāo)識,根據(jù)目的節(jié)點(diǎn)的標(biāo)識從共享內(nèi)存映射表中獲取共享內(nèi)存的標(biāo)識的操作,可以為:
[0101]從共享內(nèi)存映射表中選擇一個64bit數(shù)據(jù),解析64bit數(shù)據(jù)包括的高16bit數(shù)據(jù),得到目的節(jié)點(diǎn)的標(biāo)識,解析64bit數(shù)據(jù)包括的低48bit數(shù)據(jù),得到共享內(nèi)存的標(biāo)識。
[0102]其中,如果訪問節(jié)點(diǎn)上安裝共享內(nèi)存管理組件時,訪問節(jié)點(diǎn)獲取共享內(nèi)存映射表的操作,可以為:
[0103]從本地已存儲的數(shù)據(jù)庫中獲取共享內(nèi)存映射表。
[0104]其中,如果訪問節(jié)點(diǎn)上沒有安裝共享內(nèi)存管理組件,服務(wù)器集群中僅代理節(jié)點(diǎn)上安裝共享內(nèi)存管理組件時,訪問節(jié)點(diǎn)獲取共享內(nèi)存映射表的操作,可以為:
[0105]訪問節(jié)點(diǎn)發(fā)送第一獲取請求給代理節(jié)點(diǎn),該第一獲取請求攜帶訪問節(jié)點(diǎn)的標(biāo)識;代理節(jié)點(diǎn)接收訪問節(jié)點(diǎn)發(fā)送的第一獲取請求,并根據(jù)該第一獲取請求獲取訪問節(jié)點(diǎn)的標(biāo)識;代理節(jié)點(diǎn)根據(jù)訪問節(jié)點(diǎn)的標(biāo)識發(fā)送共享內(nèi)存映射表給訪問節(jié)點(diǎn);訪問節(jié)點(diǎn)接收代理節(jié)點(diǎn)根據(jù)訪問節(jié)點(diǎn)的標(biāo)識發(fā)送的共享內(nèi)存映射表。
[0106]其中,訪問節(jié)點(diǎn)發(fā)送第一獲取請求給代理節(jié)點(diǎn)之后,啟動定時器,并判斷在第一預(yù)設(shè)時間內(nèi)是否接收到代理節(jié)點(diǎn)發(fā)送的共享內(nèi)存映射表;如果在第一預(yù)設(shè)時間內(nèi)沒有接收到代理節(jié)點(diǎn)發(fā)送的共享內(nèi)存映射表時,訪問節(jié)點(diǎn)發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),該第二獲取請求攜帶訪問節(jié)點(diǎn)的標(biāo)識,備份代理節(jié)點(diǎn)接收訪問節(jié)點(diǎn)發(fā)送的第二獲取請求,并根據(jù)第二獲取請求獲取訪問節(jié)點(diǎn)的標(biāo)識;備份代理節(jié)點(diǎn)根據(jù)訪問節(jié)點(diǎn)的標(biāo)識發(fā)送共享內(nèi)存映射表給訪問節(jié)點(diǎn);訪問節(jié)點(diǎn)接收備份代理節(jié)點(diǎn)根據(jù)訪問節(jié)點(diǎn)的標(biāo)識發(fā)送的共享內(nèi)存映射表。
[0107]進(jìn)一步地,訪問節(jié)點(diǎn)在第一預(yù)設(shè)時間內(nèi)接收到代理節(jié)點(diǎn)發(fā)送的共享內(nèi)存映射表時,訪問節(jié)點(diǎn)不發(fā)送第二獲取請求給備份代理節(jié)點(diǎn)。
[0108]其中,需要說明的是,備份代理節(jié)點(diǎn)為服務(wù)器集群中除代理節(jié)點(diǎn)之外的任一節(jié)點(diǎn);且備份代理節(jié)點(diǎn)為代理節(jié)點(diǎn)的備份節(jié)點(diǎn);備份節(jié)點(diǎn)中存儲有和代理節(jié)點(diǎn)相同的數(shù)據(jù)庫,即備份代理節(jié)點(diǎn)中存儲有和代理節(jié)點(diǎn)相同的共享內(nèi)存映射表。第一預(yù)設(shè)時間可以根據(jù)系統(tǒng)需要進(jìn)行設(shè)置并更改,在本發(fā)明實(shí)施例中對第一預(yù)設(shè)時間不作具體限定。
[0109]其中,在本發(fā)明實(shí)施例中,設(shè)置備份代理節(jié)點(diǎn),當(dāng)代理節(jié)點(diǎn)宕機(jī)時,可以發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),以獲取共享內(nèi)存映射表,從而能夠保證系統(tǒng)的可靠性。
[0110]203:訪問節(jié)點(diǎn)調(diào)用RDMA的API ;
[0111]其中,RDMA是一種網(wǎng)卡技術(shù),可以通過網(wǎng)絡(luò)將數(shù)據(jù)直接傳入另一臺服務(wù)器的某一塊內(nèi)存區(qū)域,并且,在數(shù)據(jù)傳輸過程中不需要消耗服務(wù)器的處理能力。
[0112]204:訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作;
[0113]其中,訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行寫操作,可以為:
[0114]訪問節(jié)點(diǎn)通過API發(fā)送共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給目的節(jié)點(diǎn),目的節(jié)點(diǎn)接收訪問節(jié)點(diǎn)通過API發(fā)送的共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù),并根據(jù)共享內(nèi)存的標(biāo)識將待寫入的數(shù)據(jù)寫入共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
[0115]其中,訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀操作,可以為:
[0116]訪問節(jié)點(diǎn)通過API發(fā)送共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給目的節(jié)點(diǎn),目的節(jié)點(diǎn)接收訪問節(jié)點(diǎn)發(fā)送的共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識,并根據(jù)共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識從共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取待讀出的數(shù)據(jù)。目的節(jié)點(diǎn)發(fā)送待讀出的數(shù)據(jù)給訪問節(jié)點(diǎn),訪問節(jié)點(diǎn)接收目的節(jié)點(diǎn)發(fā)送的待讀出的數(shù)據(jù)。
[0117]其中,需要說明的是,訪問節(jié)點(diǎn)通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,能夠降低系統(tǒng)性能,提高共享內(nèi)存的讀寫性能。
[0118]其中,訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作之后,發(fā)送響應(yīng)消息給本節(jié)點(diǎn)的共享內(nèi)存管理組件或者代理節(jié)點(diǎn),該響應(yīng)消息攜帶訪問節(jié)點(diǎn)的標(biāo)識。
[0119]其中,如果訪問節(jié)點(diǎn)上沒有安裝共享內(nèi)存管理組件時,訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作之后,訪問節(jié)點(diǎn)發(fā)送第一響應(yīng)消息給代理節(jié)點(diǎn),該第一響應(yīng)消息攜帶目的節(jié)點(diǎn)的標(biāo)識;代理節(jié)點(diǎn)接收訪問節(jié)點(diǎn)發(fā)送的第一響應(yīng)消息,并根據(jù)第一響應(yīng)消息獲取目的節(jié)點(diǎn)的標(biāo)識。代理節(jié)點(diǎn)根據(jù)目的節(jié)點(diǎn)的標(biāo)識將共享內(nèi)存映射表中目的節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系刪除。
[0120]其中,如果訪問節(jié)點(diǎn)上安裝共享內(nèi)存管理組件時,訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作之后,訪問節(jié)點(diǎn)發(fā)送第二響應(yīng)消息給本節(jié)點(diǎn)的共享內(nèi)存管理組件,該第二響應(yīng)消息攜帶目的節(jié)點(diǎn)的標(biāo)識;共享內(nèi)存管理組件接收訪問節(jié)點(diǎn)發(fā)送的第二響應(yīng)消息,并根據(jù)第二響應(yīng)消息獲取目的節(jié)點(diǎn)的標(biāo)識。共享內(nèi)存管理組件根據(jù)目的節(jié)點(diǎn)的標(biāo)識將共享內(nèi)存映射表中目的節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系刪除。
[0121]其中,訪問節(jié)點(diǎn)通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作之后,將目的節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系刪除,能夠保證服務(wù)器集群中共享內(nèi)存與共享內(nèi)存映射表中的共享內(nèi)存一致。
[0122]205:訪問節(jié)點(diǎn)每隔第二預(yù)設(shè)時間獲取共享內(nèi)存映射表,將本地已存儲的共享內(nèi)存映射表更新為獲取的共享內(nèi)存映射表。
[0123]其中,訪問節(jié)點(diǎn)每隔第二預(yù)設(shè)時間更新一次共享內(nèi)存映射表,能夠保證數(shù)據(jù)的一致性,并保證獲取共享內(nèi)存的準(zhǔn)確性。
[0124]其中,需要說明的是,訪問節(jié)點(diǎn)獲取共享內(nèi)存映射表的操作和步驟202中獲取共享內(nèi)存映射表的步驟相同,在此不再贅述。第二預(yù)設(shè)時間可以根據(jù)系統(tǒng)需要進(jìn)行設(shè)置并更改,在本發(fā)明實(shí)施例中,對第二預(yù)設(shè)時間不作具體限定。
[0125]在本發(fā)明實(shí)施例中,訪問節(jié)點(diǎn)從共享內(nèi)存映射表中獲取目的節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,不需要代理節(jié)點(diǎn)分配共享內(nèi)存,簡化了訪問共享內(nèi)存的處理過程;并且,訪問節(jié)點(diǎn)通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,提高了共享內(nèi)存的讀寫性能。
[0126]實(shí)施例3
[0127]本發(fā)明實(shí)施例提供了一種訪問共享內(nèi)存的裝置。參見圖3,其中,該裝置包括:
[0128]第一獲取模塊301,用于獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系;
[0129]調(diào)用模塊302,用于調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口 API ;
[0130]訪問模塊303,用于通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作。
[0131 ] 進(jìn)一步地,訪問模塊303,包括:
[0132]第一發(fā)送單元,用于通過API發(fā)送共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給目的節(jié)點(diǎn),使目的節(jié)點(diǎn)根據(jù)共享內(nèi)存的標(biāo)識將待寫入的數(shù)據(jù)寫入共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
[0133]進(jìn)一步地,訪問模塊303,包括:
[0134]第二發(fā)送單元,用于通過API發(fā)送共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給目的節(jié)點(diǎn),使目的節(jié)點(diǎn)根據(jù)共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識從共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取待讀出的數(shù)據(jù);
[0135]接收單元,用于接收目的節(jié)點(diǎn)發(fā)送的待讀出的數(shù)據(jù)。
[0136]進(jìn)一步地,第一獲取模塊301,包括:
[0137]第一獲取單元,用于獲取共享內(nèi)存映射表;
[0138]選擇單元,用于從共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為目的節(jié)點(diǎn)的標(biāo)識;
[0139]第二獲取單元,用于根據(jù)目的節(jié)點(diǎn)的標(biāo)識獲取目的節(jié)點(diǎn);
[0140]第三獲取單元,用于根據(jù)目的節(jié)點(diǎn)的標(biāo)識從共享內(nèi)存映射表中獲取與目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識。
[0141]進(jìn)一步地,該裝置還包括:[0142]保存模塊,用于將自身節(jié)點(diǎn)的標(biāo)識和自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中。
[0143]進(jìn)一步地,該裝置還包括:
[0144]第一發(fā)送模塊,用于發(fā)送注冊請求給代理節(jié)點(diǎn),注冊請求攜帶自身節(jié)點(diǎn)的標(biāo)識和自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,使代理節(jié)點(diǎn)將自身節(jié)點(diǎn)的標(biāo)識和自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中。
[0145]進(jìn)一步地,第一獲取單元,用于從本地已存儲的數(shù)據(jù)庫中獲取共享內(nèi)存映射表;或者,第一獲取單元,用于發(fā)送第一獲取請求給代理節(jié)點(diǎn),第一獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識;接收代理節(jié)點(diǎn)根據(jù)自身節(jié)點(diǎn)的標(biāo)識發(fā)送的共享內(nèi)存映射表。
[0146]進(jìn)一步地,該裝置還包括:
[0147]判斷模塊,用于判斷在第一預(yù)設(shè)時間內(nèi)是否接收到代理節(jié)點(diǎn)發(fā)送的共享內(nèi)存映射表;
[0148]如果否,第二發(fā)送模塊,用于發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),第二獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識,備份代理節(jié)點(diǎn)為代理節(jié)點(diǎn)的備份節(jié)點(diǎn);
[0149]接收模塊,用于接收備份代理節(jié)點(diǎn)根據(jù)自身節(jié)點(diǎn)的標(biāo)識發(fā)送的共享內(nèi)存映射表。
[0150]進(jìn)一步地,該裝置還包括:
[0151]第二獲取模塊,用于每隔第二預(yù)設(shè)時間獲取共享內(nèi)存映射表;
[0152]更新模塊,用于將本地已存儲的共享內(nèi)存映射表更新為獲取的共享內(nèi)存映射表。
[0153]在本發(fā)明實(shí)施例中,訪問節(jié)點(diǎn)從共享內(nèi)存映射表中獲取目的節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,不需要代理節(jié)點(diǎn)分配共享內(nèi)存,簡化了訪問共享內(nèi)存的處理過程;并且,訪問節(jié)點(diǎn)通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,提高了共享內(nèi)存的讀寫性能。
[0154]實(shí)施例4
[0155]本發(fā)明實(shí)施例提供了一種訪問共享內(nèi)存的裝置。參見圖4,其中,該裝置包括:存儲器401和處理器402,該存儲器401存儲程序代碼,該處理器402用于調(diào)用存儲器中的程序代碼執(zhí)行如下訪問共享內(nèi)存的方法:
[0156]獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系;
[0157]調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口 API ;
[0158]通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作。
[0159]進(jìn)一步地,通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作,包括:
[0160]通過API發(fā)送共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給目的節(jié)點(diǎn),使目的節(jié)點(diǎn)根據(jù)共享內(nèi)存的標(biāo)識將待寫入的數(shù)據(jù)寫入共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
[0161]進(jìn)一步地,通過API對目的節(jié)點(diǎn)上的共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作,包括:
[0162]通過API發(fā)送共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給目的節(jié)點(diǎn),使目的節(jié)點(diǎn)根據(jù)共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識從共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取待讀出的數(shù)據(jù);
[0163]接收目的節(jié)點(diǎn)發(fā)送的待讀出的數(shù)據(jù)。
[0164]進(jìn)一步地,獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,包括:
[0165]獲取共享內(nèi)存映射表;
[0166]從共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為目的節(jié)點(diǎn)的標(biāo)識;
[0167]根據(jù)目的節(jié)點(diǎn)的標(biāo)識獲取目的節(jié)點(diǎn);
[0168]根據(jù)目的節(jié)點(diǎn)的標(biāo)識從共享內(nèi)存映射表中獲取與目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識。
[0169]進(jìn)一步地,獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識之前,方法還包括:
[0170]將自身節(jié)點(diǎn)的標(biāo)識和自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中。
[0171]進(jìn)一步地,獲取目的節(jié)點(diǎn)和目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識之前,該方法還包括:
[0172]發(fā)送注冊請求給代理節(jié)點(diǎn),注冊請求攜帶自身節(jié)點(diǎn)的標(biāo)識和自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,使代理節(jié)點(diǎn)將自身節(jié)點(diǎn)的標(biāo)識和自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在共享內(nèi)存映射表中。
[0173]進(jìn)一步地,獲取共享內(nèi)存映射表,包括:
[0174]從本地已存儲的數(shù)據(jù)庫中獲取共享內(nèi)存映射表;或者,
[0175]發(fā)送第一獲取請求給代理節(jié)點(diǎn),第一獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識;接收代理節(jié)點(diǎn)根據(jù)自身節(jié)點(diǎn)的標(biāo)識發(fā)送的共享內(nèi)存映射表。
[0176]進(jìn)一步地,發(fā)送第一獲取請求給代理節(jié)點(diǎn)之后,該方法還包括:
[0177]判斷在第一預(yù)設(shè)時間內(nèi)是否接收到代理節(jié)點(diǎn)發(fā)送的共享內(nèi)存映射表;
[0178]如果否,發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),第二獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識,備份代理節(jié)點(diǎn)為代理節(jié)點(diǎn)的備份節(jié)點(diǎn);
[0179]接收備份代理節(jié)點(diǎn)根據(jù)自身節(jié)點(diǎn)的標(biāo)識發(fā)送的共享內(nèi)存映射表。
[0180]進(jìn)一步地,該方法還包括:
[0181]每隔第二預(yù)設(shè)時間獲取共享內(nèi)存映射表;
[0182]將本地已存儲的共享內(nèi)存映射表更新為獲取的共享內(nèi)存映射表。
[0183]在本發(fā)明實(shí)施例中,訪問節(jié)點(diǎn)從共享內(nèi)存映射表中獲取目的節(jié)點(diǎn)的標(biāo)識和共享內(nèi)存的標(biāo)識,不需要代理節(jié)點(diǎn)分配共享內(nèi)存,簡化了訪問共享內(nèi)存的處理過程;并且,訪問節(jié)點(diǎn)通過調(diào)用API對共享內(nèi)存進(jìn)行讀寫操作,不需要消耗系統(tǒng)資源,提高了共享內(nèi)存的讀寫性能。
[0184]需要說明的是:上述實(shí)施例提供的訪問共享內(nèi)存的裝置在訪問共享內(nèi)存時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的訪問共享內(nèi)存的裝置與訪問共享內(nèi)存的方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0185]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0186] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種訪問共享內(nèi)存的方法,其特征在于,所述方法包括: 獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,所述目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),所述共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系; 調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口 API ; 通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作,包括: 通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識將所述待寫入的數(shù)據(jù)寫入所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
3.如權(quán)利要求1所述的方法,其特征在于,所述通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作,包括: 通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識和所述待讀出的數(shù)據(jù)的標(biāo)識從所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取所述待讀出的數(shù)據(jù); 接收所述目的節(jié)點(diǎn)發(fā)送的所述待讀出的數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,包括: 獲取所述共享內(nèi)存映射表; 從所述共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為所述目的節(jié)點(diǎn)的標(biāo)識; 根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識獲取所述目的節(jié)點(diǎn); 根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識從所述共享內(nèi)存映射表中獲取與所述目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的所述共享內(nèi)存的標(biāo)識。
5.如權(quán)利要求1所述的方法,其特征在于,所述獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識之前,所述方法還包括: 將自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共享內(nèi)存映射表中。
6.如權(quán)利要求1所述的方法,其特征在于,所述獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識之前,所述方法還包括: 發(fā)送注冊請求給代理節(jié)點(diǎn),所述注冊請求攜帶自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,使所述代理節(jié)點(diǎn)將所述自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共孚內(nèi)存映射表中。
7.如權(quán)利要求4所述的方法,其特征在于,所述獲取所述共享內(nèi)存映射表,包括: 從本地已存儲的數(shù)據(jù)庫中獲取所述共享內(nèi)存映射表;或者, 發(fā)送第一獲取請求給代理節(jié)點(diǎn),所述第一獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識;接收所述代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
8.如權(quán)利要求7所述的方法,其特征在于,所述發(fā)送第一獲取請求給代理節(jié)點(diǎn)之后,所述方法還包括: 判斷在第一預(yù)設(shè)時間內(nèi)是否接收到所述代理節(jié)點(diǎn)發(fā)送的所述共享內(nèi)存映射表; 如果否,發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),所述第二獲取請求攜帶所述自身節(jié)點(diǎn)的標(biāo)識,所述備份代理節(jié)點(diǎn)為所述代理節(jié)點(diǎn)的備份節(jié)點(diǎn); 接收所述備份代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
9.如權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 每隔第二預(yù)設(shè)時間獲取所述共享內(nèi)存映射表; 將本地已存儲的所述共享內(nèi)存映射表更新為所述獲取的共享內(nèi)存映射表。
10.一種訪問共享內(nèi)存的裝置,其特征在于,所述裝置包括: 第一獲取模塊,用于獲取目的節(jié)點(diǎn)和所述目的節(jié)點(diǎn)對應(yīng)的共享內(nèi)存的標(biāo)識,所述目的節(jié)點(diǎn)為共享內(nèi)存映射表中的一個節(jié)點(diǎn)的標(biāo)識對應(yīng)的節(jié)點(diǎn),所述共享內(nèi)存映射表用于存儲節(jié)點(diǎn)的標(biāo)識與共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系; 調(diào)用模塊,用于調(diào)用遠(yuǎn)程直接內(nèi)存訪問RDMA的應(yīng)用程序編程接口 API ; 訪問模塊,用于通過所述API對所述目的節(jié)點(diǎn)上的所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存進(jìn)行讀寫操作。
11.如權(quán)利要求10所述的裝置,其特征在于,所述訪問模塊,包括: 第一發(fā)送單元,用于通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待寫入的數(shù)據(jù)給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識將所述待寫入的數(shù)據(jù)寫入所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中。
12.如權(quán)利要求10所述的裝置,其特征在于,所述訪問模塊,包括: 第二發(fā)送單元,用于通過所述API發(fā)送所述共享內(nèi)存的標(biāo)識和待讀出的數(shù)據(jù)的標(biāo)識給所述目的節(jié)點(diǎn),使所述目的節(jié)點(diǎn)根據(jù)所述共享內(nèi)存的標(biāo)識和所述待讀出的數(shù)據(jù)的標(biāo)識從所述共享內(nèi)存的標(biāo)識對應(yīng)的共享內(nèi)存中獲取所述待讀出的數(shù)據(jù); 接收單元,用于接收所述目的節(jié)點(diǎn)發(fā)送的所述待讀出的數(shù)據(jù)。
13.如權(quán)利要求10所述的裝置,其特征在于,所述第一獲取模塊,包括: 第一獲取單兀,用于獲取所述共享內(nèi)存映射表; 選擇單元,用于從所述共享內(nèi)存映射表中選擇一個節(jié)點(diǎn)的標(biāo)識作為所述目的節(jié)點(diǎn)的標(biāo)識; 第二獲取單元,用于根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識獲取所述目的節(jié)點(diǎn); 第三獲取單元,用于根據(jù)所述目的節(jié)點(diǎn)的標(biāo)識從所述共享內(nèi)存映射表中獲取與所述目的節(jié)點(diǎn)的標(biāo)識對應(yīng)的所述共享內(nèi)存的標(biāo)識。
14.如權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括: 保存模塊,用于將自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共享內(nèi)存映射表中。
15.如權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括: 第一發(fā)送模塊,用于發(fā)送注冊請求給代理節(jié)點(diǎn),所述注冊請求攜帶自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共享內(nèi)存的標(biāo)識,使所述代理節(jié)點(diǎn)將所述自身節(jié)點(diǎn)的標(biāo)識和所述自身節(jié)點(diǎn)的標(biāo)識對應(yīng)的共孚內(nèi)存的標(biāo)識的對應(yīng)關(guān)系保存在所述共孚內(nèi)存映射表中。
16.如權(quán)利要求13所述的裝置,其特征在于,所述第一獲取單元,用于從本地已存儲的數(shù)據(jù)庫中獲取所述共享內(nèi)存映射表;或者,所述第一獲取單元,用于發(fā)送第一獲取請求給代理節(jié)點(diǎn),所述第一獲取請求攜帶自身節(jié)點(diǎn)的標(biāo)識;接收所述代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
17.如權(quán)利要求16所述的裝置,其特征在于,所述裝置還包括: 判斷模塊,用于判斷在第一預(yù)設(shè)時間內(nèi)是否接收到所述代理節(jié)點(diǎn)發(fā)送的所述共享內(nèi)存映射表; 如果否,第二發(fā)送模塊,用于發(fā)送第二獲取請求給備份代理節(jié)點(diǎn),所述第二獲取請求攜帶所述自身節(jié)點(diǎn)的標(biāo)識,所述備份代理節(jié)點(diǎn)為所述代理節(jié)點(diǎn)的備份節(jié)點(diǎn); 接收模塊,用于接收所述備份代理節(jié)點(diǎn)根據(jù)所述自身節(jié)點(diǎn)的標(biāo)識發(fā)送的所述共享內(nèi)存映射表。
18.如權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括: 第二獲取模塊,用于每隔第二預(yù)設(shè)時間獲取所述共享內(nèi)存映射表; 更新模塊,用于將本地已存儲的所述共享內(nèi)存映射表更新為所述獲取的共享內(nèi)存映射表。
19.一種訪問共享內(nèi)存的裝置,其特征在于,所述裝置包括:存儲器和處理器,所述存儲器存儲程序代碼,所述處理器用于調(diào)用所述存儲器中的程序代碼執(zhí)行如權(quán)利要求1-9任一所述的訪問共享內(nèi)存的方法`。
【文檔編號】H04L29/06GK103607428SQ201310529433
【公開日】2014年2月26日 申請日期:2013年10月30日 優(yōu)先權(quán)日:2013年10月30日
【發(fā)明者】楊帥, 袁學(xué)文 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武川县| 宝兴县| 怀集县| 元江| 大邑县| 昆山市| 马尔康县| 泸州市| 中牟县| 盖州市| 海兴县| 育儿| 当涂县| 望城县| 馆陶县| 荥阳市| 农安县| 盐边县| 巫山县| 泊头市| 乃东县| 南澳县| 博湖县| 会同县| 兰坪| 酉阳| 图们市| 北安市| 新野县| 永登县| 桂东县| 浠水县| 洛隆县| 舞阳县| 博爱县| 改则县| 新丰县| 金堂县| 南昌市| 灵山县| 马山县|