一种RPC通讯方法、系统及装置与流程

文档序号:14879891发布日期:2018-07-07 09:29阅读:235来源:国知局

本发明涉及计算机技术领域,更具体地说,涉及一种rpc通讯方法、系统及装置。



背景技术:

lua是一种设计优雅,使用简单,性能优异的脚本语言,目前越来越多的高性能后台应用都采用c+lua的设计方案。前端和后台的rpc(remoteprocedurecall,远程过程调用)协议调用采用google开源的googleprotocolbuffer协议。但googleprotocolbuffer是google设计的一种通用的rpc通讯方案,并没有为提供用于lua的api,需要在其之上进行封装(luabinding)。

前端与后端的通讯过程中通常为前端到luabinding,再到googleprotocolbuffer协议,再到luabinding才可以与后端建立通讯。因此通讯过程十分繁琐。此外,luabinding的设计复杂度较高,容易编码错误,因此造成前后端的rpc通讯十分不方便。

因此,如何方便地建立rpc通讯,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种rpc通讯方法、系统及装置,以方便地建立rpc通讯。

为实现上述目的,本发明实施例提供了如下技术方案:

一种rpc通讯方法,包括:

利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到编码请求信息;

将所述编码请求信息传输至被调用装置;

获取被调用装置发送的编码结果信息;所述编码结果信息为所述调用装置利用第一lua解码接口调用lua通讯协议对所述编码请求信息进行解码得到所述rpc请求后,根据所述rpc请求返回利用第二lua编码接口调用lua通讯协议进行编码得到的编码结果信息;

利用第二lua解码接口调用lua通讯协议对所述编码结果信息进行解码得到请求结果。

其中,所述通讯协议中每个字段包括字段值与唯一的名字。

其中,所述利用第二lua解码接口调用lua通讯协议对所述编码结果信息进行解码得到请求结果,包括:

对所述编码结果信息中的每个字段的名字进行识别;

利用第二lua解码接口调用所述lua通讯协议以对识别到名字的每个字段进行解码得到请求结果。

其中,所述通讯协议中的数字编码利用小端格式对齐。

其中,所述通讯协议包括预设个数的以结构体为单元的包;其中,每个包包括字段和数据块,每个数据块字节数为4的倍数。

本发明还提供了一种rpc通讯系统,设置于调用装置,包括:

第一编码模块,用于利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到编码请求信息;

第一传输模块,用于将所述编码请求信息传输至被调用装置;

第一获取模块,用于获取被调用装置发送的编码结果信息;所述编码结果信息为所述调用装置利用第一lua解码接口调用lua通讯协议对所述编码请求信息进行解码得到所述rpc请求后,根据所述rpc请求返回利用第二lua编码接口调用lua通讯协议进行编码得到的编码结果信息;

第一解码模块,用于利用第二lua解码接口调用lua通讯协议对所述编码结果信息进行解码得到请求结果。

本发明还提供了一种调用装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如所述rpc通讯方法的步骤。

本发明还提供了一种rpc通讯方法,包括:

利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到rpc请求;其中,所述编码请求信息为调用装置利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到的编码请求信息;

根据所述rpc请求在本地获取结果信息;

利用第二lua编码接口调用lua通讯协议对所述结果信息进行编码得到编码结果信息;

将所述编码结果信息发送至调用装置,以使所述调用装置利用第二解码接口调用lua通讯协议得到所述结果信息。

其中,利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到rpc请求,包括:

对所述编码请求信息中的每个字段的名字进行识别;

利用第一lua解码接口调用lua通讯协议对识别到名字的每个字段进行解码得到请求结果。

本发明还提供了一种rpc通讯系统,设置于被调用装置,包括:

第二解码模块,用于利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到rpc请求;其中,所述编码请求信息为调用装置利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到的编码请求信息;

第二获取模块,用于根据所述rpc请求在本地获取结果信息;

第二编码模块,用于利用第二lua编码接口调用lua通讯协议对所述结果信息进行编码得到编码结果信息;

第二传输模块,用于将所述编码结果信息发送至调用装置,以使所述调用装置利用第二解码接口调用lua通讯协议得到所述结果信息。

本发明还提供了一种被调用装置,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求8或9所述rpc通讯方法的步骤。

本发明还提供了一种rpc通讯系统,包括:

如设置于调用装置的rpc通讯系统和如设置于被调用装置的rpc通讯系统。

通过以上方案可知,本发明实施例提供的一种rpc通讯方法,包括:利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到编码请求信息;将所述编码请求信息传输至被调用装置;获取被调用装置发送的编码结果信息;所述编码结果信息为所述调用装置利用第一lua解码接口调用lua通讯协议对所述编码请求信息进行解码得到所述rpc请求后,根据所述rpc请求返回利用第二lua编码接口调用lua通讯协议进行编码得到的编码结果信息;利用第二lua解码接口调用lua通讯协议对所述编码结果信息进行解码得到请求结果。

由此可见,本发明提供的一种rpc通讯方法,lua通讯协议可以直接通过lua编码接口直接调用,从而建立调用装置与被调用装置之间的通讯,而不需要再利用luabinding,从而减少了通讯的流程,也避免了繁琐的编码,也是lua通讯协议运行效率更高,更方便时调用方与被调用方建立rpc连接。本发明实施例还提供了一种rpc通讯系统、调用装置、被调用装置同样可以实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种rpc通讯方法流程图;

图2为本发明实施例公开的一种rpc通讯系统结构示意图;

图3为本发明实施例公开的一种rpc通讯方法流程图;

图4为本发明实施例公开的一种rpc通讯系统结构示意图;

图5为本发明实施例公开的一种具体的rpc通讯方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种rpc通讯方法,以方便地建立rpc通讯。

参见图1,本发明实施例提供的一种rpc通讯方法,具体包括:

s101,利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到编码请求信息。

在本方案中,调用方和被调用方可以直接通过接口调用协议实现通讯,不需要使用单独的luabinding。其中调用装置和被调用装置可以分别是前端和后端,也可以分别是后端和需要被调用的后端。

在本方案中提供lua友好的rpc接口设计,包括:

调用方用于请求的第一lua编码接口,sproto:request_encode(protoname,tbl);

被调用方用于响应的第二lua解码接口,sproto:response_encode(protoname,tbl);

调用方用于请求的第一lua解码接口,sproto:request_decode(protoname,blob[,sz]);

被调用方用于响应的第二lua解码接口,sproto:response_decode(protoname,blob[,sz])。

具体地,调用装置利用第一lua编码接口调用lua协议,对本次的请求内容进行编码,得到编码请求信息。

s102,将所述编码请求信息传输至被调用装置。

具体地,将编码请求信息进行传输。

s103,获取被调用装置发送的编码结果信息;所述编码结果信息为所述调用装置利用第一lua解码接口调用lua通讯协议对所述编码请求信息进行解码得到所述rpc请求后,根据所述rpc请求返回利用第二lua编码接口调用lua通讯协议进行编码得到的编码结果信息。

具体地,调用装置获取被调用方发送的编码结果信息。

需要说明的是,被调用方在获取到编码请求信息后,利用第一lua解码接口对编码请求信息进行解码得到调用方的prc请求信息,在本地获取与该prc请求信息对应的结果信息,也就是调用方想要调用的内容。将结果信息利用第二lua编码接口调用lua通讯协议进行编码,将编码后的编码结果信息传输至调用方。

s104,利用第二lua解码接口调用lua通讯协议对所述编码结果信息进行解码得到请求结果。

具体地,调用装置利用第二解码接口调用lua通讯协议对上述的编码结果信息进行解码,得到请求结果,从而完成本次通讯。

在本方案中,lua通讯协议可以命名为lprotocol,该协议的编码方案可以包括以下内容:

数字编码用小端格式对齐;

打包的基本单元为结构体,每个包有字段和数据块两部分构成,每个数据块字节数都是4的倍数,其中,数据块中的字节数如果不是4的倍数,则以0补齐至4的倍数;

每个字段由tag和字段值两个word构成;其中tag是字段的唯一的名字,用于标识每个字段;

根据tag可以查询字段类型,解码过程如果遇到不能识别的tag则自动跳过,以提高兼容性;需要说明的是,在利用解码接口调用lua通讯协议进行解码时,首先要对待解码的内容中的字段进行识别,如对编码请求信息、编码结果信息进行识别,识别对字段进行解码,如果有不能够识别名字的字段,也就是不能识别的tag,则自动跳过,识别下一个字段并进行解码;

数据类型不在通讯中传输,需要定义在协议描述数据中。如果数据是对数据块的引用,数据类型是:

integer:数据块长度为4,数据内容是32bit的有符号整数;

id:数据块长度为8,内容是id;

string:数据块长度是string字节数,内容是字符串;

usertype:自定义类型结构;

array:对于整数数组,每4个字节是一个整数。对于布尔数组,每个字节表示8个布尔量。排列方式由低到高。对于string和struct,则按照长度加内容的方式顺序嵌入。

由此可见,本发明实施例提供的一种rpc通讯方法,lua通讯协议可以直接通过lua编码接口直接调用,从而建立调用装置与被调用装置之间的通讯,而不需要再利用luabinding,从而减少了通讯的流程,也避免了繁琐的编码,也是lua通讯协议运行效率更高,更方便时调用方与被调用方建立rpc连接。

下面对本发明实施例提供的一种rpc通讯系统进行介绍,下文描述的一种rpc通讯系统与上文描述的一种rpc通讯方法可以相互参照。

参见图2,本发明实施例提供的一种rpc通讯系统,具体包括:

第一编码模块201,用于利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到编码请求信息。

在本方案中,调用方和被调用方可以直接通过接口调用协议实现通讯,不需要使用单独的luabinding。其中调用装置和被调用装置可以分别是前端和后端,也可以分别是后端和需要被调用的后端。

在本方案中提供lua友好的rpc接口设计,包括:

调用方用于请求的第一lua编码接口,sproto:request_encode(protoname,tbl);被调用方用于响应的第二lua解码接口,sproto:response_encode(protoname,tbl);调用方用于请求的第一lua解码接口,sproto:request_decode(protoname,blob[,sz]);被调用方用于响应的第二lua解码接口,sproto:response_decode(protoname,blob[,sz])。

具体地,第一编码模块201利用第一lua编码接口调用lua协议,对本次的请求内容进行编码,得到编码请求信息。

第一传输模块202,用于将所述编码请求信息传输至被调用装置。

具体地,第一传输模块202将编码请求信息进行传输。

第一获取模块203,用于获取被调用装置发送的编码结果信息;所述编码结果信息为所述调用装置利用第一lua解码接口调用lua通讯协议对所述编码请求信息进行解码得到所述rpc请求后,根据所述rpc请求返回利用第二lua编码接口调用lua通讯协议进行编码得到的编码结果信息。

具体地,调用装置的第一获取模块203获取被调用方发送的编码结果信息。

需要说明的是,被调用方在获取到编码请求信息后,利用第一lua解码接口对编码请求信息进行解码得到调用方的prc请求信息,在本地获取与该prc请求信息对应的结果信息,也就是调用方想要调用的内容。将结果信息利用第二lua编码接口调用lua通讯协议进行编码,将编码后的编码结果信息传输至调用方。

第一解码模块204,用于利用第二lua解码接口调用lua通讯协议对所述编码结果信息进行解码得到请求结果。

具体地,调用装置的第一解码模块204利用第二解码接口调用lua通讯协议对上述的编码结果信息进行解码,得到请求结果,从而完成本次通讯。

由此可见,本发明实施例提供的一种rpc通讯系统,lua通讯协议可以直接通过lua编码接口直接调用,从而建立调用装置与被调用装置之间的通讯,而不需要再利用luabinding,从而减少了通讯的流程,也避免了繁琐的编码,也是lua通讯协议运行效率更高,更方便时调用方与被调用方建立rpc连接。

下面对本发明实施例提供的一种调用装置进行介绍,下文描述的一种调用装置与上文描述的一种rpc通讯方法可以相互参照。

本发明实施例提供的一种调用装置具体包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述实施例所述rpc通讯方法的步骤。

下面对本发明实施例提供的一种rpc通讯方法进行介绍,下文描述的一种rpc通讯方法应用于被调用方,与上述实施例提供的一种rpc通讯方法可以相互参照。

参见图3,本发明实施例提供的一种rpc通讯方法,具体包括:

s301,利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到rpc请求;其中,所述编码请求信息为调用装置利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到的编码请求信息。

具体的,被调用方,例如后台,利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到调用方的rpc请求。

s302,根据所述rpc请求在本地获取结果信息。

具体地,根据上述解码得到的rpc请求在本地获取调用方请求的内容,将该内容作为结果信息。

s303,利用第二lua编码接口调用lua通讯协议对所述结果信息进行编码得到编码结果信息。

具体地,被调用装置利用第二lua编码接口调用lua通讯协议对结果信息进行编码得到编码结果信息。

s304,将所述编码结果信息发送至调用装置,以使所述调用装置利用第二解码接口调用lua通讯协议得到所述结果信息。

被调用装置在对结果信息进行编码后,将编码结果信息传输至调用装置,调用装置即可通过第二解码接口调用lua通讯协议对该编码结果信息进行解码得到请求的结果。

由此可见,本发明实施例提供的一种rpc通讯方法,lua通讯协议可以直接通过lua编码接口直接调用,从而建立调用装置与被调用装置之间的通讯,而不需要再利用luabinding,从而减少了通讯的流程,也避免了繁琐的编码,也是lua通讯协议运行效率更高,更方便时调用方与被调用方建立rpc连接。

下面对本发明实施例提供的一种rpc通讯系统进行介绍,下文描述的一种rpc通讯系统设置于被调用装置,与上述应用于被调用装置的rpc通讯方法可以相互参照。

参见图4,本发明实施例提供的一种rpc通讯系统,具体包括:

第二解码模块401,用于利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到rpc请求;其中,所述编码请求信息为调用装置利用第一lua编码接口调用lua通讯协议对rpc请求进行编码得到的编码请求信息。

具体的,被调用方,例如后台,第二解码模块401利用第一lua解码接口调用lua通讯协议对编码请求信息进行解码,得到调用方的rpc请求。

第二获取模块402,用于根据所述rpc请求在本地获取结果信息。

具体地,第二获取模块402根据上述解码得到的rpc请求在本地获取调用方请求的内容,将该内容作为结果信息。

第二编码模块403,用于利用第二lua编码接口调用lua通讯协议对所述结果信息进行编码得到编码结果信息。

具体地,被调用装置的第二编码模块403利用第二lua编码接口调用lua通讯协议对结果信息进行编码得到编码结果信息。

第二传输模块404,用于将所述编码结果信息发送至调用装置,以使所述调用装置利用第二解码接口调用lua通讯协议得到所述结果信息。

被调用装置在对结果信息进行编码后,第二传输模块404将编码结果信息传输至调用装置,调用装置即可通过第二解码接口调用lua通讯协议对该编码结果信息进行解码得到请求的结果。

由此可见,本发明实施例提供的一种rpc通讯系统,lua通讯协议可以直接通过lua编码接口直接调用,从而建立调用装置与被调用装置之间的通讯,而不需要再利用luabinding,从而减少了通讯的流程,也避免了繁琐的编码,也是lua通讯协议运行效率更高,更方便时调用方与被调用方建立rpc连接。

下面对本发明实施例提供的一种被调用装置进行介绍,下文描述的一种被调用装置与上文描述的一种应用于被调用装置的rpc通讯方法可以相互参照。

本发明实施例提供的一种rpc通讯装置,具体包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述实施例所述rpc通讯方法的步骤。

下面对本发明实施例提供的一种具体的rpc通讯方法进行介绍,下文描述的一种rpc通讯方法与上文描述的实施例可以相互参照。

具体地,参见图5,前端业务开始,发出rpc请求后得到来自后台服务的相应,业务结束。其中发出请求到得到相应的过程是与后台通讯的过程,具体为利用sproto:request_encode对请求进行编码,将编码后的请求作为消息进行传输,后台利用sproto:request_decode对该消息进行解码得到前端要请求的内容,并根据该内容向前端返回结果,结果首先利用sproto:response_encode进行编码,然后将编码后的内容传输到前端,由前端利用sproto:response_decode进行解码得到请求的结果。上述四个接口适用于调用本方案中的一种针对lua的通讯协议。其中,通讯协议中命名采用c语言规则:由字母、数字、下划线构成,大小写敏感,但不能以数字开头;“.”开头表示自定义类型,可以嵌套,但不可以是关键字,如:integer,string,boolean;类型定义中含有若干字段,每个字段都有唯一的tag,tag作为字段唯一的名字,tag是16bit的非负整数,不必连续,但必须唯一;类型前面标注符号*代表数组;注释以#号开头。例如:

下面对本发明实施例提供的一种rpc通讯系统进行介绍,下文描述的一种rpc通讯系统与上文描述的实施例可以相互参照。

本发明实施例提供的一种rpc通讯系统具体包括:

如上述实施例描述的一种设置于调用装置的rpc系统与一种设置于被调用装置的rpc系统。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1