服务调用方法及相关设备技术

技术编号:30342455 阅读:18 留言:0更新日期:2021-10-12 23:16
本申请涉及计算机技术领域,提供了一种服务调用方法,应用于RPC框架,包括:在调用方在RPC框架上通过注册信息进行协议注册后,接收调用方发起的调用请求;通过调用方所注册的组包函数对请求内容进行序列化,得到第一二进制流;将第一二进制流发送至服务标识所对应的被调用方;接收被调用方返回的数据包,被调用方调用服务标识所指示的服务根据第一二进制流所指示的参数进行运算后,得到运算结果,并根据运算结果生成数据包;通过调用方所注册的解析函数对数据包进行解析,得到响应结构体;将响应结构体发送至调用方,调用方根据响应结构体获得运算结果。实现了协议与RPC框架之间的解耦,使得该RPC框架可以适用于不同语言平台之间的服务调用。之间的服务调用。之间的服务调用。

【技术实现步骤摘要】
服务调用方法及相关设备


[0001]本申请涉及计算机
,具体而言,涉及一种服务调用方法及相关设备。

技术介绍

[0002]基于RPC(Remote Procedure Call,远程过程调用)协议实现远程服务调用被广泛应用,该种远程服务是通过RPC框架来实现。
[0003]现有技术中,各类RPC框架自成一套,并没有统一的RPC框架协议标准,对不同语言平台、不同框架系统间做RPC调用带来了困难,因此为了实现不同语言平台、不同框架系统在RPC调用过程中的协议兼容,需要二次开发RPC框架中实现服务调用的逻辑,而且二次开发后原RPC框架中的路由、协程等框架特性还存在无法复用的问题。
[0004]由上可知,因RPC框架的协议不统一所导致在不同框架系统之间进行RPC调用时存在兼容性问题是现有技术中亟待解决的技术问题。

技术实现思路

[0005]本申请的实施例提供了一种服务调用方法及相关设备,进而至少在一定程度上解决现有技术中因RPC框架的协议不统一所导致在不同框架系统之间进行RPC调用时存在兼容性问题。
[0006]本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
[0007]根据本申请实施例的一个方面,提供了一种服务调用方法,应用于RPC框架,所述方法包括:
[0008]在调用方在所述RPC框架上通过注册信息进行协议注册后,接收所述调用方发起的调用请求,所述调用请求包括请求内容和服务标识,所述注册信息包括组包函数和解析函数;/>[0009]通过所述调用方所注册的组包函数对所述请求内容进行序列化,得到第一二进制流;
[0010]将所述第一二进制流发送至所述服务标识所对应的被调用方;
[0011]接收所述被调用方返回的数据包,所述被调用方调用所述服务标识所指示的服务根据所述第一二进制流所指示的参数进行运算后,得到运算结果,并根据所述运算结果生成所述数据包;
[0012]通过所述调用方所注册的解析函数对所述数据包进行解析,得到响应结构体;
[0013]将所述响应结构体发送至所述调用方,所述调用方根据所述响应结构体获得所述运算结果。
[0014]根据本申请实施例的另一个方面,提供了一种服务调用装置,应用于RPC框架,所述装置包括:
[0015]调用请求接收模块,用于在调用方在所述RPC框架上通过注册信息进行协议注册
后,接收所述调用方发起的调用请求,所述调用请求包括请求内容和服务标识,所述注册信息包括组包函数和解析函数;
[0016]组包函数调用模块,用于通过所述调用方所注册的组包函数对所述请求内容进行序列化,得到第一二进制流;
[0017]二进制流发送模块,用于将所述第一二进制流发送至所述服务标识所对应的被调用方;
[0018]数据包接收模块,用于接收所述被调用方返回的数据包,所述被调用方调用所述服务标识所指示的服务根据所述第一二进制流所指示的参数进行运算后,得到运算结果,并根据所述运算结果生成所述数据包;
[0019]解析函数调用模块,用于调用所述调用方所注册的解析函数对所述数据包进行反序列化,得到响应结构体;
[0020]响应结构体发送模块,用于将所述响应结构体发送至所述调用方,所述调用方根据所述响应结构体获得所述运算结果。
[0021]根据本申请实施例的另一个方面,提供了一种电子设备,包括:
[0022]处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现上述中的方法。
[0023]根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时,实现上述中的方法。
[0024]在本公开的方案中,由于需要借助于调用方在RPC框架上所注册的注册信息中的组包函数进行序列化和利用解析函数来进行解析,而框架自身并不需要理解调用请求中的请求内容和被调用方所传送的数据包,框架自身仅进行二进制数据流的处理,从而,实现了协议与框架自身的解耦,调用方可以根据自身的协议需要在RPC框架中进行协议定义,以借助于RPC框架实现服务调用。
[0025]由于实现了协议与RPC框架自身的解耦,因此,本公开的RPC框架可以适用于不同语言平台之间的服务调用,有效解决了现有技术在不同语言平台、不同框架系统之间进行远程服务调用时,因协议不兼容需要对RPC框架进行二次开发的问题,从而使得本公开的RPC框架适用范围广。
[0026]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
[0027]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0028]图1是根据一实施例示出的服务调用方法的流程图;
[0029]图2是图1对应实施例的步骤150在一实施例中的流程图;
[0030]图3是根据另一实施例示出的服务调用方法的流程图;
[0031]图4是图2对应实施例的步骤230在一实施例中的流程图;
[0032]图5是图1对应实施例的步骤130之前步骤在一实施例中的流程图;
[0033]图6是根据另一实施例示出的服务调用方法的流程图;
[0034]图7是根据一实施例示出的RPC框架的框图;
[0035]图8是根据一具体实施例示出的在RPC框架中的服务调用方法的流程图;
[0036]图9是根据一实施例示出的一种服务调用装置的框图;
[0037]图10示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
[0038]现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
[0039]此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
[0040]附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[00本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种服务调用方法,应用于RPC框架,其特征在于,所述方法包括:在调用方在所述RPC框架上通过注册信息进行协议注册后,接收所述调用方发起的调用请求,所述调用请求包括请求内容和服务标识,所述注册信息包括组包函数和解析函数;通过所述调用方所注册的组包函数对所述请求内容进行序列化,得到第一二进制流;将所述第一二进制流发送至所述服务标识所对应的被调用方;接收所述被调用方返回的数据包,所述被调用方调用所述服务标识所指示的服务根据所述第一二进制流所指示的参数进行运算后,得到运算结果,并根据所述运算结果生成所述数据包;通过所述调用方所注册的解析函数对所述数据包进行解析,得到响应结构体;将所述响应结构体发送至所述调用方,所述调用方根据所述响应结构体获得所述运算结果。2.根据权利要求1所述的方法,其特征在于,所述解析函数包括包头解析函数和包体解析函数,所述通过所述调用方所注册的解析函数对所述数据包进行解析,获得响应结构体,包括:调用所述包头解析函数对所述数据包中的包头进行解析,获得包头解析结果;调用所述包体解析函数根据所述包头解析结果对所述数据包中的包体进行解析,获得所述响应结构体。3.根据权利要求2所述的方法,其特征在于,所述注册信息还包括读包长度函数,所述方法还包括:调用所述读包长度函数,获得第一长度参数;在接收所述被调用方所发送数据包的过程中,若所接收到数据包的大小达到所述第一长度参数所指示大小,则执行所述调用所述包头解析函数对所述数据包中的包头进行解析,获得包头解析结果的步骤。4.根据权利要求2或3所述的方法,其特征在于,所述包头解析结果包括第二长度参数,所述调用所述包体解析函数根据所述包头解析结果对所述数据包中的包体进行解析,获得所述响应结构体,包括:根据所述第二长度参数判断所接收到数据包的大小是否达到所述第二长度参数所指示的大小;若达到,则调用所述包体解析函数对所接收到数据包中的包体进行解析,获得所述响应结构体。5.根据权利要求1所述的方法,其特征在于,所述将所述第一二进制流发送至所述服务标识所对应的被调用方之前,所述方法还包括:获取所述调用方对应的路由指示信...

【专利技术属性】
技术研发人员:吕阳阳曾楚伟李斌
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1