CN104135496A - 一种同构环境下的rpc数据传输方法及系统 - Google Patents
一种同构环境下的rpc数据传输方法及系统 Download PDFInfo
- Publication number
- CN104135496A CN104135496A CN201310159080.0A CN201310159080A CN104135496A CN 104135496 A CN104135496 A CN 104135496A CN 201310159080 A CN201310159080 A CN 201310159080A CN 104135496 A CN104135496 A CN 104135496A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer memory
- structure body
- data block
- receiving terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种同构环境下的RPC数据传输方法,发送端将待发送的数据中的多个小数据块拷贝到发送缓存,然后将发送缓存中的数据整体发送给接收端,将待发送的数据中的大数据块直接发送给接收端,其对大、小数据块做了区别处理,大数据不再拷贝,减少拷贝开销,而小数据块聚合发送,减少了发送开销;接收端接收来自发送端的数据,并计算和记录各数据块在数据接收缓存中的地址,这样,上层程序根据地址直接访问数据接收缓存中数据即可,不再需要从数据接收缓存拷贝数据到自己的缓存中,省去一次拷贝开销。本发明还提供了实现上述方法的系统。本发明有效地减少发送端与接收端的数据拷贝操作,提高了同构机器间RPC传输带宽。
Description
技术领域
本发明涉及集群网络通信技术领域,具体涉及一种同构环境下的远程过程调用(RPC)数据传输方法及系统,在传输大块数据时提高传输性能。
背景技术
RPC协议(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议广泛应用于分布式系统中,RPC协议的性能对提高分布式系统数据交换效率有很重要的意义。
RPC提供一种在不同机器之间通过网络传输数据结构体的机制,保证调用远程机器上的程序对上层应用透明。在进行远程过程调用时,传递的参数都是以数据结构体为单位的,这里称为参数数据。然而,对于数据结构体,在内存中有可能是不连续存放的,如在数据结构体中存在指针项时,指针项所指向的数据就可能存放在内存与数据结构体不连续的地址中。远程过程调用中,在传递有指针项的数据结构体时,同时也要将各指针指向的数据也传递给目标的机器。
SUN公司的开发的ONC RPC是目前最常用的版本之一,ONC RPC中在传输数据结构体过程中,先对数据结构体进行XDR(eXternal DataRepresentation,外部数据表示)编码处理。这种方法可以有效的解决数据在不同机器中的表示问题,同时也很好的解决传输数据结构体中有指针项时数据不连续的问题。该方法对RPC调用过程中要传输的所有数据,包括RPC的报文头部数据和参数数据,进行统一的编码处理,发送之前都先拷贝到发送缓存中,待缓存满后发送到接收端;接收端接收到数据都统一放在接收缓存中,在解码过程中将参数数据从接收缓存中拷贝出来放到上层应用的缓存中。这个过程就涉及到分别在发送端和接收端的共两次数据的拷贝操作,如果要传输的参数数据很大时,这两次数据拷贝操作将带来很大的性能开销。在一些分布式系统中,如分布式文件系统,常常要进行大量数据的迁移操作,这就要求系统能够进行高效的数据传输,而现有的RPC协议在进行调用过程要进行数据的编码与解码操作,涉及到前面所述两次数据的拷贝操作,这对数据的传输效率造成很大的影响。
对于以上情况,究其原因是由于要考虑在异构机器之间传输数据,导致在对数据进行编码与解码过程中难免地要进行数据的拷贝操作。事实上在配备集群的时候大多数机器都是批量配置的,故而有大批机器是在硬件及软件上都是同构的。那么,很有必要提供一种能用于同构环境中的高效RPC传输方式。在同构环境下,不需要考虑数据在收发机器间的表示问题,处理好指针存在带来的数据不连续的问题即可。通过设计数据的序列化方法,数据的编码方法,数据的发送方式,接收方式,数据解码方法,可以减少两次数据拷贝。在网络传输不成为瓶颈时,数据拷贝就是传输过程的瓶颈,即减少两次数据拷贝可以有效地提升RPC数据传输性能。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种同构环境下的RPC数据传输方法及系统,减少发送端与接收端的数据拷贝操作,提高了同构机器间RPC传输带宽。
一种同构环境下的RPC数据传输方法,涉及的发送端和接收端属于同构设备,该方法具体为:发送端先将待发送的数据中的多个小数据块拷贝到发送缓存然后整体发送给接收端,再将待发送的数据中的大数据块顺序发送给接收端;接收端接收来自发送端的数据块,计算和记录各数据块在数据接收缓存中的地址。
进一步地,该方法按照如下方式实现:
发送端的发送缓存由头部发送缓存和数据发送缓存构成,发送端发送数据的具体过程为:
计算所有待发送数据块的长度之和记为数据总长度,所有待发送数据块包括数据结构体和其包含的所有指针项指向数据块;
根据数据块长度将所有数据块分类为小数据块和大数据块,先对各小数据块的发送顺序编号,再接着小数据块对各大数据块的发送顺序编号,将各小数据块拷贝到数据发送缓存;
计算所有发送顺序号小于数据结构体发送顺序号的数据块长度之和,记为数据结构体的偏移;
将数据总长度、数据结构体的发送顺序号和数据结构体的偏移写入位于头部发送缓存中的RPC报文头部;
将数据结构体包含的各指针项指向数据块的发送顺序号以及该指针项指向数据块的长度写入其对应的指针项内容,完成数据结构体的编码;
发送端将头部发送缓存中的RPC报文头部发送给接收端,并将数据发送缓存中的数据块整体发送给接收端,然后将数据结构体的指针项指向的大数据块按照发送顺序号顺序发送给接收端;
接收端的接收缓存由头部接收缓存和数据接收缓存构成,接收端接收数据的具体过程为:
接收端将发送端发送的RPC报文头部接收到头部接收缓存,依据RPC报文头部解析出数据总长度、数据结构体的发送顺序号和数据结构体的偏移;
依据数据总长度建立相应大小的数据接收缓存,将发送端发送的数据块接收到数据接收缓存;
求取数据接收缓存的起始地址和数据结构体的偏移之和得到数据结构体在数据接收缓存的地址,进而求取其含有的各指针项在数据接收缓存的地址;依据数据接收缓存的起始地址和数据结构体的各指针项内容计算各指针项指向数据块在数据接收缓存中的地址;将数据结构体的各指针项内容对应替换为计算得到的指针项指向数据块在数据接收缓存中的地址,完成数据接收缓存的解码。
进一步地,所述各指针项指向数据块在数据接收缓存中的地址的计算方法为:
设数据结构体中的第i个指针项,其所指向的数据块的发送顺序号为Ni,其所指向的数据块长度为LNi,则其指向的数据块在数据接收缓存中的地址Addri=Addr0+L1+L2+…+LNi-1,其中Addr0为数据接收缓存的首地址,L1、L2、…LNi-1为发送顺序号分别为1、2…Ni-1的数据块的长度。
一种同构环境下的RPC数据传输系统,包括属于同构设备的发送端和接收端;
发送端,用于先将待发送的数据中的多个小数据块拷贝到发送缓存然后整体发送给接收端,再将待发送的数据中的大数据块顺序发送给接收端;
接收端,用于接收来自发送端的数据块,计算和记录各数据块在数据接收缓存中的地址。
进一步地,所述发送端的发送缓存由头部发送缓存和数据发送缓存构成,发送端包括
发送端第一模块,用于计算所有待发送数据块的长度之和记为数据总长度,所有待发送数据块包括数据结构体和其包含的所有指针项指向数据块;
发送端第二模块,用于根据数据块长度将所有数据块分类为小数据块和大数据块,先对各小数据块的发送顺序编号,再接着小数据块对各大数据块的发送顺序编号,将各小数据块拷贝到数据发送缓存;
发送端第三模块,用于计算所有发送顺序号小于数据结构体发送顺序号的数据块长度之和,记为数据结构体的偏移;
发送端第四模块,用于将数据总长度、数据结构体的发送顺序号和数据结构体的偏移写入位于头部发送缓存中的RPC报文头部;
发送端第五模块,用于将数据结构体包含的各指针项指向数据块的发送顺序号以及该指针项指向数据块的长度写入其对应的指针项内容,完成数据结构体的编码;
发送端第六模块,用于发送端将头部发送缓存中的RPC报文头部发送给接收端,并将数据发送缓存中的数据块整体发送给接收端,然后将数据结构体的指针项指向的大数据块按照发送顺序号顺序发送给接收端;
所述接收端的接收缓存由头部接收缓存和数据接收缓存构成,接收端包括:
接收端第一模块,接收端将发送端发送的RPC报文头部接收到头部接收缓存,依据RPC报文头部解析出数据总长度、数据结构体的发送顺序号和数据结构体的偏移;
接收端第二模块,用于依据数据总长度建立相应大小的数据接收缓存,将发送端发送的数据块接收到数据接收缓存;
接收端第三模块,用于求取数据接收缓存的起始地址和数据结构体的偏移之和得到数据结构体在数据接收缓存的地址,进而求取其含有的各指针项在数据接收缓存的地址;依据数据接收缓存的起始地址和数据结构体的各指针项内容计算各指针项指向数据块在数据接收缓存中的地址;根据数据结构体的各指针项在数据接收缓存的地址找到指针项,将其内容对应替换为计算得到的指针项指向数据块在数据接收缓存中的地址,完成数据接收缓存的解码。
总体而言,与ONC RPC原来的数据传输方式相比,本发明在机器同构的情况下,在发送端通过改进数据的发送方式,在接收端改进数据的接收方式来减少数据拷贝开销,可以有效的减少两次数据拷贝操作,在实际机器上测试,网络带宽较高,传输数据块较大时,性能有明显提升。
附图说明
图1为本发明基于同构环境下的RPC数据传输方法流程图;
图2为本发明实施例示意图;
图3为本发明图2所示实施例的发送缓存示意图;
图4为本发明图2所示实施例的接收缓存示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的技术方案为:发送端将待发送的数据中的多个小数据块拷贝到发送缓存,然后将发送缓存中的数据整体发送给接收端,将待发送的数据中的大数据块直接发送给接收端,其对大、小数据块做了区别处理,大数据不再拷贝,减少拷贝开销,而小数据块聚合发送,减少了发送开销;接收端接收来自发送端的数据,并计算和记录各数据块在数据接收缓存中的地址,这样,上层程序根据地址直接访问数据接收缓存中数据即可,不再需要从数据接收缓存拷贝数据到自己的缓存中,省去一次拷贝开销。参考图1,其具体过程如下:
发送端发送数据的具体过程为:
(A1)在发送过程中,以在内存中的连接数据块为单位进行区分处理,数据结构体自身为一个数据块,数据结构体中每个指针项所指向的数据各为一个数据块,计算所有待发送数据块的长度之和记为数据总长度。
(A2)根据数据块长度将所有数据块分类为小数据块和大数据块,先对各小数据块的发送顺序编号,再接着小数据块对各大数据块的发送顺序编号,将各小数据块拷贝到发送数据缓存;
定义一个阈值threshold_of_copy用于界定数据块是大或小,当某一个数据块长度小于threshold_of_copy认为该数据块为小数据,大于时认为该数据块为大数据。对于这个threshold_of_copy为经验值,根据试验结果调整,具体取值根据实际的运行环境来决定。
各小数据块的拷贝顺序与发送顺序相同。
(A3)计算所有发送顺序号小于数据结构体发送顺序号的数据块长度之和,记为数据结构体的偏移。接收端在知晓数据结构体的偏移后,不管数据结构体发送顺序是多少,都可以根据其偏移计算得到数据结构体的地址。
(A4)将数据总长度、数据结构体的发送顺序号和数据结构体的偏移写入位于头部发送缓存中的RPC报文头部;
(A5)将数据结构体包含的各指针项指向数据块的发送顺序号以及该指针项指向数据块的长度写入其对应的指针项内容,完成数据结构体的编码;
(A6)发送端将RPC报文头部发送给接收端,并将发送数据缓存中的数据块整体发送给接收端,然后将数据结构体的指针项指向的大数据块按照发送顺序号顺序发送给接收端;
接收端接收数据的具体过程为:
(B1)接收端将发送端发送的RPC报文头部接收到头部接收缓存,依据发送端发送的RPC报文头部解析出数据总长度、数据结构体的发送顺序号和数据结构体的偏移;
(B2)依据数据总长度建立相应大小的数据接收缓存,将发送端发送的数据块接收到数据接收缓存;
(B3)计算数据接收缓存的起始地址和数据结构体的偏移之和得到数据结构体在数据接收缓存的地址,进而得到其含有的各指针项在数据接收缓存的地址;依据数据接收缓存的起始地址和数据结构体的各指针项内容计算各指针项指向数据块在数据接收缓存中的地址;将数据结构体的各指针项内容对应替换为计算得到的指针项指向数据块在数据接收缓存中的地址,完成数据接收缓存的解码。其过程具体如下:
令数据结构体的发送顺序号为Ns,数据结构体在发送数据中的偏移为Os,数据结构体的自身长度为Ls,数据接收缓存的起始地址为Addr0,则先计算得到数据结构体的地址为Addrs=Addr0+Os;
设数据结构体中的第i个指针项,其所指向的数据块的发送顺序号为Ni,其所指向的数据块长度为LNi,则其指向的数据块在数据接收缓存中的地址Addri=Addr0+L1+L2+…+LNi-1,其中Addr0为数据接收缓存的首地址,L1、L2、…LNi-1为发送顺序号分别为1、2…Ni-1的数据块的长度。如此可以计算出每个指针项所指向数据的新地址,将该新地址替换对应的指针项内容即可。
接收端缓存分为头部接收缓存与数据接收缓存。头部接收缓存用于接收RPC报文的报文头部长度、数据总长度和报文头部数据,数据接收缓存用于接收传输的数据。接收端的数据接收过程,先接收RPC报文的头部,再接收传输的数据,这样可能将RPC协议内部所需的数据与RPC调用过程中所需传递的参数数据区分开来。而参数数据是上层应用需要的数据,对这些数据单独处理,可以有效地避免数据解码过程中的数据拷贝操作,使得上层应用不需要将数据拷贝到它自己的缓存中即可直接使用和管理。
图2为本发明实施例示意图,实例中的数据结构体表示如下:
上述结构体中包涵四项内容,一个整形的数据data_int,三个字符型指针point1、point2、point3。在以这个结构体作为RPC过程调用的参数时,要传输的数据共有四块,分别为(a)数据结构体、(b)point1指向的数据、(c)point2指向的数据、(d)point3指向的数据。这里设这四块数据的长度分别为16B、1000B、100B、200B,本例中的阈值threshold_of_copy为512B,那么这四块数据中(a)、(c)、(d)长度小于threshold_of_copy,为小数据;而(b)长度大于threshold_of_copy,为大数据。本例中的数据传输过程如下:
(S1)先计算要传输的数据的总长度为Ltotal=16B+1000B+100B+200B=1316B。
(S2)依次判定数据结构体及其包含的指针项指向数据块是否为小数据,可得(a)数据结构体、(c)point2指向的数据、(d)point3指向的数据为小数据,依次将其拷贝到发送缓存,发送顺序号分别为1、2、3;(b)point1指向的数据为大数据,发送顺序号为4。
(S3)由上知数据结构体的发送顺序号为Ns=1,偏移为Os=0,将Ltotal、Ns、Os写入RPC报文头部。这里Ns与Os合并成一项,设为Hs,假设机器为32位的,那么用一个32位的空间来保存Ns与Os,其中高6位存放Ns,低26位存放Os,其Hs值为0x04000000。
(S4)对数据结构体进行编码,修改各个指针项的内容,其中point1所指向数据的发送顺序号N1=4,长度L1=1000B,则将它们合并成一项,设为V1,其方法与(S3)一样,高6位存放N1,低26位存放L1,则V1=0x100003e8;同样point2所指向数据的发送顺序号N2=2,长度L3=100B,则V2=0x08000064;point3所指向数据的发送顺序号N3=3,长度L3=200B,则V2=0x0c0000c8。以为计算得到的V1、V2、V3分别作为point1、point2、point3的新值,如此完成编码。
(S5)将发送缓存中的数据发送给接收端,其中包涵RPC的报文头部数据、数据结构体、point2指向的数据和point3指向的数据;再将大数据按照发送顺序号发送给接收端,这里只有point1指向的数据,将其直接发送。
(S6)接收端先接收RPC的报文头部数据,下面会具体阐述,从RPC的报文头部数据中解析出数据总长度、数据结构体的发送顺序号和数据结构体的偏移。再根据接收到的数据总长度,创建数据接收缓存。
(S7)设数据接收缓存的首地址为Addr0=0x10000000,则可以计算数据结构体的地址为Addrs=Addr0+Os=0x10000000;然后计算数据结构体中的各指针项所指数据的地址,point1所指数据的地址为Addr1=Addr0+L1+L2+L3=0x10000000+016+0100+0200=0x1000013c;point2所指数据的地址为Addr2=Addr0+L1=0x10000000+016=0x10000010;point3所指数据的地址为Addr2=Addr0+L1+L2=0x10000000+016+0100=0x10000074;将其新地址更新相应的指针项内容完成解码。解码完成后,将数据结构体的地址返回给上层应用程序。
本方法在实现上的关键点是在传输过程中要将RPC报文头部的数据与要传输的数据进行区分,从而在接收端接收数据的时候可以把RPC报文头部数据接收到头部接收缓存,而将参数数据接收到数据接收缓存,如此进行区分处理,可以有效的减少接收端解码过程的拷贝操作。为此下面介绍一下发送端的数据发送缓存结构与接收端的接收缓存结构。
如图3所示为本发明实施例中的发送缓存结构示意图,包括:
(1)头部发送缓存,包括头部长度与数据长度、数据结构体的发送顺序号与偏移、RPC头部、填充。具体为:
a)头部长度+数据长度,这里的头部长度为RPC报文头部数据的长度,数据长度即为前面提到的数据总长度。用一个32比特来保存RPC报文头部的数据长度和数据总长度,高6位是用来保存RPC报文头部数据长度,低26位用来保存数据总长度。
b)数据结构体的发送顺序号与偏移,这是前面所述的数据结构体的发送顺序号,与数据结构体在发送数据中的偏移,其也用一个32比特来存放,高6位为数据结构体的发送顺序号,低26位为数据结构体的发送顺序号的偏移。
c)RPC头部数据,RPC报文头部数据。本发明中,关键的一个问题是要将RPC头部与数据分开处理,为此,在发送方设定一个固定大小的长度FIXED_HEAD_SIZE,用于区分RPC报文头部与数据,FIXED_HEAD_SIZE之内的数据为RPC报文头部,之后的为数据。
d)填充,当头部的实际长度小于FIXED_HEAD_SIZE时,用于填充。同时作为一种对数据总长度较小的数据时的优化方法,在数据总长度较小时,可以将数据填充在此,让数据与RPC头部一起发送,这样在接收方就不用对数据进行一次额外的接收操作。
(2)数据发送缓存,包含要传输的数据。将小数据都拷贝到此,即主要缓存长度小于threshold_of_copy的数据块,这些数据要进行数据拷贝操作,与RPC头部一起发送。
为了区分RPC报文头部与数据,将发送缓存区分为头部发送缓存与数据发送缓存。实际上这两个缓存是一个连续的空间,统称为发送缓存。在数据发送的过程中头部发送缓存与数据发送缓存的中数据是一起发送的,而不作区分。
如图4所示为本发明实施例中的接收缓存示意图,包括:
(1)头部接收缓存,RPC发送缓存中固定长度FIXED_HEAD_SIZE之内的数据接收到此。可以从中获得RPC头部的实际长度和数据总长度、RPC头部数据、数据结构体的发送顺序号和数据结构体的发送偏移。
(2)数据接收缓存,从头部接收缓存中可以获得数据总长度,设为data_len,进而建立大小为data_len的数据接收缓存,将数据接收到此。在解码过程中按照图2所示的方法,计算出各指针内容的实际地址,更新对应的指针项。
在接收端的头部接收缓存、数据接收缓存分别与发送端的头部发送缓存、数据发送缓存对应,但是在接收端的头部接收缓存与数据接收缓存不是一个连续的缓存空间,而是两个独立的缓存,统称这两个缓存为接收缓存。本发明由于在发送方优化了大于预定值的数据的拷贝操作,在接收方优化了解码过程中的数据拷贝操作,因而可以更充分的利用网络带宽,提高RPC传输过程的性能。本发明实施例中使用了以上缓存结构设计,使得本发明中提出的传输方案可以在实际环境中编程实现,并可以获得理想的性能提升效果。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种同构环境下的RPC数据传输方法,涉及的发送端和接收端属于同构设备,该方法具体为:发送端先将待发送的数据中的多个小数据块拷贝到发送缓存然后整体发送给接收端,再将待发送的数据中的大数据块顺序发送给接收端;接收端接收来自发送端的数据块,计算和记录各数据块在数据接收缓存中的地址。
2.根据权利要求1所述的一种同构环境下的RPC数据传输方法,其特征在于,该方法按照如下方式实现:
发送端的发送缓存由头部发送缓存和数据发送缓存构成,发送端发送数据的具体过程为:
计算所有待发送数据块的长度之和记为数据总长度,所有待发送数据块包括数据结构体和其包含的所有指针项指向数据块;
根据数据块长度将所有数据块分类为小数据块和大数据块,先对各小数据块的发送顺序编号,再接着小数据块对各大数据块的发送顺序编号,将各小数据块拷贝到数据发送缓存;
计算所有发送顺序号小于数据结构体发送顺序号的数据块长度之和,记为数据结构体的偏移;
将数据总长度、数据结构体的发送顺序号和数据结构体的偏移写入位于头部发送缓存中的RPC报文头部;
将数据结构体包含的各指针项指向数据块的发送顺序号以及该指针项指向数据块的长度写入其对应的指针项内容,完成数据结构体的编码;
发送端将头部发送缓存中的RPC报文头部发送给接收端,并将数据发送缓存中的数据块整体发送给接收端,然后将数据结构体的指针项指向的大数据块按照发送顺序号顺序发送给接收端;
接收端的接收缓存由头部接收缓存和数据接收缓存构成,接收端接收数据的具体过程为:
接收端将发送端发送的RPC报文头部接收到头部接收缓存,依据RPC报文头部解析出数据总长度、数据结构体的发送顺序号和数据结构体的偏移;
依据数据总长度建立相应大小的数据接收缓存,将发送端发送的数据块接收到数据接收缓存;
求取数据接收缓存的起始地址和数据结构体的偏移之和得到数据结构体在数据接收缓存的地址,进而求取其含有的各指针项在数据接收缓存的地址;依据数据接收缓存的起始地址和数据结构体的各指针项内容计算各指针项指向数据块在数据接收缓存中的地址;根据数据结构体的各指针项在数据接收缓存的地址找到指针项,将其内容对应替换为计算得到的指针项指向数据块在数据接收缓存中的地址,完成数据接收缓存的解码。
3.根据权利要求2所述的一种同构环境下的RPC数据传输方法,其特征在于,所述各指针项指向数据块在数据接收缓存中的地址的计算方法为:
设数据结构体中的第i个指针项,其所指向的数据块的发送顺序号为Ni,其指向的数据块长度为LNi,则其指向的数据块在数据接收缓存中的地址Addri=Addr0+L1+L2+…+LNi-1,其中Addr0为数据接收缓存的首地址,L1、L2、…LNi-1为发送顺序号分别为1、2…Ni-1的数据块的长度。
4.一种同构环境下的RPC数据传输系统,包括属于同构设备的发送端和接收端;
发送端,用于先将待发送的数据中的多个小数据块拷贝到发送缓存然后整体发送给接收端,再将待发送的数据中的大数据块顺序发送给接收端;
接收端,用于接收来自发送端的数据块,计算和记录各数据块在数据接收缓存中的地址。
5.根据权利要求4所述的同构环境下的RPC数据传输系统,其特征在于,
所述发送端的发送缓存由头部发送缓存和数据发送缓存构成,发送端包括:
发送端第一模块,用于计算所有待发送数据块的长度之和记为数据总长度,所有待发送数据块包括数据结构体和其包含的所有指针项指向数据块;
发送端第二模块,用于根据数据块长度将所有数据块分类为小数据块和大数据块,先对各小数据块的发送顺序编号,再接着小数据块对各大数据块的发送顺序编号,将各小数据块拷贝到数据发送缓存;
发送端第三模块,用于计算所有发送顺序号小于数据结构体发送顺序号的数据块长度之和,记为数据结构体的偏移;
发送端第四模块,用于将数据总长度、数据结构体的发送顺序号和数据结构体的偏移写入位于头部发送缓存中的RPC报文头部;
发送端第五模块,用于将数据结构体包含的各指针项指向数据块的发送顺序号以及该指针项指向数据块的长度写入其对应的指针项内容,完成数据结构体的编码;
发送端第六模块,用于发送端将头部发送缓存中的RPC报文头部发送给接收端,并将数据发送缓存中的数据块整体发送给接收端,然后将数据结构体的指针项指向的大数据块按照发送顺序号顺序发送给接收端;
所述接收端的接收缓存由头部接收缓存和数据接收缓存构成,接收端包括:
接收端第一模块,接收端将发送端发送的RPC报文头部接收到头部接收缓存,依据RPC报文头部解析出数据总长度、数据结构体的发送顺序号和数据结构体的偏移;
接收端第二模块,用于依据数据总长度建立相应大小的数据接收缓存,将发送端发送的数据块接收到数据接收缓存;
接收端第三模块,用于求取数据接收缓存的起始地址和数据结构体的偏移之和得到数据结构体在数据接收缓存的地址,进而求取其含有的各指针项在数据接收缓存的地址;依据数据接收缓存的起始地址和数据结构体的各指针项内容计算各指针项指向数据块在数据接收缓存中的地址;根据数据结构体的各指针项在数据接收缓存的地址找到指针项,将其内容对应替换为计算得到的指针项指向数据块在数据接收缓存中的地址,完成数据接收缓存的解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310159080.0A CN104135496B (zh) | 2013-05-02 | 2013-05-02 | 一种同构环境下的rpc数据传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310159080.0A CN104135496B (zh) | 2013-05-02 | 2013-05-02 | 一种同构环境下的rpc数据传输方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104135496A true CN104135496A (zh) | 2014-11-05 |
CN104135496B CN104135496B (zh) | 2017-08-18 |
Family
ID=51808018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310159080.0A Active CN104135496B (zh) | 2013-05-02 | 2013-05-02 | 一种同构环境下的rpc数据传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104135496B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915656A (zh) * | 2016-06-30 | 2016-08-31 | 中国银行股份有限公司 | 涉及批量远程调用的数据处理方法及装置 |
CN109062708A (zh) * | 2018-07-05 | 2018-12-21 | 武汉斗鱼网络科技有限公司 | 一种数据发送方法、接收方法及装置 |
CN109428861A (zh) * | 2017-08-29 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 网络通信方法及设备 |
CN110417812A (zh) * | 2019-08-23 | 2019-11-05 | 北京无极芯动科技有限公司 | 5g协议报文处理器架构及5g协议报文处理方法 |
CN113891396A (zh) * | 2021-09-01 | 2022-01-04 | 深圳金信诺高新技术股份有限公司 | 数据包的处理方法、装置、计算机设备和存储介质 |
WO2022062510A1 (zh) * | 2020-09-28 | 2022-03-31 | 中科寒武纪科技股份有限公司 | 实现热迁移的设备及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040225719A1 (en) * | 2003-05-07 | 2004-11-11 | International Business Machines Corporation | Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed |
CN101599991A (zh) * | 2009-07-07 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于高速通信协议的提升网络文件系统性能的方法 |
CN102546612A (zh) * | 2011-12-23 | 2012-07-04 | 华中科技大学 | 用户态下基于rdma协议的远程过程调用实现方法 |
CN102916880A (zh) * | 2011-08-01 | 2013-02-06 | 中兴通讯股份有限公司 | 一种分组交换网中数据包发送和接收的方法及装置 |
-
2013
- 2013-05-02 CN CN201310159080.0A patent/CN104135496B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040225719A1 (en) * | 2003-05-07 | 2004-11-11 | International Business Machines Corporation | Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed |
CN101599991A (zh) * | 2009-07-07 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于高速通信协议的提升网络文件系统性能的方法 |
CN102916880A (zh) * | 2011-08-01 | 2013-02-06 | 中兴通讯股份有限公司 | 一种分组交换网中数据包发送和接收的方法及装置 |
CN102546612A (zh) * | 2011-12-23 | 2012-07-04 | 华中科技大学 | 用户态下基于rdma协议的远程过程调用实现方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915656A (zh) * | 2016-06-30 | 2016-08-31 | 中国银行股份有限公司 | 涉及批量远程调用的数据处理方法及装置 |
CN105915656B (zh) * | 2016-06-30 | 2019-09-24 | 中国银行股份有限公司 | 涉及批量远程调用的数据处理方法及装置 |
CN109428861A (zh) * | 2017-08-29 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 网络通信方法及设备 |
CN109062708A (zh) * | 2018-07-05 | 2018-12-21 | 武汉斗鱼网络科技有限公司 | 一种数据发送方法、接收方法及装置 |
CN109062708B (zh) * | 2018-07-05 | 2020-07-10 | 武汉斗鱼网络科技有限公司 | 一种数据发送方法、接收方法及装置 |
CN110417812A (zh) * | 2019-08-23 | 2019-11-05 | 北京无极芯动科技有限公司 | 5g协议报文处理器架构及5g协议报文处理方法 |
CN110417812B (zh) * | 2019-08-23 | 2021-11-23 | 极芯通讯技术(南京)有限公司 | 5g协议报文处理器架构及5g协议报文处理方法 |
WO2022062510A1 (zh) * | 2020-09-28 | 2022-03-31 | 中科寒武纪科技股份有限公司 | 实现热迁移的设备及方法 |
CN113891396A (zh) * | 2021-09-01 | 2022-01-04 | 深圳金信诺高新技术股份有限公司 | 数据包的处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104135496B (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104135496A (zh) | 一种同构环境下的rpc数据传输方法及系统 | |
CN101937724B (zh) | 用于执行拷贝回存操作的方法以及闪存存储设备 | |
US20210011785A1 (en) | Methods and apparatus for correcting out-of-order data transactions between processors | |
CN104484295B (zh) | 并行计算机系统中基于接收方滑动窗口的数据传输方法 | |
CN105556930A (zh) | 针对远程存储器访问的nvm express控制器 | |
WO2015018290A1 (zh) | 内存访问处理方法、装置及系统 | |
EP3500935A1 (en) | Method and apparatus for compressing addresses | |
CN109756536A (zh) | 一种数据传输的方法、装置及系统 | |
CN105242879B (zh) | 一种数据存储方法以及协议服务器 | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
CN103546467A (zh) | 在TCP/IP网络上传输Modbus RTU协议的方法 | |
CN105183662A (zh) | 一种无cache一致性协议的分布式共享片上存储架构 | |
US20200210224A1 (en) | Methods and apparatus for verifying completion of groups of data transactions between processors | |
KR20200030606A (ko) | 전송 블록 크기를 확정하는 방법, 장치 및 기기 | |
CN106685429B (zh) | 整数压缩方法及装置 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
CN103577119B (zh) | 用于下一代固态硬盘控制器中乱序传输数据的系统和方法 | |
CN115827506A (zh) | 数据写入方法、数据读取方法、装置、处理核和处理器 | |
JP7282895B2 (ja) | データの再送復号方法、装置、システム及び通信装置 | |
CN104346234B (zh) | 一种内存访问的方法、设备及系统 | |
CN113238856A (zh) | 一种基于rdma的内存管理方法及装置 | |
CN105187162B (zh) | 一种多粒度并行解速率匹配方法和装置 | |
CN102023929B (zh) | 基于乒乓缓存方式的数据缓存系统结构及其实现方法 | |
CN102571609A (zh) | 快速串行接口pci-e协议数据完成包的重组排序方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |