CN107479985B - 一种远程过程调用的方法、装置及计算机设备 - Google Patents

一种远程过程调用的方法、装置及计算机设备 Download PDF

Info

Publication number
CN107479985B
CN107479985B CN201710523205.1A CN201710523205A CN107479985B CN 107479985 B CN107479985 B CN 107479985B CN 201710523205 A CN201710523205 A CN 201710523205A CN 107479985 B CN107479985 B CN 107479985B
Authority
CN
China
Prior art keywords
target
processing function
synchronous processing
global dictionary
calling request
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.)
Active
Application number
CN201710523205.1A
Other languages
English (en)
Other versions
CN107479985A (zh
Inventor
杨亮
陈少杰
张文明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Yishengxin Network Technology Co.,Ltd.
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710523205.1A priority Critical patent/CN107479985B/zh
Publication of CN107479985A publication Critical patent/CN107479985A/zh
Priority to PCT/CN2018/082162 priority patent/WO2019001073A1/zh
Application granted granted Critical
Publication of CN107479985B publication Critical patent/CN107479985B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Abstract

本发明提供了一种远程过程调用的方法、装置及计算机设备,所述方法包括:将预先预定的远程方法的名称及对应的同步处理函数注册至全局字典中;接收目标调用请求;基于所述目标调用请求,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数;若在所述全局字典中能查找到目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果;如此,被调用端可以同步响应来自调用端的调用请求,且只需在接收到目标调用请求之前将同步处理函数注册至全局字典中,在接收到目标调用请求后即可根据所述调用请求快速搭建一个远程过程调用的信号通路,进而执行同步处理函数,向调用端返回执行结果,从而提高了工作效率。

Description

一种远程过程调用的方法、装置及计算机设备
技术领域
本发明属于通信技术领域,尤其涉及一种远程过程调用的方法、装置及计算机设备。
背景技术
远程过程调用,就是一个进程调用另外一个进程所提供的方法,适用于进程间的通信。
现有技术中在远程过程调用中,在处理相应的服务时,需要搭建远程过程调用模型,而搭建远程过程调用模型的过程比较繁琐,导致工作效率下降。
基于此,本发明提供一种远程过程调用的方法、装置及计算机设备,以解决现有技术中的上述问题。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种远程过程调用的方法、装置及计算机设备,用于解决现有技术中在进行远程过程调用时,搭建远程过程调用模型的过程比较繁琐,导致工作效率下降的技术问题。
本发明提供一种远程过程调用的方法,所述方法包括:
将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
接收目标调用请求;
基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的目标同步处理函数;
若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
上述方案中,所述若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,包括:
获取所述目标调用请求中的参数信息;
基于所述参数信息,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数。
上述方案中,所述获取并发送执行结果,包括:
获取所述目标调用请求中的标识符;
将所述标识符及所述执行结果序列化为一个网络消息,发送所述网络消息。
上述方案中,所述将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中,包括:
调用RpcRegisterProcedure函数,将预先约定的远程方法的名称及所述远程方法对应的同步处理函数注册至全局字典中。
上述方案中,若在所述全局字典中没有查找到目标同步处理函数,还包括:
返回结果集,所述结果集中包括用于指示无查找结果的指示值。
上述方案中,所述同步处理函数具体为:IRpcArgumentArray*(*RpcProcedure)(void*caller,IRpcArgument**args,int numArgs);其中,所述IRpcArgumentArray为数组集合,用于存储所述执行结果;所述args为所述目标调用请求中的参数信息;所述numArgs为所述args参数的个数。
本发明还提供一种远程过程调用的装置,所述装置包括:
注册单元,用于将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
接收单元,用于接收目标调用请求;
判断单元,用于基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的所述目标同步处理函数;
执行单元,用于若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
上述方案中,所述执行单元具体用于:
获取所述目标调用请求中的参数信息;
基于所述参数信息,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
接收目标调用请求;
基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的目标同步处理函数;
若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
本发明还提供一种远程过程调用的计算机设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中,
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上述任一所述的方法。
本发明提供了一种远程过程调用的方法、装置及计算机设备,所述方法包括:将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;接收目标调用请求;基于所述目标调用请求,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数;若在所述全局字典中能查找到目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果;如此,被调用端可以同步响应来自调用端的调用请求,且只需在接收到目标调用请求之前将同步处理函数注册至全局字典中,在接收到目标调用请求后即可根据所述调用请求快速搭建一个远程过程调用的信号通路,进而执行同步处理函数,向调用端返回执行结果,从而提高了工作效率。
附图说明
图1为本发明实施例一提供的远程过程调用的方法流程示意图;
图2为本发明实施例二提供的远程过程调用的装置结构示意图;
图3为本发明实施例三提供的远程过程调用的计算机设备的整体结构示意图。
具体实施方式
为了在远程过程调用中,简化实现流程,提高工作效率,本发明提供了一种远程过程调用的方法、装置及计算机设备,所述方法包括:将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;接收目标调用请求;基于所述目标调用请求,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数;若在所述全局字典中能查找到目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
实施例一
本实施例提供一种远程过程调用的方法,如图1所示,所述方法包括:
S101,将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
本步骤中,在接收调用请求之前,需要调用RpcRegisterProcedure函数,将预先约定的远程方法的名称及该远程方法对应的同步处理函数注册至全局字典Dict中,以能在接收到调用请求时,可以直接在全局字典Dict中查找相应的同步处理函数,快速搭建远程过程调用模型,提高处理效率。所述预先约定的远程方法为调用端与被调用端预先约定的。
这里,所述同步处理函数的模型为:IRpcArgumentArray*(*RpcProcedure)(void*caller,IRpcArgument**args,int numArgs);其中,所述IRpcArgumentArray为IRpcArgument结构的数组集合,用于存储所述执行结果;所述caller,IRpcArgument为标识参数;所述args为所述目标调用请求中的参数信息;所述numArgs为所述args参数的个数。
S102,接收目标调用请求,基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的目标同步处理函数;
本步骤中,将预先约定的远程方法对应的同步处理函数注册至全局字典Dict中后,接收调用端通过调用RpcCallProcedure函数发送的目标调用请求,基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的目标同步处理函数。其中,所述目标调用请求中包括预先约定的远程方法的名称等信息。
具体地,接收目标调用请求后,也就是接收到RpcMessage消息时,获取远程方法的名称,基于所述名称,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数。这里,RpcMessage消息中的procedure字段代表要调用的远程方法名,根据该方法名在全局字典Dict中查找目标同步处理函数RpcProcedure。
S103,若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
本步骤中,如果能在所述全局字典中查找到目标同步处理函数RpcProcedure,则从RpcMessage消息中获取参数信息;具体是通过调用GetRpcArgsFromMessage函数从RpcMessage消息中获取到IRpcArgument结构,然后调用IRpcArgument结构中的参数获取方法i32Value,获取所述目标调用请求中的参数信息。
当获取到所有的参数信息后,还需要获取所述目标调用请求中的标识符,所述标识符是目标调用请求的唯一标识符,用于与其他调用请求进行区分,避免混淆;需要说明的是,每个调用请求都会存在一个唯一的标识符。
具体地,当调用端调用RpcCallProcedure函数向被调用端发送目标调用请求时,会生成一个标识符,并将这个标识符写入RpcMessage消息中gid字段中,当被调用端接收到RpcMessage消息后,即可从gid字段获取所述目标调用请求中的标识符。
当获取到标识符后,将所有的参数信息提供给目标同步处理函数,具体地,将第一标识符赋值给所述目标同步处理函数的标识参数caller,IRpcArgument,将目标调用请求中的参数信息赋值给args,将参数信息的个数赋值给numArgs;为了避免主线程阻塞,提高处理效率,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数RpcProcedure,获取执行结果。
当获取到执行结果后,调用CreateRpcArgumentArray创建一个IRpcArgumentArray,然后调用IRpcArgumentArray的append方法将执行结果放入IRpcArgumentArray中。
再将所述标识符及所述执行结果序列化为一个网络消息,将所述述网络消息发送至调用端。
具体地,当同步处理函数执行成功后,在执行结果的结果集中,第一个值为ERROR_OK,用于告知调用端,本次远程调用成功;第一个值后即是IRpcArgumentArray。
然后,调用BuildRpcMessageFrom方法将执行结果的结果集序列化成一个网络消息,并将网络消息中的gid字段设置为标识符,将网络消息中的rpcType字段设置为RPC_MESSAGE_RESPONSE值,用于表示该网络消息是一个远程响应消息。
另外,若在全局字典Dict中没有查找到目标同步处理函数,还包括:返回结果集,所述结果集中包括用于指示无查找结果的指示值,所述指示值的内容为可以ERROR_RPC_NOT_FOUND,用于告知调用端,被调用端没有该远程过程方法。
实施例二
相应于实施例一,本实施例还提供一种远程过程调用的装置,如图2所示,所述远程过程调用装置包括:注册单元21、接收单元22、判断单元23及执行单元24;其中,
在接收调用请求之前,所述注册单元21需要调用RpcRegisterProcedure函数,将预先约定的远程方法的名称及该远程方法对应的同步处理函数注册至全局字典Dict中,以能在接收到调用请求时,可以直接在全局字典Dict中查找相应的同步处理函数,快速搭建远程过程调用模型,提高处理效率。所述预先约定的远程方法为调用端与被调用端预先约定的。
这里,所述同步处理函数的模型为:IRpcArgumentArray*(*RpcProcedure)(void*caller,IRpcArgument**args,int numArgs);其中,所述IRpcArgumentArray为IRpcArgument结构的数组集合,用于存储所述执行结果;所述caller,IRpcArgument为标识参数;所述args为所述目标调用请求中的参数信息;所述numArgs为所述args参数的个数。
所述注册单元21将预先约定的远程方法对应的同步处理函数注册至全局字典Dict中后,所述接收单元22用于接收调用端调用RpcCallProcedure函数发送的目标调用请求,基于所述目标调用请求,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数。其中,所述目标调用请求中包括预先约定的远程方法的名称等信息。
具体地,所述接收单元22接收目标调用请求后,也就是接收到RpcMessage消息时,获取远程方法的名称,判断单元23可以基于所述名称,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数。这里,RpcMessage消息中的procedure字段代表要调用的远程方法名,根据该方法名在全局字典Dict中查找目标同步处理函数RpcProcedure。
若在所述全局字典中能查找到目标同步处理函数,所述执行单24用于在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
具体地,如果能在所述全局字典中查找到目标同步处理函数RpcProcedure,所述执行单元24则从RpcMessage消息中获取参数列表;具体是通过调用GetRpcArgsFromMessage函数从RpcMessage消息中获取到IRpcArgument结构,然后调用IRpcArgument结构中的参数获取方法i32Value,获取所述目标调用请求中的参数信息。
当获取到所有的参数信息后,所述执行单元24还需要获取所述目标调用请求中的标识符,所述标识符是目标调用请求的唯一标识符,用于与其他调用请求进行区分,避免混淆;需要说明的是,每个调用请求都会存在一个唯一的标识符。
具体地,当调用端调用RpcCallProcedure函数想被调用端发送目标调用请求时,会生成一个标识符,并将这个标识符写入RpcMessage消息中gid字段中,当被调用端接收到RpcMessage消息后,所述执行单元24即可从gid字段获取所述目标调用请求中的标识符。
当获取到标识符后,将所有的参数信息提供给目标同步处理函数,具体地,将第一标识符赋值给所述目标同步处理函数的标识参数caller,IRpcArgument,将目标调用请求中的参数信息赋值给args,将参数信息的个数赋值给numArgs;为了避免主线程阻塞,提高处理效率,所述执行单元24将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数RpcProcedure,获取执行结果。
当获取到执行结果后,所述执行单元24调用CreateRpcArgumentArray创建一个IRpcArgumentArray,然后调用IRpcArgumentArray的append方法将执行结果放入IRpcArgumentArray中。
所述执行单元24再将所述标识符及所述执行结果序列化为一个网络消息,将所述述网络消息发送至调用端。
具体地,当同步处理函数执行成功后,在执行结果的结果集中,第一个值为ERROR_OK,用于告知调用端,本次远程调用成功;第一个值后即是IRpcArgumentArray。
然后,所述执行单元24调用BuildRpcMessageFrom方法将结果集序列化成一个网络消息,并将网络消息中的gid字段设置为标识符,将网络消息中的rpcType字段设置为RPC_MESSAGE_RESPONSE值,用于表示该网络消息是一个远程响应消息。
另外,若在全局字典Dict中没有查找到目标同步处理函数,所述执行单元24还用于:返回结果集,所述结果集中包括用于指示无查找结果的指示值,所述指示值的内容为可以ERROR_RPC_NOT_FOUND,用于告知调用端,被调用端没有该远程过程方法。
实施例三
实际应用中,利用实施例一提供的调用方法及实施例二提供的调用装置对add远程方法进行调用时,具体实现如下:
被调用端在接收调用请求之前,调用RpcRegisterProcedure函数,将预先预定的add远程方法的名称及对应的同步处理函数注册至全局字典Dict中,以能在接收到调用请求时,可以直接在全局字典Dict中查找add远程方法对应的同步处理函数,快速搭建远程过程调用模型,提高处理效率。
这里,所述同步处理函数的模型为:IRpcArgumentArray*(*RpcProcedure)(void*caller,IRpcArgument**args,int numArgs);其中,所述IRpcArgumentArray为IRpcArgument结构的数组集合,用于存储所述执行结果;所述IRpcArgument为数组结构;所述caller,IRpcArgument为标识参数;所述args为所述目标调用请求中的参数信息;所述numArgs为所述args参数的个数。比如,在调用add远程方法时,调用端将提供两个参数:第一个参数是数值1,第二个参数是数值2,那么,参数信息即为数值1和数值2,而numArgs的值则为2。
然后,接收调用端通过调用RpcCallProcedure函数发送的调用add远程方法的目标调用请求,基于所述目标调用请求,判断在所述全局字典中是否能查找到所述add远程方法对应的目标同步处理函数,所述目标调用请求中包括add远程方法的名称等信息。
具体地,被调用端接收目标调用请求后,也就是接收到RpcMessage消息时,获取add远程方法的名称,基于所述名称,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数。这里,RpcMessage消息中的procedure字段代表要调用的远程方法名称,可以根据该方法名在全局字典Dict中查找目标同步处理函数RpcProcedure。
如果能在所述全局字典中查找到add远程方法对应的目标同步处理函数RpcProcedure,则从RpcMessage消息中获取参数信息;具体是通过调用GetRpcArgsFromMessage函数从RpcMessage消息中获取到数组结构IRpcArgument,然后调用IRpcArgument结构中的参数获取方法i32Value,利用i32Value方法,来获取这两个数值,即args[0]->i32Value()获取的值就是1,args[1]->i32Value()获取的值就是2。
当获取到add远程方法的所有的参数信息后,还需要获取所述目标调用请求中的标识符,所述标识符是目标调用请求的唯一标识符,用于与其他调用请求进行区分,避免混淆;需要说明的是,每个调用请求都会存在一个唯一的标识符。
具体地,当调用端调用RpcCallProcedure函数向被调用端发送目标调用请求时,会生成一个标识符,并将这个标识符写入RpcMessage消息中gid字段中,当被调用端接收到RpcMessage消息后,即可从gid字段获取所述目标调用请求中的标识符。
当获取到标识符后,将获取到add远程方法中所有的参数信息提供给目标同步处理函数,具体地,将第一标识符赋值给所述目标同步处理函数的标识参数caller,IRpcArgument,将目标调用请求中的参数信息1和2赋值给args,将参数信息的个数2赋值给numArgs;为了避免主线程阻塞,提高处理效率,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数RpcProcedure,将参数转换为整数内容,即将第一个参数转换为数值1,将第二个参数转换为数值2,然后执行add方法,即执行加法运算得到执行结果,即执行结果为3,获取执行结果。
当获取到执行结果后,调用CreateRpcArgumentArray创建一个IRpcArgumentArray,然后调用IRpcArgumentArray的append方法将执行结果放入IRpcArgumentArray中,即将执行结果的数值3放入IRpcArgumentArray中。
再将上述所述的标识符及所述执行结果序列化为一个网络消息,将所述述网络消息发送至调用端。
具体地,当同步处理函数执行成功后,在执行结果的结果集中,第一个值为ERROR_OK,用于告知调用端,本次远程调用成功;第一个值后即是IRpcArgumentArray。
然后,调用BuildRpcMessageFrom方法将执行结果的结果集序列化成一个网络消息,并将网络消息中的gid字段设置为标识符,将网络消息中的rpcType字段设置为RPC_MESSAGE_RESPONSE值,用于表示该网络消息是一个远程响应消息。
另外,若在全局字典Dict中没有查找到add远程方法对应的目标同步处理函数,还包括:返回结果集,所述结果集中包括用于指示无查找结果的指示值,所述指示值的内容为可以ERROR_RPC_NOT_FOUND,用于告知调用端,被调用端没有add远程过程方法。
实施例四
本实施例还提供一种远程过程调用的计算机设备,如图3所示,所述计算机设备包括:射频(Radio Frequency,RF)电路310、存储器320、输入单元330、显示单元340、音频电路350、WiFi模块360、处理器370、以及电源380等部件。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
RF电路310可用于信号的接收和发送,特别地,将基站的下行信息接收后,给处理器350处理。通常,RF电路310包括但不限于至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。
存储器320可用于存储软件程序以及模块,处理器350通过运行存储在存储器320的软件程序以及模块,从而执行计算机设备的各种功能应用以及数据处理。存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元330可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元330可包括键盘331以及其他输入设备332。键盘331,可收集用户在其上的输入操作,并根据预先设定的程式驱动相应的连接装置。键盘331采集到输出信息后再送给处理器350。除了键盘331,输入单元330还可以包括其他输入设备332。具体地,其他输入设备332可以包括但不限于触控面板、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元340可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元340可包括显示面板341,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板341。进一步的,键盘331可覆盖显示面板341,当键盘331检测到在其上或附近的触摸操作后,传送给处理器350以确定触摸事件的类型,随后处理器350根据输入事件的类型在显示面板341上提供相应的视觉输出。虽然在图3中键盘331与显示面板341是作为两个独立的部件来实现计算机设备的输入和输入功能,但是在某些实施例中,可以将键盘331与显示面板341集成而实现计算机设备的输入和输出功能。
音频电路350、扬声器351,传声器352可提供用户与计算机设备之间的音频接口。音频电路350可将接收到的音频数据转换后的电信号,传输到扬声器351,由扬声器351转换为声音信号输出;
WiFi属于短距离无线传输技术,计算机设备通过WiFi模块360可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了WiFi模块360,但是可以理解的是,其并不属于计算机设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器370是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器320内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器370可包括一个或多个处理单元;优选的,处理器370可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
计算机设备还包括给各个部件供电的电源380(比如电源适配器),优选的,电源可以通过电源管理系统与处理器370逻辑相连。
本发明提供的远程过程调用的方法、装置及计算机设备能带来的有益效果至少是:
本发明提供一种远程过程调用的方法、装置及计算机设备,所述方法包括:将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;接收目标调用请求;基于所述目标调用请求,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数;若在所述全局字典中能查找到目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果;如此,被调用端可以同步响应来自调用端的调用请求,且只需在接收到目标调用请求之前将同步处理函数注册至全局字典中,在接收到目标调用请求后即可根据所述调用请求快速搭建一个远程过程调用的信号通路,进而执行同步处理函数,向调用端返回执行结果,从而提高了工作效率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读存储介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供;该程序被处理器执行时实现以下步骤:将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;接收目标调用请求;基于所述目标调用请求,判断在所述全局字典中是否能查找到所述调用请求对应的目标同步处理函数;若在所述全局字典中能查找到目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种远程过程调用的方法,其特征在于,所述方法包括:
将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
接收目标调用请求;
基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的目标同步处理函数;所述目标同步处理函数包括:所述目标调用请求中的参数信息及参数个数;
若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果;其中,
所述若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,包括:
获取所述目标调用请求中的参数信息;
基于所述参数信息,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数。
2.如权利要求1所述的方法,其特征在于,所述获取并发送执行结果,包括:
获取所述目标调用请求中的标识符;
将所述标识符及所述执行结果序列化为一个网络消息,发送所述网络消息。
3.如权利要求1所述的方法,其特征在于,所述将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中,包括:
调用RpcRegisterProcedure函数,将预先约定的远程方法的名称及所述远程方法对应的同步处理函数注册至全局字典中。
4.如权利要求1所述的方法,其特征在于,若在所述全局字典中没有查找到目标同步处理函数,还包括:
返回结果集,所述结果集中包括用于指示无查找结果的指示值。
5.一种远程过程调用的装置,其特征在于,所述装置包括:
注册单元,用于将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
接收单元,用于接收目标调用请求;
判断单元,用于基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的所述目标同步处理函数;所述目标同步处理函数包括:所述目标调用请求中的参数信息及参数个数;
执行单元,用于若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果;其中,
所述执行单元具体用于:
获取所述目标调用请求中的参数信息;
基于所述参数信息,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
将预先约定的远程方法的名称及对应的同步处理函数注册至全局字典中;
接收目标调用请求;
基于所述目标调用请求,判断在所述全局字典中是否能查找到所述目标调用请求对应的目标同步处理函数;所述目标同步处理函数包括:所述目标调用请求中的参数信息及参数个数;
若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,获取并发送执行结果;其中,
所述若在所述全局字典中能查找到所述目标同步处理函数,则在异步线程中执行所述目标同步处理函数,包括:
获取所述目标调用请求中的参数信息;
基于所述参数信息,将所述目标同步处理函数投递至异步线程中,在所述异步线程中执行所述目标同步处理函数。
7.一种远程过程调用的计算机设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中,
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至4任一所述的方法。
CN201710523205.1A 2017-06-30 2017-06-30 一种远程过程调用的方法、装置及计算机设备 Active CN107479985B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710523205.1A CN107479985B (zh) 2017-06-30 2017-06-30 一种远程过程调用的方法、装置及计算机设备
PCT/CN2018/082162 WO2019001073A1 (zh) 2017-06-30 2018-04-08 一种远程过程调用的方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710523205.1A CN107479985B (zh) 2017-06-30 2017-06-30 一种远程过程调用的方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN107479985A CN107479985A (zh) 2017-12-15
CN107479985B true CN107479985B (zh) 2020-01-03

Family

ID=60594848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710523205.1A Active CN107479985B (zh) 2017-06-30 2017-06-30 一种远程过程调用的方法、装置及计算机设备

Country Status (2)

Country Link
CN (1) CN107479985B (zh)
WO (1) WO2019001073A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107479985B (zh) * 2017-06-30 2020-01-03 武汉斗鱼网络科技有限公司 一种远程过程调用的方法、装置及计算机设备
CN110245027A (zh) * 2018-09-21 2019-09-17 浙江大华技术股份有限公司 一种进程间通信的方法和设备
CN114461291A (zh) * 2020-10-22 2022-05-10 北京国双科技有限公司 应用程序组件调用方法、装置、电子设备及存储介质
CN112328410B (zh) * 2020-11-04 2023-08-08 网易(杭州)网络有限公司 远程过程调用的实现方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1635485A (zh) * 2003-12-26 2005-07-06 华为技术有限公司 远程同步调用过程中的超时自适应方法
CN101697139A (zh) * 2009-11-06 2010-04-21 金蝶软件(中国)有限公司 一种远程过程调用方法、装置和注册库

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2835735A4 (en) * 2012-04-06 2016-04-06 Sony Corp INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD, AND COMPUTER PROGRAM
CN103442075B (zh) * 2013-09-04 2017-03-29 珠海金山网络游戏科技有限公司 一种远程调用的方法
US9218169B2 (en) * 2013-11-19 2015-12-22 Google Inc. Callpath finder
CN106161537B (zh) * 2015-04-10 2019-12-13 阿里巴巴集团控股有限公司 远程过程调用的处理方法、装置、系统及电子设备
CN107479985B (zh) * 2017-06-30 2020-01-03 武汉斗鱼网络科技有限公司 一种远程过程调用的方法、装置及计算机设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1635485A (zh) * 2003-12-26 2005-07-06 华为技术有限公司 远程同步调用过程中的超时自适应方法
CN101697139A (zh) * 2009-11-06 2010-04-21 金蝶软件(中国)有限公司 一种远程过程调用方法、装置和注册库

Also Published As

Publication number Publication date
CN107479985A (zh) 2017-12-15
WO2019001073A1 (zh) 2019-01-03

Similar Documents

Publication Publication Date Title
CN107277029B (zh) 一种远程过程调用的方法、装置及计算机设备
CN107094294B (zh) 网络连接方法及装置
CN108959000B (zh) 一种服务器压力测试方法、系统及终端
CN107479985B (zh) 一种远程过程调用的方法、装置及计算机设备
CN110032512B (zh) 一种小程序的调试方法、相关设备及终端
CN104639672B (zh) 进行域名解析的方法和装置
CN105119806B (zh) 消息更新方法及装置
CN106708676B (zh) 接口测试方法及装置
CN107204964B (zh) 一种权限管理的方法、装置和系统
CN106453692B (zh) 一种域名解析方法、装置和系统
CN106874077B (zh) 进程运行方法及装置
CN110555118B (zh) 一种加载图片的方法及装置
CN108881930B (zh) 一种赠送礼物的方法、系统及电子设备
EP3179693B1 (en) Method, apparatus, storage medium and computer program product for establishing a data connection
CN108287706B (zh) 数据处理方法及装置
CN106953898B (zh) 一种获取软件包的方法和装置
CN111078275A (zh) 资源配置方法、装置、存储介质及服务器
CN106162811B (zh) 建立网络连接的方法及装置
CN110321230B (zh) 一种用于处理排行榜信息的系统、方法及计算机设备
CN109067751B (zh) 一种非Root环境下ARP欺骗检测方法、装置及终端
CN108234663B (zh) 一种获取数据的方法、装置及计算机设备
WO2019024275A1 (zh) 一种加载页面的方法、装置及计算机设备
US9442825B2 (en) Method and device for signing program crash
CN108874381B (zh) 一种输出页面视图控制器的方法、装置及电子设备
CN107741895B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230511

Address after: 511400 Building 1, No. 106 Fengze East Road, Nansha District, Guangzhou City, Guangdong Province X1301-F8910 (Cluster Registration) (JM)

Patentee after: Guangzhou Yishengxin Network Technology Co.,Ltd.

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right