一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种客户端直接推入本地参数到远端的远程过程调用方法与流程

2022-03-01 18:09:02 来源:中国专利 TAG:


1.本发明涉及计算机技术中的远程过程调用(rpc)技术领域,具体地,涉及一种客户端直接推入本地参数到远端的远程过程调用方法。


背景技术:

2.远程过程调用,即remote procedure call,简称rpc,是指一种是一台主机上的程序能够调用其他主机上方法的机制。具体来说,一个典型的远程过程调用的具体过程,例如,可以包括:计算机a上的进程,调用另外一台计算机b上的进程,其中计算机a上的调用进程被挂起,而计算机b上的被调用进程开始执行,当值返回给计算机a时,计算机a进程继续执行。其中,调用方(例如前面述及的计算机a)可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息。
3.虽然rpc是需要调用远端主机上的方法/函数等,但是从根本上来说,rpc也是要使远程过程调用具有与本地过程调用相同的形式。稍微不同于本地过程调用的是,rpc并不要求操作系统提供数据,而是在远程过程调用过程中,是将参数打包成消息发送到远端的作为被调用方主机。
4.而要实现远程过程调用,就需要考虑如何传递参数。传递引用参数并不是一个简单的消息传递过程。单纯地传递参数的引用(例如,包括指针)是完全没有意义的,因为仅将引用地址传递给远端主机,其指向的内存位置可能与远程操作系统上的完全不同。若要实现一个有效的引用参数传递,则其过程至少包括:客户端(调用方主机)发送参数的副本,将其通过跨端通信传输到远程操作系统的内存中等。
5.一般来说,上述的引用参数传输过程的实现,是通过tcp协议或基于tcp的相关通信协议/通信框架实现的。然而,传统的基于tcp/ip协议的跨端通信,在数据包处理过程中,往往要经过操作系统及其他软件层,需要占用大量的服务器资源和内存总线带宽,数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移动,给服务器的cpu和内存造成了沉重负担。尤其是网络带宽、处理器速度与内存带宽三者的严重"不匹配性",更加剧了网络延迟效应。
6.因此,若是在远程调用过程中,客户端本地进程在收到服务端传入本地参数的需求时,直接将本地参数推入到服务端的远程内存中,无疑将能提高rpc效率。


技术实现要素:

7.有鉴于此,本发明提供一种客户端直接推入本地参数到远端的远程过程调用方法,以提高远程过程调用(rpc)过程中客户端上被引用的本地参数传入服务端的通信效率。
8.一方面,本发明实施例提供一种客户端直接推入本地参数到远端的远程过程调用方法。
9.上述的远程过程调用方法,包括:客户端本地进程向服务端提出远程过程调用请求;服务端注册并启动相关进程,即对于客户端本地进程来说的远程服务端进程;传入远程
服务端进程需要的本地参数,其中包括:当远程服务端进程要求客户端传入本地参数时,将所述本地参数对应的内存注册为rdma内存,并请求服务端注册内存和返回rdma通道信使元信息,其中,rdma通道信使元信息主要包括远程内存识别标志;所述远程内存识别标志,被提供给远程主机节点的通道适配器(hca),用来在rdma操作期间允许远程进程访问本地的系统内存;服务端注册内存,生成rdma通道信使元信息,并返回所述rdma通道信使元信息;通过两端的注册内存地址和所述rdma通道信使元信息中的远程内存识别标志形成rdma通道,客户端本地进程将本地参数写入服务端相应的内存;调用和执行服务端远程进程,通过网络传输返回结果给客户端本地进程。
10.在第一方面的各实施例中,其中的一些作为一种可能的实现方式,其所提供的远程过程调用方法中,若一次rpc过程中远程服务端请求客户端传入多个本地参数参与的远程过程执行,则使所述的rdma通道元信使信息包括传入参数编号,所述传入参数编号一一对应所述传入参数,两端进程可通过传入参数编号识别所述的传入参数。
11.在上述实施例中的一些,更优选的,其中的一些作为一种可能的实现方式,所述的传入参数,可以分批次传入;服务端可以在当前所需传入参数被传入后即开始执行远程过程,同时继续传输后续的传入参数。
12.在上述实施例中的一些,更优选的,其中的一些作为一种可能的实现方式,根据所述传入参数编号设定优先级,管理所述参数的传入次序,以最大化利用通道和提高程序执行效率。
13.在第一方面的各实施例中,其中的一些作为一种可能的实现方式,其所提供的远程过程调用方法中,若所述传入参数的大小为预选约定的或服务端已知所述传入参数的大小,则可无需等待客户端申请,直接在要求传入本地参数之初,即注册内存和生成所述rdma通道信使元信息以便在客户端申请时即立时提供之。
14.在第一方面的各实施例中,其中的一些作为一种可能的实现方式,其所提供的远程过程调用方法中,在通过rdma通道传输完所述传入参数后,还可通过额外的消息经tcp通道通知服务端传输结束,以提高服务端的响应速度。
15.在第一方面的各实施例中,其中的一些作为一种可能的实现方式,考虑到rdma通信的开销及通信收益等,其所提供的远程过程调用方法中,对于小于预设数据长度的传入参数,可仍通过tcp通道传输。而该预设长度为经验值,可通过多次实验摸索能够得到较高通信效率收益的值。
16.另一方面,本发明实施例提供一种装置,用于运行远程过程调用的客户端程序。
17.结合第一方面,上述的装置,包括:处理器、存储器和rdma网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行第一方面述及的客户端直接推入本地参数到远端的远程过程调用方法中客户端的操作;所述的rdma网卡则为所述方法中的rdma传输提供物理通道。
18.再一方面,本发明实施例提供一种装置,用于运行远程过程调用的服务端程序。
19.结合上述各方面,上述的装置,包括:处理器、存储器和rdma网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行第一方面述及的客户端直接推入本地参数到远端的远程过程调用方法中服务端的操作;所述的rdma网卡则为所述方法中的rdma传输提供物理通道。
20.又一方面,本发明实施例提供一种计算机可读存储介质。
21.上述的计算机可读存储介质中存储有用于数据通信的代码,其中包括:
22.用于执行第一方面述及的客户端直接推入本地参数到远端的远程过程调用方法的指令;或,执行第一方面述及的客户端直接推入本地参数到远端的远程过程调用方法中客户端/服务端操作的指令。
23.上述诸实施例提供的客户端直接推入本地参数到远端的远程过程调用方法及客户端装置、服务端装置和相关计算机软件可读存储介质,主要是在远程过程调用的执行过程中,使其中的客户端直接向远程服务端内存写入本地参数(即引用参数),以克服通信瓶颈,提高远程跨端、跨进程通信效率,进而提高整个运行效率。
24.下面通过附图、具体实施例对本发明的技术方案做进一步的描述。
附图说明
25.为更加清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明中一部分实施例或现有技术描述中涉及的附图做简单介绍。
26.图1为现有技术中远程过程调用的一种实现的架构示意图;
27.图2为本发明一实施例提供的一种客户端直接推入本地参数到远端的远程过程调用方法的过程示意图。
具体实施方式
28.下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.一般来说,远程过程调用的具体实现,无外乎例如图1的一种实现方式所示,除了必要的在调用方主机端的调用代理(即涉及请求调用等)和被调用方主机端的注册管理(即涉及被调用方端的进程唤起等),在消息传输层面,为了便于管理,也可以如图1中所示,内抽象成消息管理层和传输管理层,而实现传输则主要是通过tcp协议或基于tcp的相关通信协议/通信框架实现的。显然,若但需要传入的本地参数(通常也被称为引用参数),其数据流增大,tcp通道无疑将成为制约瓶颈。
30.于是,本发明提供一种客户端直接推入本地参数到远端的远程过程调用方法,在远程调用过程中,客户端本地进程在收到服务端传入本地参数的需求时,直接将本地参数推入到服务端的远程内存中,以提高rpc效率。
31.以下为本发明的一些优选实施例。其中,
32.本发明的一些优选实施例提供一种客户端直接推入本地参数到远端的远程过程调用方法,该远程过程调用方法,包括:客户端本地进程向服务端提出远程过程调用请求;服务端上主进程注册并启动相关进程,即相对于客户端的远程服务端进程;然后服务端主进程请求客户端本地进程传入远程服务端进程需要的本地参数,其中包括:当远程服务端进程要求客户端传入本地参数时,将所述本地参数对应的内存注册为rdma内存,并请求服务端注册内存和返回rdma通道信使元信息,其中,rdma通道信使元信息主要包括远程内存
识别标志;所述远程内存识别标志,被提供给远程主机节点的通道适配器(hca),用来在rdma操作期间允许远程进程访问本地的系统内存;服务端主进程注册内存,生成rdma通道信使元信息,并返回所述rdma通道信使元信息;通过两端的注册内存地址和所述rdma通道信使元信息中的远程内存识别标志形成rdma通道,客户端本地进程将本地参数写入服务端相应的内存;服务端主进程通过调用和执行服务端远程进程,打印结果返回给主进程,并通过网络传输返回结果给客户端本地进程。
33.在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,若一次rpc过程中远程服务端请求客户端传入多个本地参数参与的远程过程执行,则使所述的rdma通道元信使信息包括传入参数编号,所述传入参数编号一一对应所述传入参数,两端进程可通过传入参数编号识别所述的传入参数。
34.在上述优选实施例中的一些中,进一步优选的,其中的一些所提供的远程过程调用方法中,所述的传入参数,可以分批次传入;服务端可以在当前所需传入参数被传入后即开始执行远程过程,同时继续传输后续的传入参数。
35.在上述优选实施例中的一些中,进一步优选的,其中的一些所提供的远程过程调用方法中,根据所述传入参数编号设定优先级,管理所述参数的传入次序,以最大化利用通道和提高程序执行效率。
36.在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,其所提供的远程过程调用方法中,若所述传入参数的大小为预选约定的或服务端已知所述传入参数的大小,则可无需等待客户端申请,直接在要求传入本地参数之初,即注册内存和生成所述rdma通道信使元信息以便在客户端申请时即立时提供所述rdma通道信使元信息。
37.在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,在通过rdma通道传输完所述传入参数后,还可通过额外的消息经tcp通道通知服务端传输结束,以提高服务端的响应速度。
38.在上述优选实施例中的一些中,还提供一种优选的实现方式,其所提供的远程过程调用方法中,考虑到rdma通信的开销及通信收益等,其所提供的远程过程调用方法中,对于小于预设数据长度的传入参数,可仍通过tcp通道传输。而该预设长度为经验值,可通过多次实验摸索能够得到较高通信效率收益的值。
39.本发明的另一些优选实施例提供一种装置,用于运行远程过程调用的客户端程序。该客户端装置,包括:处理器、存储器和rdma网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行上述实施例中述及的客户端直接推入本地参数到远端的远程过程调用方法中客户端的操作;所述的rdma网卡则为所述方法中的rdma传输提供物理通道。
40.本发明的再一些优选实施例提供一种装置,用于运行远程过程调用的服务端程序。该服务端装置,包括:处理器、存储器和rdma网卡;其中,所述的存储器存储有可在所述处理器上运行的计算机程序;而所述的处理器在执行上述计算机程序时,能够执行上述实施例中述及的客户端直接推入本地参数到远端的远程过程调用方法中服务端的操作;所述的rdma网卡则为所述方法中的rdma传输提供物理通道。
41.本发明的又一些优选实施例提供一种计算机可读存储介质。该计算机可读存储介
质中存储有用于数据通信的代码,其中包括:用于执行上述实施例述及的客户端直接推入本地参数到远端的远程过程调用方法的指令;或,执行上述实施例述及的客户端直接推入本地参数到远端的远程过程调用方法中客户端/服务端操作的指令。
42.以下结合附图,进一步说明上述实施例中的方法等。附图2为本发明一实施例提供的一种客户端直接推入本地参数到远端的远程过程调用方法的过程示意图。如图2所示,该远程调用过程包括:
43.1客户端本地的相关进程向服务端提出远程过程调用请求:其中,
44.1.1通过服务端上主进程注册远程服务端进程;
45.1.2以及启动远程服务端进程;
46.2然后服务端调用客户端本地进程,要求传入其本地参数:
47.2.1调用远程服务端进程,传入本地参数;
48.2.1.1a本地参数内存注册;
49.2.1.1b申请服务端远程内存识别标志——r_key;
50.2.1.2服务端内存注册;
51.2.1.3返回r_key到客户端;
52.2.1.4客户端根据返回的r_key,将本地参数写入服务端相应的内存;
53.2.2调用服务;
54.2.3远程执行进程;
55.2.4返回执行结果;
56.2.5网络传输返回结果。
57.以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献