集群远程过程调用方法及系统的制作方法

文档序号:8285370阅读:272来源:国知局
集群远程过程调用方法及系统的制作方法
【技术领域】
[0001]本发明属于集群通信技术领域,尤其涉及一种集群远程过程调用方法及系统。
【背景技术】
[0002]随着互联网应用的快速发展,后台服务端集群也变得越来越大,往往一个业务调用需要由后台服务端集群中多个服务器协同完成(多个服务器间的协同一般称为RPC),因此服务器间的服务通告和查询也变得非常重要。RPC(Remote Procedure CallProtocol) 一一远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
[0003]目前主要的集群RPC通信技术有两大类,一类为静态配置方式,即在集群的每一台服务器中配置集群中所有服务器提供的服务情况,这种方式实现比较简单,但是存在服务器故障或者增加新服务器后无法实时通知到其他服务器,因此比较适合服务规模固定的应用,对于集群规模快速变化的情况无法适应。
[0004]另外一类为动态注册方式,即集群中选取I个服务器为注册服务器,集群中所有的服务器向这个注册服务器注册自己提供的服务类型及RPC调用地址信息,当有服务器需要访问某个服务时,需要向注册服务器查询提供该服务的RPC调用地址信息,然后完成RPC调用,这种方式存在的问题是注册服务器存在单点故障,即注册服务器故障后,整个集群RPC将无法使用。

【发明内容】

[0005]本发明的发明目的是:为了解决上述现有技术中集群中注册服务器存在单点故障而造成整个集群RPC无法使用的问题,本发明提出了一种集群远程过程调用方法及系统。
[0006]本发明的技术方案是:一种集群远程过程调用方法,包括以下步骤:
[0007]A、启动集群内的所有注册服务,将注册服务加入注册服务组播组,并监听组播报文;
[0008]B、按照预设周期向注册服务组播组发送来自服务端的注册请求报文,注册服务收到注册请求报文后保存报文信息;
[0009]C、根据客户端需要访问的服务名称查询对应集群服务器内的注册服务,利用注册服务中保存的报文信息查询与服务名称对应的调用地址信息并返回给客户端;
[0010]D、客户端根据步骤C中返回的调用地址信息访问对应的服务端,服务端完成访问请求后将处理结果返回给客户端。
[0011]进一步地,所述集群包括N个集群服务器,N多I。
[0012]进一步地,所述集群服务器中同时运行所述注册服务、客户端和服务端。
[0013]进一步地,所述集群服务器中存储有最新服务信息库。
[0014]进一步地,所述注册请求报文包括服务名称和调用地址信息。
[0015]进一步地,所述步骤B还包括以下步骤:
[0016]设定大于预设周期时长的检测时长,并判断注册服务收到注册请求报文后距离下一次收到注册请求报文的时长是否大于检测时长;
[0017]若注册服务收到注册请求报文后距离下一次收到注册请求报文的时长大于检测时长,则删除注册服务中保存的对应报文信息;
[0018]若注册服务收到注册请求报文后距离下一次收到注册请求报文的时长小于或等于检测时长,则将对应的报文信息保存在注册服务中。
[0019]为了解决以上问题,本发明还提出了一种集群远程过程调用系统,包括注册模块、访问模块和服务模块;
[0020]所述注册模块用于启动集群内所有注册服务,并将所述注册服务加入注册服务组播组并监听组播报文;所述注册模块收到注册请求报文后保存报文信息;当访问模块查询注册服务时,所述注册模块根据保存的报文信息查询与服务名称对应的调用地址信息并返回给访问模块;
[0021]所述访问模块设于客户端,用于根据客户端的服务名称查询注册服务,并根据注册模块返回的调用地址信息访问对应服务器;
[0022]所述服务模块设于服务端,用于按照预设周期向注册服务组播组发送注册请求报文;当访问模块访问服务器时,服务模块完成访问请求并将处理结果返回给访问模块。
[0023]进一步地,所述集群内的每个集群服务器都包括注册模块、访问模块和服务模块。
[0024]进一步地,所述注册请求报文包括服务名称和调用地址信息。
[0025]进一步地,还包括检测模块,
[0026]所述检测模块用于判断注册模块收到注册请求报文后距离下一次收到注册请求报文的时长是否大于预设检测时长,所述检测时长为多个预设周期时长,若注册模块收到注册请求报文后距离下一次收到注册请求报文的时长大于检测时长,则删除注册模块中保存的对应报文信息,若注册服务收到注册请求报文后距离下一次收到注册请求报文的时长小于或等于检测时长,则将对应的报文信息保存在注册服务中。
[0027]本发明的有益效果是:本发明通过将集群划分为多个集群服务器,并在每个集群服务器中同时运行所述注册服务、客户端和服务端,实现集群远程过程调用;本发明通过在每个集群服务器中存储最新RPC服务信息库,实现当集群中任意数量的节点故障时RPC的查询与访问不受影响;本发明还通过在服务端按照预设周期向注册服务组播组发送注册请求报文,实现新加入集群的集群服务器无需配置即可在一定时间内学习到集群内所有RPC服务信息;本发明还通过设定检测时长来定期清理过期的RPC注册信息,使RPC信息保持最新状态,避免当集群服务器出现故障或移除时出现持续RPC访问故障。
【附图说明】
[0028]图1是本发明的集群远程过程调用方法流程示意图。
[0029]图2是本发明的集群远程过程调用方法中集群示意图。
[0030]图3是本发明的集群远程过程调用系统示意图。
【具体实施方式】
[0031]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
[0032]如图1所示,为本发明的集群远程过程调用方法流程示意图,具体包括以下步骤:
[0033]A、启动集群内的所有注册服务,将注册服务加入注册服务组播组,并监听组播报文。
[0034]如图2所示,为本发明的集群远程过程调用方法中集群示意图。本发明的集群包括N个集群服务器,这里的NS I ;每个集群服务器中都存储有最新的RPC服务信息库,实现了当集群中任意数量的节点故障时RPC的查询与访问不受影响;每个集群服务器中同时运行注册服务、客户端和服务端。本发明的注册服务为集群RPC服务信息的管理方,用于接收服务端的注册请求报文并保存报文信息,同时接收客户端的查询请求,当查询到对应服务端信息后将信息返回给客户端。本发明启动集群内每个集群服务器中的注册服务,所有注册服务启动后,组建包含所有注册服务的组播网络,将注册服务加入注册服务组播组,并监听组播报文。
[0035]本发明实施例中首先配置一个组播地址和组播端口作为注册服务使用,例如224.0.1.1:8000ο然后启动集群内每个集群服务器中的注册服务,所有注册服务启动后将注册服务加入注册服务组播组,并监听组播报文。
[0036]B、按照预设周期向注册服务组播组发送来自服务端的注册请求报文,注册服务收到注册请求报文后保存报文信息。
[0037]本发明在服务端设定一个周期,按照设定的周期向注册服务组播组发送注册请求报文,实现了新加入集群的集群服务器无需配置即可在一定时间内学习到集群内所有RPC服务信息。这里的注册请求报文包括服务名称和调用地址信息。在注册服务收到注册请求报文后,注册服务保存注册请求报文信息。
[0038]本发明实施例中设定发送周期为10秒,即服务端每隔10秒向对应组播组发送注册服务报文。注册服务报文具体为检索服务,包括服务名称和调用地址信息,服务名称为SearchServer,服务访问地址为 http://192.168.1.1/SearchServer.do。集群中的所有注册服务收到注册请求报文后,将相关信息保存到内存中或本地数据库中。
[0039]本发明的步骤B还包括以下步骤:
[0040]设定大于预设周期时长的检测时长,并判断注册服务收到注册请求报文后距离下一次收到注册请求报文的时长是否大于检测时长;
[0041]若注册服务收到注册请求报文后距离下一次收到注册请求报文的时长大于检测时长,则删除注册服务中保存的对应报文信息;
[0042]若注册服务收到注册请求报文后距离下一次收到注册请求报文的时长小于或等于检
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1