国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種消息收發(fā)的方法、裝置及系統(tǒng)與流程

      文檔序號(hào):11215905閱讀:474來(lái)源:國(guó)知局
      一種消息收發(fā)的方法、裝置及系統(tǒng)與流程

      本發(fā)明涉及通信領(lǐng)域,特別是涉及一種消息收發(fā)的方法、裝置及系統(tǒng)。



      背景技術(shù):

      infiniband(ib)是i/o技術(shù)領(lǐng)域的一種新型體系結(jié)構(gòu),其具有低延時(shí)和高帶寬的特性。而遠(yuǎn)程直接內(nèi)存訪問(wèn)(remotedirectmemoryaccess,rdma)技術(shù)可以將數(shù)據(jù)通過(guò)網(wǎng)絡(luò)直接傳入計(jì)算機(jī)的存儲(chǔ)區(qū)。在ib體系結(jié)構(gòu)上,應(yīng)用rdma協(xié)議進(jìn)行消息通信,可以有效提高集群通信性能。

      rdma協(xié)議有三種發(fā)送消息模式,分別為send/receive模式、write模式以及read模式?;趕end/receive模式進(jìn)行消息發(fā)送時(shí),接收端通過(guò)一次性注冊(cè)足夠的內(nèi)存,以此保證發(fā)送端消息的成功發(fā)送。為了盡可能地使發(fā)送端消息的成功發(fā)送,一次性注冊(cè)的內(nèi)存都很大,導(dǎo)致接收端的內(nèi)存資源消耗較大。另外,send/receive模式不能有效地發(fā)揮rdma協(xié)議的性能優(yōu)勢(shì),即該模式下的消息通信效率較低。



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

      本發(fā)明的目的是提供一種消息收發(fā)的方法、裝置及系統(tǒng),目的在于解決現(xiàn)有技術(shù)在rdma協(xié)議的send/receive模式下進(jìn)行消息收發(fā)時(shí)系統(tǒng)資源占用較多且通信效率較低的問(wèn)題。

      為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種消息收發(fā)的方法,該方法包括:

      比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,所述第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于所述固定長(zhǎng)度的內(nèi)存單元;

      當(dāng)所述長(zhǎng)度小于所述固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將所述待發(fā)送數(shù)據(jù)發(fā)送至接收端,以使所述接收端將接收到的所述待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,所述第二內(nèi)存單元為預(yù)先分配給所述接收端的存儲(chǔ)空間等于所述固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè);

      當(dāng)所述長(zhǎng)度大于所述固定長(zhǎng)度時(shí),基于所述send/receive模式,將所述待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至所述接收端,以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于所述rdma協(xié)議的read模式,根據(jù)所述地址信息,獲取所述待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元。

      可選地,在所述將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元之后還包括:

      接收所述接收端反饋的接收成功消息,釋放所述待發(fā)送數(shù)據(jù)的內(nèi)存。

      可選地,所述將所述待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至所述接收端包括:

      將所述待發(fā)送數(shù)據(jù)的所述長(zhǎng)度信息和所述地址信息寫入第三內(nèi)存單元;

      基于所述rdma協(xié)議的postsr操作,將所述長(zhǎng)度信息和所述地址信息發(fā)送至所述接收端。

      可選地,所述以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于所述rdma協(xié)議的read模式,根據(jù)所述地址信息,獲取所述待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元包括:

      以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的所述數(shù)量;

      比較所述數(shù)量與第二內(nèi)存單元剩余數(shù)量的大??;

      當(dāng)所述第二內(nèi)存單元剩余數(shù)量小于所述數(shù)量時(shí),主動(dòng)申請(qǐng)第一數(shù)量個(gè)所述第二內(nèi)存單元,所述第一數(shù)量為所述數(shù)量和所述第二內(nèi)存單元剩余數(shù)量的差值;

      將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元。

      本發(fā)明還提供了一種消息收發(fā)的裝置,該裝置包括:

      比較模塊,用于比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,所述第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于所述固定長(zhǎng)度的內(nèi)存單元;

      第一發(fā)送模塊,用于當(dāng)所述長(zhǎng)度小于所述固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將所述待發(fā)送數(shù)據(jù)發(fā)送至接收端,以使所述接收端將接收到的所述待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,所述第二內(nèi)存單元為預(yù)先分配給所述接收端的存儲(chǔ)空間等于所述固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè);

      第二發(fā)送模塊,用于當(dāng)所述長(zhǎng)度大于所述固定長(zhǎng)度時(shí),基于所述rdma協(xié)議的所述send/receive模式,將所述待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至所述接收端,以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于所述rdma協(xié)議的read模式,根據(jù)所述地址信息,獲取所述待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元。

      可選地,還包括:

      釋放模塊,用于接收所述接收端反饋的接收成功消息,釋放所述待發(fā)送數(shù)據(jù)的內(nèi)存。

      可選地,所述第二發(fā)送模塊包括:

      寫入單元,用于將所述待發(fā)送數(shù)據(jù)的所述長(zhǎng)度信息和所述地址信息寫入第三內(nèi)存單元;

      發(fā)送單元,用于基于所述rdma協(xié)議的postsr操作,將所述長(zhǎng)度信息和所述地址信息發(fā)送至所述接收端。

      此外,本發(fā)明還提供了一種消息收發(fā)的系統(tǒng),該系統(tǒng)包括接收端和發(fā)送端;

      所述發(fā)送端比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,所述第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于所述固定長(zhǎng)度的內(nèi)存單元;當(dāng)所述長(zhǎng)度小于所述固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將所述待發(fā)送數(shù)據(jù)發(fā)送至所述接收端;當(dāng)所述長(zhǎng)度大于所述固定長(zhǎng)度時(shí),基于所述send/receive模式,將所述待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至所述接收端;

      所述接收端將接收到的所述待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,所述第二內(nèi)存單元為預(yù)先分配給所述接收端的存儲(chǔ)空間等于所述固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè);或根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于所述rdma協(xié)議的read模式,根據(jù)所述地址信息,獲取所述待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元。

      本發(fā)明所提供的一種消息收發(fā)的方法、裝置及系統(tǒng),通過(guò)比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于固定長(zhǎng)度的內(nèi)存單元;當(dāng)長(zhǎng)度小于固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將待發(fā)送數(shù)據(jù)至接收端,以使接收端將接收到的待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,第二內(nèi)存單元為預(yù)先分配給接收端的存儲(chǔ)空間等于固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè);當(dāng)長(zhǎng)度大于固定長(zhǎng)度時(shí),基于send/receive模式,將待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至接收端,以使接收端根據(jù)長(zhǎng)度信息,計(jì)算所需第二內(nèi)存單元的數(shù)量,基于rdma協(xié)議的read模式,根據(jù)地址信息,獲取待發(fā)送數(shù)據(jù),將待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)第二內(nèi)存單元。本申請(qǐng)將send/receive模式和read模式相結(jié)合,進(jìn)行消息收發(fā),且消息的傳遞主要基于read模式,對(duì)系統(tǒng)資源的占用較少,通信效率較高??梢?,本申請(qǐng)有利于降低系統(tǒng)資源占用率,提高通信效率。

      附圖說(shuō)明

      為了更清楚的說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1為本發(fā)明實(shí)施例所提供的消息收發(fā)方法的一種具體實(shí)施方式的流程示意圖;

      圖2為本發(fā)明實(shí)施例所提供的消息收發(fā)裝置的結(jié)構(gòu)框圖;

      圖3為本發(fā)明實(shí)施例所提供的消息收發(fā)系統(tǒng)交互示意圖。

      具體實(shí)施方式

      為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

      請(qǐng)參見圖1,圖1為本發(fā)明實(shí)施例所提供的消息收發(fā)方法的一種具體實(shí)施方式的流程示意圖,該方法包括以下步驟:

      步驟101:比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,所述第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于所述固定長(zhǎng)度的內(nèi)存單元。

      需要說(shuō)明的是,上述第一內(nèi)存單元可以是指發(fā)送端主動(dòng)申請(qǐng)的存儲(chǔ)模塊,其存儲(chǔ)空間的大小為固定長(zhǎng)度,可以將固定長(zhǎng)度記為l,此時(shí),第一內(nèi)存單元所能存放數(shù)據(jù)的長(zhǎng)度為l個(gè)字節(jié)。

      發(fā)送端可以向hca卡中注冊(cè)m個(gè)第一內(nèi)存單元,即系統(tǒng)向發(fā)送端分配m*l個(gè)字節(jié)存儲(chǔ)空間。同時(shí),接收端也會(huì)向hca卡中注冊(cè)n個(gè)第二內(nèi)存單元,每個(gè)第二內(nèi)存單元所能存儲(chǔ)的數(shù)據(jù)長(zhǎng)度等于固定長(zhǎng)度l,即系統(tǒng)會(huì)向接收端分配n*l個(gè)字節(jié)存儲(chǔ)空間。此處的第二內(nèi)存單元與下文中的第二內(nèi)存單元等同。

      當(dāng)發(fā)送端需要發(fā)送待發(fā)送數(shù)據(jù),其先計(jì)算待發(fā)送數(shù)據(jù)的字節(jié)長(zhǎng)度,可以將字節(jié)長(zhǎng)度記為len,然后再比較待發(fā)送數(shù)據(jù)的字節(jié)長(zhǎng)度和第一內(nèi)存單元所能存儲(chǔ)的字節(jié)長(zhǎng)度的大小,即len和l之間的大小。

      步驟102:當(dāng)所述長(zhǎng)度小于所述固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將所述待發(fā)送數(shù)據(jù)發(fā)送至接收端,以使所述接收端將接收到的所述待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,所述第二內(nèi)存單元為預(yù)先分配給所述接收端的存儲(chǔ)空間等于所述固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè)。

      具體地,發(fā)送端在判斷出所要發(fā)送的數(shù)據(jù)的長(zhǎng)度小于一個(gè)內(nèi)存單元的存儲(chǔ)長(zhǎng)度時(shí),即單個(gè)第二內(nèi)存單元可以存儲(chǔ)該數(shù)據(jù)。發(fā)送端則利用rdma協(xié)議的send/receive模式,將以消息的形式將數(shù)據(jù)發(fā)送給接收端。

      接收端在接收數(shù)據(jù)之后,由于其并不知道所發(fā)送來(lái)的消息是否為待發(fā)送數(shù)據(jù),故其需要對(duì)接收到的消息進(jìn)行判斷,判斷該消息是否為待發(fā)送數(shù)據(jù)。如果是待發(fā)送數(shù)據(jù),則解析消息,將數(shù)據(jù)進(jìn)行存儲(chǔ)至單個(gè)第二內(nèi)存單元中。

      需要說(shuō)明的是,上述第二內(nèi)存單元和上文提到的第二內(nèi)存單元是等同的,即接收端上有預(yù)先分配的n*l個(gè)第二內(nèi)存單元。n的取值可以是任意的。

      接收端在初次啟動(dòng)之后,為了保證發(fā)送端能夠成功發(fā)送消息,需要向hca卡中注冊(cè)內(nèi)存塊。而現(xiàn)有技術(shù)中一般是一次性注冊(cè)較大的內(nèi)存,來(lái)保證消息的成功發(fā)送,這樣會(huì)占用系統(tǒng)很多的內(nèi)存資源。而此處利用固定長(zhǎng)度內(nèi)存單元注冊(cè)機(jī)制,只需向hca卡中注冊(cè)少量的內(nèi)存單元,即n*l個(gè)字節(jié),就可以保證發(fā)送端消息的成功發(fā)送。當(dāng)接收端后續(xù)的存儲(chǔ)空間不夠用時(shí),還可以主動(dòng)向系統(tǒng)申請(qǐng)更多的內(nèi)存資源,實(shí)現(xiàn)動(dòng)態(tài)增長(zhǎng)內(nèi)存資源,而不是一次性占用很大的內(nèi)存資源,可以有效地利用系統(tǒng)的內(nèi)存資源。

      步驟103:當(dāng)所述長(zhǎng)度大于所述固定長(zhǎng)度時(shí),基于所述send/receive模式,將所述待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至所述接收端,以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于所述rdma協(xié)議的read模式,根據(jù)所述地址信息,獲取所述待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元。

      需要說(shuō)明的是,上述長(zhǎng)度信息可以是指待發(fā)送數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度信息,上述地址信息可以是指該待發(fā)送數(shù)據(jù)存儲(chǔ)在發(fā)送端的存儲(chǔ)地址信息。

      具體地,當(dāng)發(fā)送端判斷出待發(fā)送數(shù)據(jù)的長(zhǎng)度大于單個(gè)第二內(nèi)存單元的長(zhǎng)度時(shí),則計(jì)算出待發(fā)送數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度,尋找出該待發(fā)送數(shù)據(jù)的存儲(chǔ)地址。然后通過(guò)rdma協(xié)議的send/receive模式,將數(shù)據(jù)長(zhǎng)度信息和存儲(chǔ)地址信息,以消息的形式發(fā)送給接收端。

      發(fā)送端可以利用rdma協(xié)議的postsr操作來(lái)將長(zhǎng)度信息和地址信息發(fā)送至接收端。

      作為一種具體實(shí)施方式,上述將所述待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至所述接收端的過(guò)程可以具體為:將所述待發(fā)送數(shù)據(jù)的所述長(zhǎng)度信息和所述地址信息寫入第三內(nèi)存單元;基于所述rdma協(xié)議的postsr操作,將所述長(zhǎng)度信息和所述地址信息發(fā)送至所述接收端。

      顯而易見地,基于rdma協(xié)議的send/receive模式,利用postsr操作,將長(zhǎng)度信息和地址信息以消息形式發(fā)送至接收端的過(guò)程為本領(lǐng)域技術(shù)人員所熟知,在此不再贅述。

      接收端在接收到消息后,判斷消息是待發(fā)送數(shù)據(jù),還是長(zhǎng)度信息和地址信息。如果是長(zhǎng)度信息和地址信息,先解析消息,得到長(zhǎng)度信息和地址信息;再根據(jù)長(zhǎng)度信息,計(jì)算出存儲(chǔ)該待發(fā)送數(shù)據(jù)所需的第二內(nèi)存單元的個(gè)數(shù),將待發(fā)送數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度除以l,即可以得出第二內(nèi)存單元的個(gè)數(shù)m;接著利用rdma協(xié)議的read模式,以及地址信息,讀取發(fā)送端相應(yīng)存儲(chǔ)地址上的待發(fā)送數(shù)據(jù),最后將獲取到的數(shù)據(jù)存儲(chǔ)至m個(gè)第二內(nèi)存單元。

      在消息收發(fā)過(guò)程中,接收端所剩余的第二內(nèi)存單元個(gè)數(shù)可能不足以存儲(chǔ)待發(fā)送數(shù)據(jù),此時(shí),接收端可以主動(dòng)申請(qǐng)新的內(nèi)存資源,以滿足待發(fā)送數(shù)據(jù)的存儲(chǔ)需求。

      作為一種具體實(shí)施方式,上述以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于所述rdma協(xié)議的read模式,根據(jù)所述地址信息,獲取所述待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元的過(guò)程可以具體為:以使所述接收端根據(jù)所述長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的所述數(shù)量;比較所述數(shù)量與第二內(nèi)存單元剩余數(shù)量的大小;當(dāng)所述第二內(nèi)存單元剩余數(shù)量小于所述數(shù)量時(shí),主動(dòng)申請(qǐng)第一數(shù)量個(gè)所述第二內(nèi)存單元,所述第一數(shù)量為所述數(shù)量和所述第二內(nèi)存單元剩余數(shù)量的差值;將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元。

      具體地,接收端當(dāng)計(jì)算出所需的第二內(nèi)存單元個(gè)數(shù)m后,則確定當(dāng)前內(nèi)存池中剩余的第二內(nèi)存單元個(gè)數(shù),而比較兩者之間的大小,來(lái)判斷待發(fā)送數(shù)據(jù)是否可以成功存儲(chǔ)。當(dāng)?shù)诙?nèi)存單元剩余數(shù)量小于m時(shí),接收端可以主動(dòng)申請(qǐng)新的內(nèi)存資源。

      可以看出,接收端利用固定長(zhǎng)度內(nèi)存單元注冊(cè)機(jī)制,且內(nèi)存單元組成的內(nèi)存池可以動(dòng)態(tài)增長(zhǎng),提供了內(nèi)存資源的利用率。

      而在接收端將數(shù)據(jù)存儲(chǔ)至內(nèi)存單元之后,可以通知發(fā)送端釋放相應(yīng)的內(nèi)存資源。

      作為一種具體實(shí)施方式,在上述將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至所述數(shù)量個(gè)所述第二內(nèi)存單元之后還可以包括:接收所述接收端反饋的接收成功消息,釋放所述待發(fā)送數(shù)據(jù)的內(nèi)存。

      具體地,接收端可以通過(guò)send/receive模式,向發(fā)送端發(fā)送ack消息。發(fā)送端接收到ack消息后,則釋放存儲(chǔ)該待發(fā)送數(shù)據(jù)的內(nèi)存資源。

      本發(fā)明實(shí)施例所提供的消息收發(fā)方法,該方法將send/receive模式和read模式相結(jié)合,進(jìn)行消息收發(fā),且消息的傳遞主要基于read模式,對(duì)系統(tǒng)資源的占用較少,通信效率較高。

      下面對(duì)本發(fā)明實(shí)施例提供的消息收發(fā)裝置進(jìn)行介紹,下文描述的消息收發(fā)裝置與上文描述的消息收發(fā)方法可相互對(duì)應(yīng)參照。

      圖2為本發(fā)明實(shí)施例所提供的消息收發(fā)裝置的結(jié)構(gòu)框圖,參照?qǐng)D2消息收發(fā)裝置可以包括:

      比較模塊21,用于比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于固定長(zhǎng)度的內(nèi)存單元;

      第一發(fā)送模塊22,用于當(dāng)長(zhǎng)度小于固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將待發(fā)送數(shù)據(jù)發(fā)送至接收端,以使接收端將接收到的待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,第二內(nèi)存單元為預(yù)先分配給接收端的存儲(chǔ)空間等于固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè);

      第二發(fā)送模塊23,用于當(dāng)長(zhǎng)度大于固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至接收端,以使接收端根據(jù)長(zhǎng)度信息,計(jì)算所需第二內(nèi)存單元的數(shù)量,基于rdma協(xié)議的read模式,根據(jù)地址信息,獲取待發(fā)送數(shù)據(jù),將待發(fā)送數(shù)據(jù)存儲(chǔ)至數(shù)量個(gè)所述第二內(nèi)存單元。

      可選地,還包括:

      釋放模塊,用于接收接收端反饋的接收成功消息,釋放待發(fā)送數(shù)據(jù)的內(nèi)存。

      可選地,上述第二發(fā)送模塊包括:

      寫入單元,用于將待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息寫入第三內(nèi)存單元;

      發(fā)送單元,用于基于rdma協(xié)議的postsr操作,將長(zhǎng)度信息和地址信息發(fā)送至接收端。

      本發(fā)明實(shí)施例所提供的消息收發(fā)裝置,通過(guò)將send/receive模式和read模式相結(jié)合,進(jìn)行消息收發(fā),且消息的傳遞主要基于read模式,對(duì)系統(tǒng)資源的占用較少,通信效率較高。

      此外,本發(fā)明還提供了一種消息收發(fā)的系統(tǒng),該系統(tǒng)包括接收端和發(fā)送端;

      上述發(fā)送端比較待發(fā)送數(shù)據(jù)的長(zhǎng)度與第一內(nèi)存單元的固定長(zhǎng)度的大小,第一內(nèi)存單元為預(yù)先分配的存儲(chǔ)空間等于固定長(zhǎng)度的內(nèi)存單元;當(dāng)長(zhǎng)度小于固定長(zhǎng)度時(shí),基于rdma協(xié)議的send/receive模式,將待發(fā)送數(shù)據(jù)發(fā)送至接收端;當(dāng)長(zhǎng)度大于固定長(zhǎng)度時(shí),基于send/receive模式,將待發(fā)送數(shù)據(jù)的長(zhǎng)度信息和地址信息發(fā)送至接收端;

      上述接收端將接收到的待發(fā)送數(shù)據(jù)存儲(chǔ)至第二內(nèi)存單元,第二內(nèi)存單元為預(yù)先分配給接收端的存儲(chǔ)空間等于固定長(zhǎng)度的多個(gè)內(nèi)存單元中的一個(gè);或根據(jù)長(zhǎng)度信息,計(jì)算所需所述第二內(nèi)存單元的數(shù)量,基于rdma協(xié)議的read模式,根據(jù)地址信息,獲取待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)存儲(chǔ)至數(shù)量個(gè)所述第二內(nèi)存單元。

      接收端和發(fā)送端的具體交互過(guò)程可以參見上文以及圖3,圖3為本發(fā)明實(shí)施例所提供的消息收發(fā)系統(tǒng)交互示意圖。

      本發(fā)明實(shí)施例所提供的消息收發(fā)系統(tǒng),通過(guò)將send/receive模式和read模式相結(jié)合,進(jìn)行消息收發(fā),且消息的傳遞主要基于read模式,對(duì)系統(tǒng)資源的占用較少,通信效率較高。

      本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說(shuō)明即可。

      以上對(duì)本發(fā)明所提供的消息收發(fā)的方法、裝置及系統(tǒng)進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1