基于网络的多机多网分布式服务模块状态检测方法及系统与流程

文档序号:11877972阅读:408来源:国知局
基于网络的多机多网分布式服务模块状态检测方法及系统与流程

本发明涉及多机多网分布式服务状态检测管理。



背景技术:

挂接在同一通信子网内的大量分布式终端之间进行数据交互,需要维持一个面向连或无连接的数据链路,定时发送心跳数据帧来确定对方的运行状态,以保证数据传输的有效性。

在变电站中,对采用TCP协议的面向连接的情况,需要预先知道所要检测的服务节点的数量和IP信息,否则不能建立链接,且终端之间需要维护网络链接,若需要维护的网络链接数量多,必定会使客户端在维护链接上耗费大量的精力,占用内存大,网络吞吐量大。若采用UDP面向无连接的方式,虽然不必时时维护链路,单纯在双方维护心跳方面,也会耗费大量精力(cpu)。面对大数量终端时都会出现效率问题。



技术实现要素:

为解决现有技术存在的不足,本发明公开了基于网络的多机多网分布式服务模块状态检测方法及系统,本申请针对网络中具有大量分布式服务模块的情况,采用基于网络UDP协议的基于定时策略广播或组播回调对象到每个终端的每个服务模块,不必预先知道所要检测的服务节点的数量和IP信息,通过回调对象驻留服务端,主动上送服务状态的方式和筛选重分组策略,来改进网络吞吐量、维护链接和心跳导致效率低下的问题。

为实现上述目的,本发明的具体方案如下:

基于网络的多机多网分布式服务模块状态检测方法,包括:

客户端在本地建立一个回调对象,并启动回调对象返回状态处理服务,此后,此状态处理服务驻留内存进行监听,进入消息等待状态,同时,启动定时服务;

客户端首先发送回调对象至服务端,此回调对象驻留服务端内存;若客户端的回调对象被改变则服务端也会相应的更新,否则不会更新;

服务端收到回调对象后回调对象向客户端报告服务当前状态,客户端收到状态信息并对反馈回来的状态进行展示。

进一步的,客户端发送回调对象至服务端时,客户端将回调对象按定时服务在网内以广播或组播的方式发布,相应的,所有收到此广播的服务端更新回调对象,以应对回调对象动态更新和新上线服务的情况,使服务端能够自适应客户端回调对象的任何改动。

进一步的,服务端收到或更新回调对象后,立即调用此回调对象的接口,将本服务中所有需要检测的服务状态作为接口参数,反馈给客户端的状态处理服务,若未收到回调对象且客户端计时器超时,表示此服务端离线。

进一步的,客户端的状态处理服务收到反馈后,调整定时服务,并对反馈回来的状态进行展示,完成一个检测过程。

进一步的,客户端根据筛选重分组,对状态改变频繁的服务节点重新分组,调整定时策略。

筛选重分组算法具体为:将大量的服务端根据运行状态、通信速率、功能等特点重新分组,刚开始不知道服务端的情况,经过几次检测过程后可以大体知道哪些服务端经常掉线,哪些服务端通信较慢等情况,将经常掉线的服务端划为一组,将通信状况差的划为一组,将好的划为一组等等。对不同分组区别对待,对经常出问题的组就更新回调对象的频率高点,以便及时检查到服务故障,对正常的组更新频率就低点等等,运行一段时间后,分组基本就确定了,不再需要重分组了,只是稍微调整。从而节省带宽、提高效率、实时性。

进一步的,重新分组时,客户端发布回调对象后,记录回调对象的响应总时长,包括服务掉线的无响应情况,根据时长将服务端节点分组。

进一步的,有n个客户端及n个服务端时,相应的每个服务端就存有n个回调对象,异常发生时,服务端内的n个回调对象会依次进行状态变化的反馈给这n个客户端。

进一步的,有n个客户端,则在每个服务端内含n个回调对象,当服务端某个状态变化时,回调对象会将此变化依次发送给每个客户端内的回调对象服务,从而使每个客户端都能得知服务端的变化。

基于网络的多机多网分布式服务模块状态检测系统,包括:

客户端,用于在本地建立一个回调对象,并启动回调对象返回状态处理服务,状态处理服务作为状态处理服务模块,此后,此状态处理服务模块驻留内存进行监听,进入消息等待状态,同时,启动定时服务;客户端发送回调对象至服务端,此回调对象驻留服务端内存;

服务端,在收到回调对象后回调对象向客户端报告服务当前状态,客户端收到状态信息并对反馈回来的状态进行展示。

进一步的,有n个客户端及n个服务端时,相应的每个服务端就存有n个回调对象,异常发生时,服务端内的n个回调对象会依次进行状态变化的反馈给这n个客户端;

当服务端某个状态变化时,回调对象会将此变化依次发送给每个客户端内的回调对象服务,从而使每个客户端都能得知服务端的变化。

本发明的有益效果:

本发明UDP用户数据报协议不需保持链路,即用即连。其次,通过回调对象主动上送的方式,不需维护心跳,正常运行时只需定时更新一下对象,几乎不占带宽,出现状态变化才占少量带宽,可以检测大数量的服务状态。

因采用UDP协议采用定时策略广播或组播发布回调对象的方式,可不必一直维护链路,不必事先知道服务端的数量和IP信息,对任何时间上线的服务都能检测到,便于部署。

回调对象发送后,驻留服务端,主动上送服务的状态信息,可提高运行效率,提高检测实时性能。

由于回调对象主动上送,所以不必维护心跳帧,采用定时发布和筛选重新分组策略,使得网络占用很低,状态反馈及时。

网络占用降低,可检测大量的终端,或终端内服务子模块状态,而不必担心通信链路的负载,实现简单。

附图说明

图1状态检测时序对比;

图2a客户端与服务端1:n;

图2b客户端与服务端n:n模式。

具体实施方式:

下面结合附图对本发明进行详细说明:

图1为客户端1:n服务端模式的时序对比,左侧为工程中最常用的TCP心跳帧状态检测法时序图(方法1),右侧为采用回调对象主动上送状态检测法时序图(方法2)。初始化时,两种方法都需要进行第1次请求应答链接,不同的是方法2采用UDP将回调对象发布到对端,而方法1需要提供双方的IP地址信息,建立与所有服务端的链路。而方法2只需要广播或组播地址即可,之后的回调对象中自动包含客户端的IP信息。之后,方法1需要在一定的时间间隔内与所有服务端重复心跳动作,而方法2中因服务端驻留有回调对象,某个或某几个服务端检测到状态改变事件后可主动发送信息到客户端。经过一定数量的检测过程后,定时发布策略算法和重分组策略算法逐渐将发布时限调整到一定精度范围内,从而提高检测的实时性和检测效率。

以1个服务状态检测客户端对n个服务端为例,参见图2a-图2b:

1.首先,客户端在本机建立一个回调代理对象,并启动一个回调对象返回状态处理程序(作为客户端的一个服务模块),此后,此状态处理服务模块驻留内存,进行监听,进入消息等待状态。

2.然后,客户端将回调对象定时在网内广播或组播的形式发布,回调对象发布之后,启动定时策略服务程序(可根据实际要求进行精度设置)。相应的,所有接收到回调对象的服务端初始化或更新回调对象,以应对回调对象动态更新的情况,使服务端能够自适应客户端回调对象的任何改动和新服务上线的情况,此回调对象驻留服务端内存,直到此服务端下线。

3.服务端收到或更新此回调对象后,立即调用此对象的接口,将本服务中所有需要检测的服务状态作为接口参数,反馈给客户端的状态处理服务模块。

4.客户端的状态处理服务模块收到反馈后,微调整定时发布策略程序,处理反馈的服务端所有状态信息,完成一个检测过程。

5、多次检测过程后,筛选重分组算法对状态改变频繁的服务节点重新分组,定时发布策略对回调对象更新时间间隔进行调整,提高变动频繁的节点的检测频率,降低较稳定节点的检测频率。

若网络维护的足够好,所有服务在客户端上线之前入网,则此回调对象只需广播或组播一次,客户端得到服务端的第一次反馈完成初始化后可以不必再次发送此回调对象(或是降低对象的更新速率到指定程度),只是进入消息循环,等待即可,这样服务端有异常情况时主动上送异常状态,大大降低网络占用率,提高状态检测的实时性。

大多情况下,n(n>3)个服务状态检测客户端对N个服务端的情况很少,尤其在变电站双网双主机模式下,客户端的数量远小于服务模块的数量,服务端存取少量的(不仅仅一个)客户端回调对象,区别就在于有n个客户端,相应的每个服务端就存有n个回调对象,异常发生时,服务端内的n个回调对象会依次进行状态变化的反馈给这n个客户端。如下图2b图所示,有n个客户端,则在每个服务端内含n个回调对象,例如服务端1状态变化时,回调对象会将此变化依次发送给每个客户端内的回调对象服务,从而使每个客户端都能得知服务端1的变化。

注:重分组策略:发布回调对象后,记录回调对象的响应总时长(包括服务掉线的无响应情况),根据时长将服务端节点分组。

定时发布策略:针对不同分组确定不同的回调对象发送时间间隔,兼顾带宽占用和检测的及时性。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

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