一种基于UDP通信的远程调用方法和装置与流程

文档序号:14253116阅读:431来源:国知局
一种基于UDP通信的远程调用方法和装置与流程

本发明涉及分布式系统技术领域,特别是涉及一种基于udp通信的远程调用方法和装置。



背景技术:

远程过程调用(remoteprocedurecall,rpc)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的调用方式。rpc采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

现有的rpc系统处理流程如图1所示,在客户进程中,应用层调用rpc接口的api发起请求;rpc接口调用系统网络接口将请求发送出去;rpc请求通过网络数据包从客户端发到服务端。其中客户端和服务端可以不在同一个物理服务器上。rpc请求从服务端的系统层传递到用户层的rpc接口;rpc接口解析rpc请求,找到对应的服务层;服务层执行请求,并将执行结果发回给rpc接口;rpc接口调用系统网络api将执行结果发送出去;执行结果通过网络数据包从服务端发到客户端;执行结果从客户端的系统层传递到用户层的rpc接口;rpc接口将执行结果转给对应的应用层。

现有的主流rpc框架都是基于tcp协议,虽然有适用面广、功能强大的优点,但是也存在着代码量多、流程复杂、对系统开销较大的缺点,对于只需要简单功能的轻量级应用程序来说过于庞大,所以需要一个简单快速的实现方法。

可见,如何在满足轻量级应用程序的需求下,减轻系统负担,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种基于udp通信的远程调用方法和装置,可以在满足轻量级应用程序的需求下,减轻系统负担。

为解决上述技术问题,本发明实施例提供一种基于udp通信的远程调用方法,应用于客户端,包括:

应用进程向注册进程发送查询请求,并接收所述注册进程发送的反馈信息;其中,所述反馈信息中包含有提供rpc服务的各个服务进程的链接信息;

利用负载均衡策略,从各个所述服务进程中选取出一个目标服务进程;

依据所述目标服务进程的链接信息,向所述目标服务进程发送rpc服务请求,并接收所述目标服务进程发送的响应信息。

可选的,还包括:

判断预设时间内是否接收到所述目标服务进程发送的响应信息;

若否,则重新向所述注册进程发送所述查询请求。

可选的,还包括:

若所述应用进程在预设时间内未接收到所述目标服务进程发送的响应信息,则进行告警提示。

本发明实施例还提供了一种基于udp通信的远程调用装置,应用于客户端,所述装置包括发送单元、接收单元和选取单元;

所述发送单元,用于向注册进程发送查询请求;

所述接收单元,用于接收所述注册进程发送的反馈信息;其中,所述反馈信息中包含有提供rpc服务的各个服务进程的链接信息;

所述选取单元,用于利用负载均衡策略,从各个所述服务进程中选取出一个目标服务进程;

所述发送单元还用于依据所述目标服务进程的链接信息,向所述目标服务进程发送rpc服务请求;

所述接收单元还用于接收所述目标服务进程发送的响应信息。

可选的,还包括判断单元;

所述判断单元,用于判断预设时间内是否接收到所述目标服务进程发送的响应信息;

若否,则触发所述发送单元重新向所述注册进程发送所述查询请求。

可选的,还包括提示单元;

若所述应用进程在预设时间内未接收到所述目标服务进程发送的响应信息,则触发所述提示单元,进行告警提示。

本发明实施例还提供了一种基于udp通信的远程调用方法,应用于服务端,包括:

服务进程向注册进程发送注册信息;

接收应用进程发送的rpc服务请求;

依据所述rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果;

向所述应用进程发送携带有所述执行结果的响应信息。

可选的,还包括:

所述服务进程按照预设的周期时间,向所述注册进程发送验证信息。

本发明实施例还提供了一种基于udp通信的远程调用装置,应用于服务端,所述装置包括发送单元、接收单元和执行单元;

所述发送单元,用于向注册进程发送注册信息;

所述接收单元,用于接收应用进程发送的rpc服务请求;

所述执行单元,用于依据所述rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果;

所述发送单元还用于向所述应用进程发送携带有所述执行结果的响应信息。

可选的,还包括验证单元;

所述验证单元,用于按照预设的周期时间,向所述注册进程发送验证信息。

由上述技术方案可以看出,服务端的各个服务进程向注册进程发送注册信息;客户端的应用进程向注册进程发送查询请求,并接收注册进程发送的反馈信息;该反馈信息中包含有提供rpc服务的各个服务进程的链接信息;利用负载均衡策略,从各个服务进程中选取出一个目标服务进程,并依据目标服务进程的链接信息,向该目标服务进程发送rpc服务请求;服务端的目标服务进程依据rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果;并向应用进程发送携带有执行结果的响应信息。该技术方案采用对系统开销较小的udp协议,设计了简单快捷的处理流程,服务进程向注册进程注册服务的方式,应用进程从注册进程获取服务进程的相关信息,然后直接和服务进程进行rpc通信。既能满足轻量级应用程序的需求,又能减轻系统负担,特别适用于功能简单、网络情况良好的应用场景。

附图说明

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

图1为现有技术中提供的一种rpc系统处理流程的示意图;

图2为本发明实施例提供的一种基于udp通信的远程调用方法的信令图;

图3为本发明实施例提供的一种客户端基于udp通信的远程调用装置的结构示意图;

图4为本发明实施例提供的一种服务端基于udp通信的远程调用装置的结构示意图。

具体实施方式

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

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种基于udp通信的远程调用方法。图2为本发明实施例提供的一种基于udp通信的远程调用方法的信令图,该方法包括:

s201:服务端的服务进程向注册进程发送注册信息。

服务进程是提供rpc服务的应用程序,在服务端包括有至少一个服务进程。这些服务进程可以位于同一个服务器上,也可以位于不同的服务器上。

每个服务进程有其对应的注册信息,该注册信息中包含有服务进程能够提供的rpc服务信息以及相应的udp端口号。

其中,rpc服务信息可以包括服务名、服务说明等内容。服务名是一个rpc服务的唯一标识,一个服务进程可以提供多个不同的rpc服务,相应的,一个服务进程中包含的服务名可以有多个。服务说明为一个字符串,描述服务的功能、输入参数、输出参数等内容。

rpc服务信息的结构定义如下,

服务进程在向注册进程发送相应的注册信息时,注册进程可以获知服务进程的ip地址。

注册进程用于保存各服务进程的相关信息,例如,每个服务进程能够提供的rpc服务、服务进程的ip地址、udp端口号等内容,在整个系统中可以只设置一个注册进程。在实际应用中,为了便于管理和查询,注册进程可以将获取的注册信息以列表的形式存储。

s202:客户端的应用进程向注册进程发送查询请求,并接收所述注册进程发送的反馈信息。

应用进程是需要使用rpc服务的应用程序。

当应用进程需要调用某个或某些rpc服务时,可以向注册进程发送查询请求,服务名作为rpc服务的唯一标识,因此,在该查询请求中可以携带服务名。

注册进程可以依据查询请求中携带的服务名,查找当前可以提供相应rpc服务的服务进程,并向应用进程发送反馈信息。

其中,反馈信息中可以包含有提供rpc服务的各个服务进程的链接信息,例如,服务进程的ip地址和udp端口号等。

反馈信息的结构定义如下,

s203:利用负载均衡策略,从各个所述服务进程中选取出一个目标服务进程。

每个服务进程可以提供多个不同的rpc服务,因此,针对同一项rpc服务而言,可以提供该项rpc服务的服务进程可能有多个。也即应用进程接收的反馈信息中可能包含有多个服务进程的相关信息。

应用进程可以依据负载均衡策略,选取出一个合适的服务进程作为目标服务进程,利用该目标服务进程提供相应的rpc服务。

s204:依据所述目标服务进程的链接信息,向所述目标服务进程发送rpc服务请求。

链接信息可以包含服务进程的ip地址和udp端口号。应用进程依据该链接信息,便可以向目标服务进程发送rpc服务请求。

在本发明实施例中,基于udp通信实现远程调用,故此,可以将rpc服务请求以udp数据包的形式发送到目标服务进程所在ip地址的udp端口上。

rpc服务请求中可以包含请求号、服务名、请求参数等信息。

rpc服务请求的结构定义如下,

为了可以一次发送多个rpc服务请求,在rpc服务请求中增加了参数reqid,该参数在每个请求中都是不同了,唯一标识一个rpc服务请求消息。参数servicename是请求的服务名。参数textarg和binarg是请求参数,格式是服务自定义的。为了方便使用,textarg使用扩展性好的json格式,保存可以用字符串表达的参数,binarg保存不能用字符串表达的参数,这样两种类型的参数已经可以覆盖业务需求,并且良好的扩展性,便于后期维护。

s205:目标服务进程接收应用进程发送的rpc服务请求,并依据所述rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果。

目标服务进程提供的rpc服务可能有多个,依据rpc服务请求中携带的服务名,可以获知需要执行哪一项rpc服务,从而调用相应的业务流程。请求参数可以看做是该业务流程的输入参数,经过业务流程的处理,可以得到相应的执行结果。

s206:目标服务进程向所述应用进程发送携带有所述执行结果的响应信息。

业务进程可以一次发送多个rpc服务请求,为了便于区分每个rpc服务请求的执行结果,在响应信息中可以携带请求号和服务名,其中,该请求号和rpc服务请求中的请求号相同;该服务名是和rpc服务请求中的服务名相同。

响应信息的结构定义如下,

响应消息中的参数reqid、servicename和rpc服务请求中的参数是一致的,textresult保存可以用字符串表达的结果,binresult保存不能用字符串表达的结果。

s207:应用进程接收所述目标服务进程发送的响应信息。

如果响应信息的数据量很大,可以分为多个udp包发送,在消息的包头中可以用消息的分片序号来标识每个数据包,在客户端的rpc接口层中进行重组后提交给上层。

由上述技术方案可以看出,服务端的各个服务进程向注册进程发送注册信息;客户端的应用进程向注册进程发送查询请求,并接收注册进程发送的反馈信息;该反馈信息中包含有提供rpc服务的各个服务进程的链接信息;利用负载均衡策略,从各个服务进程中选取出一个目标服务进程,并依据目标服务进程的链接信息,向该目标服务进程发送rpc服务请求;服务端的目标服务进程依据rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果;并向应用进程发送携带有执行结果的响应信息。该技术方案采用对系统开销较小的udp协议,设计了简单快捷的处理流程,服务进程向注册进程注册服务的方式,应用进程从注册进程获取服务进程的相关信息,然后直接和服务进程进行rpc通信。既能满足轻量级应用程序的需求,又能减轻系统负担,特别适用于功能简单、网络情况良好的应用场景。

在实际应用中,由于网络因素或目标服务进程退出整个业务流程或者是注册进程中信息更新不及时等原因,可能会出现应用进程无法接收到响应信息的情况,故此,应用进程可以判断预设时间内是否接收到所述目标服务进程发送的响应信息;若否,则重新向所述注册进程发送所述查询请求。

除此之外,当应用进程在预设时间内未接收到所述目标服务进程发送的响应信息,也可以进行告警提示,以便于及时提醒客户端的用户。

为了保证注册信息中存储的服务进程的相关信息的有效性,服务进程按照预设的周期时间,向所述注册进程发送验证信息。

其中,周期时间的取值可以依据实际需求设定,在此不做限定。

验证信息中可以包含有服务进程的进程号、udp端口号和rpc服务列表。

验证信息的结构定义如下,

其中,rpc服务列表中包含有服务进程可以提供的rpc服务。

注册进程在预设的时间段内没有收到服务进程发送的验证信息,可以认为服务进程已经退出,则可以将之前记录的该服务进程的相关信息删除,以保证注册进程中信息的有效性。

其中,该时间段的取值可以依据周期时间进行设定,一般情况下,可以将该时间段的取值设置的稍微大于周期时间的取值。

图3为本发明实施例提供的一种基于udp通信的远程调用装置的结构示意图,所述装置包括发送单元31、接收单元32和选取单元33;

所述发送单元31,用于向注册进程发送查询请求;

所述接收单元32,用于接收所述注册进程发送的反馈信息;其中,所述反馈信息中包含有提供rpc服务的各个服务进程的链接信息;

所述选取单元33,用于利用负载均衡策略,从各个所述服务进程中选取出一个目标服务进程;

所述发送单元31还用于依据所述目标服务进程的链接信息,向所述目标服务进程发送rpc服务请求;

所述接收单元32还用于接收所述目标服务进程发送的响应信息。

可选的,还包括判断单元;

所述判断单元,用于判断预设时间内是否接收到所述目标服务进程发送的响应信息;

若否,则触发所述发送单元重新向所述注册进程发送所述查询请求。

可选的,还包括提示单元;

若所述应用进程在预设时间内未接收到所述目标服务进程发送的响应信息,则触发所述提示单元,进行告警提示。

图3所对应实施例中特征的说明可以参见图2所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,客户端的发送单元向注册进程发送查询请求,接收单元接收注册进程发送的反馈信息;该反馈信息中包含有提供rpc服务的各个服务进程的链接信息;选取单元利用负载均衡策略,从各个服务进程中选取出一个目标服务进程,并依据目标服务进程的链接信息,向该目标服务进程发送rpc服务请求;接收单元接收目标服务进程发送的携带有执行结果的响应信息。该技术方案采用对系统开销较小的udp协议,设计了简单快捷的处理流程,服务进程向注册进程注册服务的方式,应用进程从注册进程获取服务进程的相关信息,然后直接和服务进程进行rpc通信。既能满足轻量级应用程序的需求,又能减轻系统负担,特别适用于功能简单、网络情况良好的应用场景。

图4为本发明实施例提供的一种基于udp通信的远程调用装置的结构示意图,所述装置包括发送单元41、接收单元42和执行单元43;

所述发送单元41,用于向注册进程发送注册信息;

所述接收单元42,用于接收应用进程发送的rpc服务请求;

所述执行单元43,用于依据所述rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果;

所述发送单元41还用于向所述应用进程发送携带有所述执行结果的响应信息。

可选的,还包括验证单元;

所述验证单元,用于按照预设的周期时间,向所述注册进程发送验证信息。

图4所对应实施例中特征的说明可以参见图2所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,服务端的发送单元向注册进程发送各个服务进程的注册信息;服务端的接收单元接收应用进程发送的rpc服务请求;服务端的执行单元依据rpc服务请求中携带的服务名和请求参数,执行对应的业务流程,得到执行结果;并向应用进程发送携带有执行结果的响应信息。该技术方案采用对系统开销较小的udp协议,设计了简单快捷的处理流程,服务进程向注册进程注册服务的方式,应用进程从注册进程获取服务进程的相关信息,然后直接和服务进程进行rpc通信。既能满足轻量级应用程序的需求,又能减轻系统负担,特别适用于功能简单、网络情况良好的应用场景。

以上对本发明实施例所提供的一种基于udp通信的远程调用方法和装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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