CN114095550A - 一种服务端直接读取引用参数的远程过程调用方法 - Google Patents
一种服务端直接读取引用参数的远程过程调用方法 Download PDFInfo
- Publication number
- CN114095550A CN114095550A CN202010797350.0A CN202010797350A CN114095550A CN 114095550 A CN114095550 A CN 114095550A CN 202010797350 A CN202010797350 A CN 202010797350A CN 114095550 A CN114095550 A CN 114095550A
- Authority
- CN
- China
- Prior art keywords
- server
- remote
- memory
- rdma
- remote procedure
- 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.)
- Pending
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明提供一种服务端直接读取引用参数的远程过程调用方法。其中涉及的服务端直接读取引用参数的远程过程调用方法及客户端装置、服务端装置、远程跨进程通信系统和相关计算机软件可读存储介质,主要是在远程过程调用的执行过程中,使其中的服务端直接向本地客户端内存读取其本地参数,即所需的引用参数,以克服通信瓶颈,提高远程跨端、跨进程通信效率,进而提高整个运行效率。
Description
技术领域
本发明涉及计算机技术中的远程过程调用(RPC)技术领域,具体地,涉及一种服务端直接读取引用参数的远程过程调用方法。
背景技术
远程过程调用,即Remote Procedure Call,简称RPC,是指一种是一台主机上的程序能够调用其他主机上方法的机制。具体来说,一个典型的远程过程调用的具体过程,例如,可以包括:计算机A上的进程,调用另外一台计算机B上的进程,其中计算机A上的调用进程被挂起,而计算机B上的被调用进程开始执行,当值返回给计算机A时,计算机A进程继续执行。其中,调用方(例如前面述及的计算机A)可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息。
虽然RPC是需要调用远端主机上的方法/函数等,但是从根本上来说,RPC也是要使远程过程调用具有与本地过程调用相同的形式。稍微不同于本地过程调用的是,RPC并不要求操作系统提供数据,而是在远程过程调用过程中,是将参数打包成消息发送到远端的作为被调用方主机。
而要实现远程过程调用,就需要考虑如何传递参数。传递引用参数并不是一个简单的消息传递过程。单纯地传递参数的引用(例如,包括指针)是完全没有意义的,因为仅将引用地址传递给远端主机,其指向的内存位置可能与远程操作系统上的完全不同。若要实现一个有效的引用参数传递,则其过程至少包括:客户端(调用方主机)发送参数的副本,将其置于远程操作系统内存中,以及向其传递一个指向服务器(被调用方主机)函数的指针,然后再将对象发送回客户端,复制它的引用等。
一般来说,上述的引用参数传输过程的实现,是通过TCP协议或基于TCP的相关通信协议/通信框架实现的。然而,传统的基于TCP/IP协议的跨端通信,在数据包处理过程中,往往要经过操作系统及其他软件层,需要占用大量的服务器资源和内存总线带宽,数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移动,给服务器的CPU和内存造成了沉重负担。尤其是网络带宽、处理器速度与内存带宽三者的严重"不匹配性",更加剧了网络延迟效应。因此,若是在远程调用过程中,被调用的服务端进程若能直接从客户端内存中读取引用参数,则无疑将能提高RPC效率。
发明内容
有鉴于此,本发明提供一种服务端直接读取引用参数的远程过程调用方法,以提高远程过程调用(RPC)过程中远程服务端进程获取引用参数的效率。
一方面,本发明实施例提供一种服务端直接读取引用参数的远程过程调用方法。
上述的远程过程调用方法,包括:客户端本地进程向服务端提出远程过程调用请求;服务端注册并启动相关进程,即相对于客户端的远程服务端进程;向远程服务端进程传入其所需要的客户端本地参数,即所述引用参数,其中包括:当远程服务端进程要客户端传入本地参数时,将所述本地参数对应的内存注册为RDMA内存,生成RDMA通道信使元信息,并通知服务端注册内存和获取所述RDMA通道信使元信息,其中,RDMA通道信使元信息主要包括远程内存识别标志;所述远程内存识别标志,被提供给远程主机节点的通道适配器(HCA),用来在RDMA操作期间允许远程进程访问本地的系统内存;服务端注册内存,并获取所述RDMA通道信使元信息;通过两端的注册内存地址和所述RDMA通道信使元信息中的远程内存识别标志形成RDMA通道,服务端将从客户端的相应内存中读取所述引用参数并写入服务端相应的内存;调用和执行服务端远程进程,通过网络传输返回结果给客户端本地进程。
在第一方面的各实施例中,其中的一些作为一种可能的实现方式,其所提供的远程过程调用方法中,若一次RPC过程中远程服务端请求客户端传入多个本地参数,也即所述引用参数,参与的远程过程执行,则使所述的RDMA通道元信使信息包括引用参数编号,所述引用参数编号一一对应所述引用参数,两端进程可通过引用参数编号识别所述的引用参数。
在上述实施例中的一些,更优选的,其中的一些作为一种可能的实现方式,所述的引用参数,可以分批次传入;服务端可以在当前所需引用参数被传入后即开始执行远程过程,同时继续传入后续的引用参数。
在上述实施例中的一些,更优选的,其中的一些作为一种可能的实现方式,根据所述引用参数编号设定优先级,管理所述参数的传入次序,最大化利用通道和提高程序执行效率。
在第一方面的各实施例中,其中的一些作为一种可能的实现方式,其所提供的远程过程调用方法中,若所述引用参数的大小为预选约定的或服务端已知所述引用参数的大小,则可无需等待客户端通知,直接在要求传入引用参数之初,即注册内存。
在第一方面的各实施例中,其中的一些作为一种可能的实现方式,考虑到RDMA通信的开销及通信收益等,其所提供的远程过程调用方法中,对于小于预设数据长度的传入参数,可仍通过TCP通道传输。而该预设长度为经验值,可通过多次实验摸索能够得到较高通信效率收益的值。
另一方面,本发明实施例提供一种装置,用于运行远程过程调用的客户端程序。
结合第一方面,上述的装置,包括:处理器、存储器和RDMA网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行第一方面述及的服务端直接读取引用参数的远程过程调用方法中客户端的操作;所述的RDMA网卡则为所述方法中的RDMA传输提供物理通道。
再一方面,本发明实施例提供一种装置,用于运行远程过程调用的服务端程序。
结合上述各方面,上述的装置,包括:处理器、存储器和RDMA网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行第一方面述及的服务端直接读取引用参数的远程过程调用方法中服务端的操作;所述的RDMA网卡则为所述方法中的RDMA传输提供物理通道。
又一方面,本发明实施例提供一种远程跨进程通信系统,能够通过执行远程过程调用的方式进行远程跨进程通信。
结合上述各方面,上述的远程跨进程通信系统,包括:第二方面述及的客户端装置以及与之对应的第三方面述及的服务端装置。
又一方面,本发明实施例提供一种计算机可读存储介质。
上述的计算机可读存储介质中存储有用于数据通信的代码,其中包括:用于执行第一方面述及的服务端直接读取引用参数的远程过程调用方法的指令;或,执行第一方面述及的服务端直接读取引用参数的远程过程调用方法中客户端/服务端操作的指令。
上述诸实施例提供的服务端直接读取引用参数的远程过程调用方法及客户端装置、服务端装置、远程跨进程通信系统和相关计算机软件可读存储介质,主要是在远程过程调用的执行过程中,使其中的服务端直接向本地客户端内存读取其本地参数,即所需的引用参数,以克服通信瓶颈,提高远程跨端、跨进程通信效率,进而提高整个运行效率。
下面通过附图、具体实施例对本发明的技术方案做进一步的描述。
附图说明
为更加清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明中一部分实施例或现有技术描述中涉及的附图做简单介绍。
图1为现有技术中远程过程调用的一种实现的架构示意图;
图2为本发明一实施例提供的一种服务端直接读取引用参数的远程过程调用方法的过程示意图。
具体实施方式
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
一般来说,远程过程调用的具体实现,无外乎例如图1的一种实现方式所示,除了必要的在调用方主机端的调用代理(即涉及请求调用等)和被调用方主机端的注册管理(即涉及被调用方端的进程唤起等),在消息传输层面,为了便于管理,也可以如图1中所示,内抽象成消息管理层和传输管理层,而实现传输则主要是通过TCP协议或基于TCP的相关通信协议/通信框架实现的。显然,若但需要传入的本地参数(通常也被称为引用参数),其数据流增大,TCP通道无疑将成为制约瓶颈。
于是,本发明提供一种服务端直接读取引用参数的远程过程调用方法,在远程调用过程中,服务端在执行远程进程(相对客户端的)时直接从客户端的内存中读取引用参数,以提高RPC效率。
以下为本发明的一些优选实施例。其中,
本发明的一些优选实施例提供一种服务端直接读取引用参数的远程过程调用方法。该远程过程调用方法,包括:客户端本地进程向服务端提出远程过程调用请求;服务端注册并启动相关进程,即相对于客户端的远程服务端进程;向远程服务端进程传入其所需要的客户端本地参数,即所述引用参数,其中包括:当远程服务端进程要客户端传入本地参数时,将所述本地参数对应的内存注册为RDMA内存,生成RDMA通道信使元信息,并通知服务端注册内存和获取所述RDMA通道信使元信息,其中,RDMA通道信使元信息主要包括远程内存识别标志;所述远程内存识别标志,被提供给远程主机节点的通道适配器(HCA),用来在RDMA操作期间允许远程进程访问本地的系统内存;服务端注册内存,并获取所述RDMA通道信使元信息;通过两端的注册内存地址和所述RDMA通道信使元信息中的远程内存识别标志形成RDMA通道,服务端将从客户端的相应内存中读取所述引用参数并写入服务端相应的内存;调用和执行服务端远程进程,通过网络传输返回结果给客户端本地进程。
在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,若一次RPC过程中远程服务端请求客户端传入多个本地参数,也即所述引用参数,参与的远程过程执行,则使所述的RDMA通道元信使信息包括引用参数编号,所述引用参数编号一一对应所述引用参数,两端进程可通过引用参数编号识别所述的引用参数。
在上述优选实施例中的一些中,进一步优选的,其中的一些所提供的远程过程调用方法中,所述的引用参数,可以分批次传入;服务端可以在当前所需引用参数被传入后即开始执行远程过程,同时继续传入后续的引用参数。
在上述优选实施例中的一些中,进一步优选的,其中的一些所提供的远程过程调用方法中,根据所述引用参数编号设定优先级,管理所述参数的传入次序,最大化利用通道和提高程序执行效率。
在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,若所述引用参数的大小为预选约定的或服务端已知所述引用参数的大小,则可无需等待客户端通知,直接在要求传入引用参数之初,即直接注册内存。
在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,考虑到RDMA通信的开销及通信收益等,其所提供的远程过程调用方法中,对于小于预设数据长度的传入参数,可仍通过TCP通道传输。而该预设长度为经验值,可通过多次实验摸索能够得到较高通信效率收益的值。
本发明的另一些优选实施例提供一种装置,用于运行远程过程调用的客户端程序。该客户端装置,包括:处理器、存储器和RDMA网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行上述实施例中述及的服务端直接读取引用参数的远程过程调用方法中客户端的操作;所述的RDMA网卡则为所述方法中的RDMA传输提供物理通道。
本发明的再一些优选实施例提供一种装置,用于运行远程过程调用的服务端程序。该服务端装置,包括:处理器、存储器和RDMA网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行上述实施例中述及的服务端直接读取引用参数的远程过程调用方法中服务端的操作;所述的RDMA网卡则为所述方法中的RDMA传输提供物理通道。
本发明的再一些优选实施例提供一种远程跨进程通信系统,能够通过执行远程过程调用的方式进行远程跨进程通信。该远程跨进程通信系统,包括:上述实施例述及的述及的客户端装置以及与之对应的服务端装置。
本发明的又一些优选实施例提供一种计算机可读存储介质。该计算机可读存储介质中存储有用于数据通信的代码,其中包括:用于执行上述实施例述及的服务端直接读取引用参数的远程过程调用方法的指令;或,执行上述实施例述及的服务端直接读取引用参数的远程过程调用方法中客户端/服务端操作的指令。
以下结合附图,进一步说明上述实施例中的方法等。附图2为本发明一实施例提供的一种服务端直接读取引用参数的远程过程调用方法的过程示意图。如图2所示,该远程调用过程包括:
1客户端本地的相关进程向服务端提出远程过程调用请求:
1.1通过服务端上主进程注册远程服务端进程;
1.2以及启动远程服务端进程;
2然后调用客户端本地进程,要求从客户端获取所需引用参数,即在客户端的本地参数:
2.1调用远程服务端进程,传入本地参数;
2.1.1a本地参数内存注册;
2.1.1b通知服务端注册内存和申请本地参数的远程内存识别标志r_key;
2.1.2服务端内存注册;
2.1.2b请求本地参数在客户端的r_key;
2.1.3返回本地参数在客户端的r_key;
2.1.4服务端根据返回的r_key,读取在客户端的本地参数到服务端相应的内存;
2.2调用服务;
2.3远程执行进程;
2.4返回执行结果;
2.5网络传输返回结果。
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此。
Claims (10)
1.一种服务端直接读取引用参数的远程过程调用方法,其特征在于,所述方法包括:
客户端本地进程向服务端提出远程过程调用请求;
服务端注册并启动远程服务端进程;
传入远程服务端进程所需要的客户端本地参数,其中包括:
客户端将所述本地参数对应的内存注册为RDMA内存,生成RDMA通道信使元信息;
通知服务端注册内存和获取所述RDMA通道信使元信息;其中,RDMA通道信使元信息包括远程内存识别标志;所述远程内存识别标志,被提供给远程主机节点的通道适配器,用来在RDMA操作期间允许远程进程访问本地的系统内存;
服务端注册内存;并获取所述RDMA通道信使元信息;通过两端的注册内存地址和所述RDMA通道信使元信息中的远程内存识别标志形成RDMA通道;
从客户端的相应内存中读取所述引用参数并写入服务端相应的内存;
调用和执行服务端远程进程,通过网络传输返回结果给客户端本地进程。
2.根据权利要求1所述服务端直接读取引用参数的远程过程调用方法,其特征在于,若需传入多个引用参数,则所述的RDMA通道元信使信息包括引用参数编号。
3.根据权利要求2所述服务端直接读取引用参数的远程过程调用方法,其特征在于,分批次传入所述的引用参数。
4.根据权利要求2所述服务端直接读取引用参数的远程过程调用方法,其特征在于,根据所述引用参数编号设定优先级,管理所述参数的传入次序。
5.根据权利要求1所述服务端直接读取引用参数的远程过程调用方法,其特征在于,所述服务端在要求传入本地参数时,直接注册内存。
6.根据权利要求1所述服务端直接读取引用参数的远程过程调用方法,其特征在于,若所述引用参数小于预设数据长度,则仍通过TCP通道传输。
7.一种装置,用于运行远程过程调用的客户端程序,其特征在于,所述装置,包括:
处理器、存储器和RDMA网卡;
所述的存储器存储有可在所述处理器上运行的计算机程序;
所述的处理器在执行上述计算机程序时,能够执行权利要求1-6任一所述的服务端直接读取引用参数的远程过程调用方法中客户端的操作;
所述的RDMA网卡则为所述方法中的RDMA传输提供物理通道。
8.一种装置,用于运行远程过程调用的服务端程序,其特征在于,所述装置,包括:
处理器、存储器和RDMA网卡;
所述的处理器在执行上述计算机程序时,能够执行权利要求1-6任一所述的服务端直接读取引用参数的远程过程调用方法中服务端的操作;
所述的RDMA网卡则为所述方法中的RDMA传输提供物理通道。
9.一种远程跨进程通信系统,其特征在于,所述远程跨进程通信系统,包括:权利要求7所述的客户端装置和权利要求8所述的服务端装置。
10.一种计算机可读存储介质,其特征在于,存储有用于数据通信的代码,其中包括:用于执行权利要求1-7任一所述的服务端直接读取引用参数的远程过程调用方法操作的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010797350.0A CN114095550A (zh) | 2020-08-10 | 2020-08-10 | 一种服务端直接读取引用参数的远程过程调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010797350.0A CN114095550A (zh) | 2020-08-10 | 2020-08-10 | 一种服务端直接读取引用参数的远程过程调用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114095550A true CN114095550A (zh) | 2022-02-25 |
Family
ID=80295365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010797350.0A Pending CN114095550A (zh) | 2020-08-10 | 2020-08-10 | 一种服务端直接读取引用参数的远程过程调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114095550A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116074337A (zh) * | 2023-04-06 | 2023-05-05 | 徐工汉云技术股份有限公司 | 基于api网关的远程过程调用处理方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105978985A (zh) * | 2016-06-07 | 2016-09-28 | 华中科技大学 | 一种用户态RPC over RDMA的内存管理方法 |
US20160357702A1 (en) * | 2015-06-02 | 2016-12-08 | Microsoft Technology Licensing, Llc | Fast read/write between networked computers via rdma-based rpc requests |
US20190012278A1 (en) * | 2017-07-10 | 2019-01-10 | Fungible, Inc. | Data processing unit for compute nodes and storage nodes |
CN109213611A (zh) * | 2018-08-01 | 2019-01-15 | 天津字节跳动科技有限公司 | 跨进程通讯方法、装置、终端及存储介质 |
US20190138459A1 (en) * | 2017-11-03 | 2019-05-09 | Google Inc. | In-Memory Distributed Cache |
CN110177118A (zh) * | 2019-06-13 | 2019-08-27 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN111404931A (zh) * | 2020-03-13 | 2020-07-10 | 清华大学 | 一种基于持久性内存的远程数据传输方法 |
-
2020
- 2020-08-10 CN CN202010797350.0A patent/CN114095550A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160357702A1 (en) * | 2015-06-02 | 2016-12-08 | Microsoft Technology Licensing, Llc | Fast read/write between networked computers via rdma-based rpc requests |
CN105978985A (zh) * | 2016-06-07 | 2016-09-28 | 华中科技大学 | 一种用户态RPC over RDMA的内存管理方法 |
US20190012278A1 (en) * | 2017-07-10 | 2019-01-10 | Fungible, Inc. | Data processing unit for compute nodes and storage nodes |
US20190138459A1 (en) * | 2017-11-03 | 2019-05-09 | Google Inc. | In-Memory Distributed Cache |
CN109213611A (zh) * | 2018-08-01 | 2019-01-15 | 天津字节跳动科技有限公司 | 跨进程通讯方法、装置、终端及存储介质 |
CN110177118A (zh) * | 2019-06-13 | 2019-08-27 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN111404931A (zh) * | 2020-03-13 | 2020-07-10 | 清华大学 | 一种基于持久性内存的远程数据传输方法 |
Non-Patent Citations (2)
Title |
---|
周江;熊劲;马灿;: "面向机群文件系统的高可靠消息传输机制", 华中科技大学学报(自然科学版), no. 1 * |
陈超: "基于Web的GPU服务平台的实现", 《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116074337A (zh) * | 2023-04-06 | 2023-05-05 | 徐工汉云技术股份有限公司 | 基于api网关的远程过程调用处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4638676B2 (ja) | 共有リソースのための通知方法 | |
US20020144009A1 (en) | System and method for common information model object manager proxy interface and management | |
CN106557288B (zh) | 一种获取打印数据的方法及装置 | |
WO2009097776A1 (zh) | 一种实现业务升级的系统、装置及方法 | |
CN110719215A (zh) | 虚拟网络的流信息采集方法及装置 | |
US6742075B1 (en) | Arrangement for instigating work in a channel adapter based on received address information and stored context information | |
CN110535811B (zh) | 远端内存管理方法及系统、服务端、客户端、存储介质 | |
WO2017032152A1 (zh) | 将数据写入存储设备的方法及存储设备 | |
CN108512889B (zh) | 一种基于http的应用响应推送方法及代理服务器 | |
CN114095550A (zh) | 一种服务端直接读取引用参数的远程过程调用方法 | |
CN111404986B (zh) | 数据传输处理方法、设备和存储介质 | |
CN112165449B (zh) | web应用实时权限的控制方法、电子装置和存储介质 | |
CN108632200B (zh) | 数据传输方法和装置 | |
JP2009157786A (ja) | メッセージ送信制御方法、メッセージ送信制御装置、及びメッセージ送信制御プログラム | |
CN114116240A (zh) | 一种客户端直接推入本地参数到远端的远程过程调用方法 | |
US7693166B2 (en) | Method and apparatus for transmitting data to network and method and apparatus for receiving data from network | |
CN113037649B (zh) | 网络中断数据包的收发方法和装置、电子设备和存储介质 | |
CN112822299B (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
CN114116239A (zh) | 一种引用参数的传输方法及远程过程调用方法 | |
CN109688204B (zh) | 基于ndn网络的文件下载方法、节点、终端 | |
JPH08212180A (ja) | プロセス間通信処理装置 | |
CN115914253A (zh) | 网络数据包抓取方法和客户端、服务端 | |
CN114528114A (zh) | 数据处理方法、装置及设备 | |
JP2010146246A (ja) | マルチエージェントシステム用フレームワークコンピュータプログラム、ネットワークシステム、及びエージェント間通信方法 | |
CN113742617A (zh) | 一种缓存更新的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |