一种班牌系统客户端长连接处理方法及装置与流程

文档序号:18664143发布日期:2019-09-13 19:51阅读:154来源:国知局
一种班牌系统客户端长连接处理方法及装置与流程

本发明涉及班牌领域,特别涉及一种班牌系统客户端长连接处理方法及装置。



背景技术:

班牌系统是以出勤管理和班级信息展示为主体,为中小学教育行业量身设计的一款集射频卡技术、语音技术、多媒体技术、后台管理软件技术、智能门禁系统技术为一体的综合管理平台系统。

通过班牌系统的班牌设备和后台教务管理软件的统一管理,可很好的在班牌系统上实现多媒体展示(包括展示班级信息、班级宣传文化、班级活动照片、学校公告、优秀标兵等)、教务信息展示(包括展示班级当日课程表、当前课程信息、出勤结果信息等)、教务考勤功能(根据课程信息进行学生及教师考勤,兼容选修课、走班制等教学方式)、问卷调查功能(终端提供问卷调查交互功能,由学校发布调查问题,学生在班牌系统客户端上可直接进行投票,投票结果以报表进行展示)等等。

在具体使用班牌系统时,班牌系统客户端为了能够及时处理来自班牌系统服务端的消息指令,故采用tcp/ip套接字(socket)长连接通信机制,使客户端与服务端保持实时通信连接。在现有的班牌系统中,都是通过设置单节点服务器来对连接资源进行处理的。但是,随着客户端的大规模部署,服务端已开始面临socket长连接通道指数增长的压力,由于单节点服务器承受的最大连接资源数有限,当超出其承受范围阀值时,服务器的整体负载将上升,最终资源耗尽后会导致服务器宕机,此时所有客户端连接将中断,班牌系统也会全面瘫痪。因此,亟需提供一种能够解决单节点资源负载问题,最大限度保证班牌系统稳定性、容错性及可用性的方案。



技术实现要素:

本发明要解决的技术问题之一,在于提供一种班牌系统客户端长连接处理方法,通过该处理方法来解决现有单节点资源负载问题。

本发明是这样实现技术问题之一的:一种班牌系统客户端长连接处理方法,所述处理方法包括如下步骤:

步骤s1、班牌系统控制端向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听,以通过班牌系统中转端将班牌系统服务端上报的节点信息数据传达给班牌系统控制端;

步骤s2、班牌系统控制端接收班牌系统客户端请求的连接分配,并根据班牌系统服务端上报的节点信息数据处理班牌系统客户端的连接分配,且将处理结果返回给班牌系统客户端,使班排系统客户端根据处理结果直接向服务器节点集群中的对应节点请求建立长连接通道。

进一步地,所述的步骤s1包括:

步骤s11、启动班牌系统控制端的应用服务进程,通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听;

步骤s12、启动班牌系统中转端的应用服务进程,通过班牌系统中转端的应用服务进程提供给班牌系统服务端的节点信息上报服务和提供给班牌系统控制端的节点信息传达服务;

步骤s13、启动班牌系统服务端的应用服务进程,班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据;班牌系统中转端通过节点信息传达服务将节点信息数据传达给班牌系统控制端;

步骤s14、在班牌系统控制端上创建班牌系统监控端的监控服务,并利用班牌系统监控端的监控服务将异常指标报告给班牌系统监控端,以通过班牌系统监控端将异常指标通知给相关工作人员。

进一步地,所述步骤s11中,所述的通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听包括:

a1、通过班牌系统控制端的应用服务进程监听节点变化;

a2、在班牌系统控制端创建动态节点管理;

a3、在班牌系统控制端创建动态节点管理哈希表;

a4、在班牌系统控制端上实现获取空闲节点的方法,具体为:

迭代动态节点哈希表集合;

在班牌系统控制端上实现班牌系统服务端中每个服务器节点连接数均等的负载均衡算法,算出最小连接数节点,若存在相同最小连接数的节点,则采用随机算法随机获取最小连接数节点;

从最小连接数节点的服务器返回空闲的节点;

a5、监听节点的数据变化;

所述步骤s13中,所述的班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据包括:

b1、班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据,上报的节点信息数据至少包括新增节点以及节点连接数的变动;

b2、在班牌系统服务端创建客户端tcp/ip套接字长连接通信服务,具体包括:

b21、创建tcp/ip套接字服务,具体包括:

创建异常启动服务;

设置长连接请求监听端口号;

b22、创建tcp/ip套接字长连接处理,具体包括:

实现长连接请求接受方法;

实现长连接心跳方法;

b23、创建长连接管理,具体包括:

创建长连接管理哈希表结构;

启动节点信息数据上报守护线程;

调用上报方法;

所述步骤s14中,所述的利用班牌系统控制端的监控服务将异常指标报告给班牌系统监控端具体为:

利用班牌系统控制端的监控服务来监控设定的指标内容,所述指标内容包括服务器节点集群状态指标、服务器节点挂开指标、新服务器节点加入指标、班牌系统客户端状态指标或者班牌系统中转端状态指标;并将监控到的异常指标报告给班牌系统监控端。

进一步地,所述步骤s2具体包括:

步骤s21、启动班牌系统客户端的应用服务进程,并通过班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配;

步骤s22、在班牌系统控制端上创建班牌系统客户端的连接请求服务,具体包括:

接收来自班牌系统客户端的连接请求实现方法;

向动态节点管理类申请一个空闲的节点;

将空闲节点的服务器ip地址和端口返回给班牌系统客户端的连接请求服务;

步骤s23、班牌系统控制端接收班牌系统客户端请求的连接分配,同时,班牌系统控制端根据班牌系统服务端上报的节点信息数据动态管理节点,并通过班牌系统客户端的连接请求服务获取空闲节点的服务器ip地址和端口;

步骤s24、班牌系统客户端的连接请求服务将空闲节点的服务器ip地址和端口返回给班牌系统客户端,班牌系统客户端的长连接通信服务根据服务器ip地址和端口直接向服务器节点集群中的对应节点请求建立长连接通道。

进一步地,所述步骤s21中,在班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配时,如果班牌系统控制端返回所有服务器节点均处于繁忙状态,则班牌系统客户端的应用服务进程将进入定时重试状态,直到班牌系统控制端返回空闲节点的服务器ip地址和端口时才停止重试;

所述步骤s24中,在班牌系统客户端向对应节点请求建立长连接通道时,如果请求连接失败,则班牌系统客户端将进入次数重试状态,且如果在达到设定的重试次数后仍未连接成功,则班牌系统客户端将重新向班牌系统控制端请求一个连接分配。

本发明要解决的技术问题之二,在于提供一种班牌系统客户端长连接处理装置,通过该处理装置来解决现有单节点资源负载问题。

本发明是这样实现技术问题之二的:一种班牌系统客户端长连接处理装置,所述处理装置包括变化监听模块以及长连接处理模块;

所述变化监听模块,用于班牌系统控制端向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听,以通过班牌系统中转端将班牌系统服务端上报的节点信息数据传达给班牌系统控制端;

所述长连接处理模块,用于班牌系统控制端接收班牌系统客户端请求的连接分配,并根据班牌系统服务端上报的节点信息数据处理班牌系统客户端的连接分配,且将处理结果返回给班牌系统客户端,使班排系统客户端根据处理结果直接向服务器节点集群中的对应节点请求建立长连接通道。

进一步地,所述的变化监听模块包括节点变化监听单元、上报及传达服务提供单元、节点数据上报及传达单元以及异常监控单元;

所述节点变化监听单元,用于启动班牌系统控制端的应用服务进程,通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听;

所述上报及传达服务提供单元,用于启动班牌系统中转端的应用服务进程,通过班牌系统中转端的应用服务进程提供给班牌系统服务端的节点信息上报服务和提供给班牌系统控制端的节点信息传达服务;

所述节点数据上报及传达单元,用于启动班牌系统服务端的应用服务进程,班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据;班牌系统中转端通过节点信息传达服务将节点信息数据传达给班牌系统控制端;

所述异常监控单元,用于在班牌系统控制端上创建班牌系统监控端的监控服务,并利用班牌系统监控端的监控服务将异常指标报告给班牌系统监控端,以通过班牌系统监控端将异常指标通知给相关工作人员。

进一步地,所述节点变化监听单元中,所述的通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听包括:

a1、通过班牌系统控制端的应用服务进程监听节点变化;

a2、在班牌系统控制端创建动态节点管理;

a3、在班牌系统控制端创建动态节点管理哈希表;

a4、在班牌系统控制端上实现获取空闲节点的方法,具体为:

迭代动态节点哈希表集合;

在班牌系统控制端上实现班牌系统服务端中每个服务器节点连接数均等的负载均衡算法,算出最小连接数节点,若存在相同最小连接数的节点,则采用随机算法随机获取最小连接数节点;

从最小连接数节点的服务器返回空闲的节点;

a5、监听节点的数据变化;

所述节点数据上报及传达单元中,所述的班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据包括:

b1、班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据,上报的节点信息数据至少包括新增节点以及节点连接数的变动;

b2、在班牌系统服务端创建客户端tcp/ip套接字长连接通信服务,具体包括:

b21、创建tcp/ip套接字服务,具体包括:

创建异常启动服务;

设置长连接请求监听端口号;

b22、创建tcp/ip套接字长连接处理,具体包括:

实现长连接请求接受方法;

实现长连接心跳方法;

b23、创建长连接管理,具体包括:

创建长连接管理哈希表结构;

启动节点信息数据上报守护线程;

调用上报方法;

所述异常监控单元中,所述的利用班牌系统控制端的监控服务将异常指标报告给班牌系统监控端具体为:

利用班牌系统控制端的监控服务来监控设定的指标内容,所述指标内容包括服务器节点集群状态指标、服务器节点挂开指标、新服务器节点加入指标、班牌系统客户端状态指标或者班牌系统中转端状态指标;并将监控到的异常指标报告给班牌系统监控端。

进一步地,所述长连接处理模块包括连接分配请求单元、连接请求服务创建单元、空闲节点获取单元以及长连接建立单元;

所述连接分配请求单元,用于启动班牌系统客户端的应用服务进程,并通过班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配;

所述连接请求服务创建单元,用于在班牌系统控制端上创建班牌系统客户端的连接请求服务,具体包括:

接收来自班牌系统客户端的连接请求实现方法;

向动态节点管理类申请一个空闲的节点;

将空闲节点的服务器ip地址和端口返回给班牌系统客户端的连接请求服务;

所述空闲节点获取单元,用于班牌系统控制端接收班牌系统客户端请求的连接分配,同时,班牌系统控制端根据班牌系统服务端上报的节点信息数据动态管理节点,并通过班牌系统客户端的连接请求服务获取空闲节点的服务器ip地址和端口;

所述长连接建立单元,用于班牌系统客户端的连接请求服务将空闲节点的服务器ip地址和端口返回给班牌系统客户端,班牌系统客户端的长连接通信服务根据服务器ip地址和端口直接向服务器节点集群中的对应节点请求建立长连接通道。

进一步地,所述连接分配请求单元中,在班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配时,如果班牌系统控制端返回所有服务器节点均处于繁忙状态,则班牌系统客户端的应用服务进程将进入定时重试状态,直到班牌系统控制端返回空闲节点的服务器ip地址和端口时才停止重试;

所述长连接建立单元中,在班牌系统客户端向对应节点请求建立长连接通道时,如果请求连接失败,则班牌系统客户端将进入次数重试状态,且如果在达到设定的重试次数后仍未连接成功,则班牌系统客户端将重新向班牌系统控制端请求一个连接分配。

本发明具有如下优点:本发明通过采用服务器硬件资源集群以及对资源集群进行程序化管理的方式,可有效解决现有单节点资源负载问题,并极大的提高了整个班牌系统的稳定性、容错性及可用性。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明一种班牌系统客户端长连接处理方法的实现原理框图。

具体实施方式

请参阅图1所示,本发明一种班牌系统客户端长连接处理方法的较佳实施例,所述处理方法包括如下步骤:

步骤s1、班牌系统控制端向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听,以通过班牌系统中转端将班牌系统服务端上报的节点信息数据传达给班牌系统控制端;

步骤s2、班牌系统控制端接收班牌系统客户端请求的连接分配,并根据班牌系统服务端上报的节点信息数据处理班牌系统客户端的连接分配,且将处理结果返回给班牌系统客户端,使班排系统客户端根据处理结果直接向服务器节点集群中的对应节点请求建立长连接通道。

其中,所述的步骤s1包括:

步骤s11、启动班牌系统控制端的应用服务进程,masterapplication.main();通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听,followernodelistenerlistener=newfollowernodelistener();

所述步骤s11中,所述的通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听包括:

a1、通过班牌系统控制端的应用服务进程监听节点变化,listener.onnodechange();

a2、在班牌系统控制端创建动态节点管理,followernodemanagernodemgr=newfollowernodemanager();

a3、在班牌系统控制端创建动态节点管理哈希表,map<string,nodedata>nodemap=newhashmap<string,nodedata>();

a4、在班牌系统控制端上实现获取空闲节点的方法,nodemgr.getfreenode();具体为:

迭代动态节点哈希表集合,nodemap;

在班牌系统控制端上实现班牌系统服务端中每个服务器节点连接数均等的负载均衡算法,算出最小连接数节点,若存在相同最小连接数的节点,则采用随机算法随机获取最小连接数节点,

从最小连接数节点的服务器返回空闲的节点;

a5、监听节点的数据变化,listener.ondatachange();

步骤s12、启动班牌系统中转端的应用服务进程,brokerapplication.main();通过班牌系统中转端的应用服务进程提供给班牌系统服务端的节点信息上报服务followernodepubservice,以及提供给班牌系统控制端的节点信息传达服务,followernodesubservice;

步骤s13、启动班牌系统服务端的应用服务进程,followerapplication.main();班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据;班牌系统中转端通过节点信息传达服务将节点信息数据传达给班牌系统控制端;

所述步骤s13中,所述的班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据包括:

b1、班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据,followernoderegisterregister=newfollowernoderegister();上报的节点信息数据至少包括新增节点,register.init(),以及节点连接数的变动,register.connchange();

b2、在班牌系统服务端创建客户端tcp/ip套接字长连接通信服务,具体包括:

b21、创建tcp/ip套接字服务,nettyserver;具体包括:

创建异常启动服务,nettyserver.startserver();

设置长连接请求监听端口号;

b22、创建tcp/ip套接字长连接处理,socketserverhandlerhandler=newsocketserverhandler();具体包括:

实现长连接请求接受方法,handler.handlehttprequest();

实现长连接心跳方法,handler.handlerwebsocketframe();

b23、创建长连接管理,terminalconnectionmanagermgr=newterminalconnectionmanager();具体包括:

创建长连接管理哈希表结构,map<string,terminalconnection>connectioncache=newconcurrenthashmap<string,terminalconnection>();

启动节点信息数据上报守护线程,connectionmoniterthread;

调用上报方法,followernoderegister.connchange();

步骤s14、在班牌系统控制端上创建班牌系统监控端的监控服务,并利用班牌系统监控端的监控服务将异常指标报告给班牌系统监控端,以通过班牌系统监控端将异常指标通知给相关工作人员;

该步骤s14中,班牌系统控制端的具体实现程序流程如下:

创建班牌系统监控端的监控服务,monitorservicemonitorservice=newmonitorservice();

初始化服务,monitorservice.init();

上报监控数据,monitorservice.upload();

该步骤s14中,班牌系统监控端的具体实现程序流程如下:

启动班牌系统监控端的应用服务器进程,monitorapplication.main();

提供给班牌系统控制端监控上报服务,monitorservice;

邮件通知服务,emailnoticeservice;

短信通知服务,msgnoticeservice;

im通知服务,imnoticeservice。

所述步骤s14中,所述的利用班牌系统控制端的监控服务将异常指标报告给班牌系统监控端具体为:

利用班牌系统控制端的监控服务来监控设定的指标内容,所述指标内容包括服务器节点集群状态指标、服务器节点挂开指标、新服务器节点加入指标、班牌系统客户端状态指标或者班牌系统中转端状态指标;并将监控到的异常指标报告给班牌系统监控端。

所述步骤s2具体包括:

步骤s21、启动班牌系统客户端的应用服务进程,clientapplication.start();并通过班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配;

步骤s22、在班牌系统控制端上创建班牌系统客户端的连接请求服务,clientacceptorclientacceptor=newclientacceptor();具体包括:

接收来自班牌系统客户端的连接请求实现方法,clientacceptor.accept();

向动态节点管理类申请一个空闲的节点,nodedatafreenodedata=followernodemanager.getfreenode();

将空闲节点的服务器ip地址和端口返回给班牌系统客户端的连接请求服务,freenodedata.getconnurl();

步骤s23、班牌系统控制端接收班牌系统客户端请求的连接分配,同时,班牌系统控制端根据班牌系统服务端上报的节点信息数据动态管理节点,并通过班牌系统客户端的连接请求服务获取空闲节点的服务器ip地址和端口;

步骤s24、班牌系统客户端的连接请求服务将空闲节点的服务器ip地址和端口返回给班牌系统客户端,班牌系统客户端的长连接通信服务根据服务器ip地址和端口直接向服务器节点集群中的对应节点请求建立长连接通道。

所述步骤s21中,在班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配时,如果班牌系统控制端返回所有服务器节点均处于繁忙状态,则班牌系统客户端的应用服务进程将进入定时重试状态,直到班牌系统控制端返回空闲节点的服务器ip地址和端口时才停止重试;

所述步骤s24中,在班牌系统客户端向对应节点请求建立长连接通道时,如果请求连接失败,则班牌系统客户端将进入次数重试状态,且如果在达到设定的重试次数后仍未连接成功,则班牌系统客户端将重新向班牌系统控制端请求一个连接分配;

该班牌系统客户端为了容错安全性考虑,采用了失败/重试的设计模式;通过采用失败/重试的设计模式,可最大限度的保证整个班牌系统的稳定性、容错性及可用性。

请参阅图1所示,本发明一种班牌系统客户端长连接处理装置的较佳实施例,所述处理装置包括变化监听模块以及长连接处理模块;

所述变化监听模块,用于班牌系统控制端向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听,以通过班牌系统中转端将班牌系统服务端上报的节点信息数据传达给班牌系统控制端;

所述长连接处理模块,用于班牌系统控制端接收班牌系统客户端请求的连接分配,并根据班牌系统服务端上报的节点信息数据处理班牌系统客户端的连接分配,且将处理结果返回给班牌系统客户端,使班排系统客户端根据处理结果直接向服务器节点集群中的对应节点请求建立长连接通道。

其中,所述的变化监听模块包括节点变化监听单元、上报及传达服务提供单元、节点数据上报及传达单元以及异常监控单元;

所述节点变化监听单元,用于启动班牌系统控制端的应用服务进程,masterapplication.main();通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听,followernodelistenerlistener=newfollowernodelistener();

所述节点变化监听单元中,所述的通过班牌系统控制端的应用服务进程向班牌系统中转端注册班牌系统服务端的服务器节点集群变化监听包括:

a1、通过班牌系统控制端的应用服务进程监听节点变化,listener.onnodechange();

a2、在班牌系统控制端创建动态节点管理,followernodemanagernodemgr=newfollowernodemanager();

a3、在班牌系统控制端创建动态节点管理哈希表,map<string,nodedata>nodemap=newhashmap<string,nodedata>();

a4、在班牌系统控制端上实现获取空闲节点的方法,nodemgr.getfreenode();具体为:

迭代动态节点哈希表集合,nodemap;

在班牌系统控制端上实现班牌系统服务端中每个服务器节点连接数均等的负载均衡算法,算出最小连接数节点,若存在相同最小连接数的节点,则采用随机算法随机获取最小连接数节点,

从最小连接数节点的服务器返回空闲的节点;

a5、监听节点的数据变化,listener.ondatachange();

所述上报及传达服务提供单元,用于启动班牌系统中转端的应用服务进程,brokerapplication.main();通过班牌系统中转端的应用服务进程提供给班牌系统服务端的节点信息上报服务followernodepubservice,以及提供给班牌系统控制端的节点信息传达服务,followernodesubservice;

所述节点数据上报及传达单元,用于启动班牌系统服务端的应用服务进程,followerapplication.main();班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据;班牌系统中转端通过节点信息传达服务将节点信息数据传达给班牌系统控制端;

所述节点数据上报及传达单元中,所述的班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据包括:

b1、班牌系统服务端的应用服务进程利用班牌系统中转端提供的节点信息上报服务向班牌系统中转端上报节点信息数据,followernoderegisterregister=newfollowernoderegister();上报的节点信息数据至少包括新增节点,register.init(),以及节点连接数的变动,register.connchange();

b2、在班牌系统服务端创建客户端tcp/ip套接字长连接通信服务,具体包括:

b21、创建tcp/ip套接字服务,nettyserver;具体包括:

创建异常启动服务,nettyserver.startserver();

设置长连接请求监听端口号;

b22、创建tcp/ip套接字长连接处理,socketserverhandlerhandler=newsocketserverhandler();具体包括:

实现长连接请求接受方法,handler.handlehttprequest();

实现长连接心跳方法,handler.handlerwebsocketframe();

b23、创建长连接管理,terminalconnectionmanagermgr=newterminalconnectionmanager();具体包括:

创建长连接管理哈希表结构,map<string,terminalconnection>connectioncache=newconcurrenthashmap<string,terminalconnection>();

启动节点信息数据上报守护线程,connectionmoniterthread;

调用上报方法,followernoderegister.connchange();

所述异常监控单元,用于在班牌系统控制端上创建班牌系统监控端的监控服务,并利用班牌系统监控端的监控服务将异常指标报告给班牌系统监控端,以通过班牌系统监控端将异常指标通知给相关工作人员;

该异常监控单元中,班牌系统控制端的具体实现程序流程如下:

创建班牌系统监控端的监控服务,monitorservicemonitorservice=newmonitorservice();

初始化服务,monitorservice.init();

上报监控数据,monitorservice.upload();

该异常监控单元中,班牌系统监控端的具体实现程序流程如下:

启动班牌系统监控端的应用服务器进程,monitorapplication.main();

提供给班牌系统控制端监控上报服务,monitorservice;

邮件通知服务,emailnoticeservice;

短信通知服务,msgnoticeservice;

im通知服务,imnoticeservice。

所述异常监控单元中,所述的利用班牌系统控制端的监控服务将异常指标报告给班牌系统监控端具体为:

利用班牌系统控制端的监控服务来监控设定的指标内容,所述指标内容包括服务器节点集群状态指标、服务器节点挂开指标、新服务器节点加入指标、班牌系统客户端状态指标或者班牌系统中转端状态指标;并将监控到的异常指标报告给班牌系统监控端。

所述长连接处理模块包括连接分配请求单元、连接请求服务创建单元、空闲节点获取单元以及长连接建立单元;

所述连接分配请求单元,用于启动班牌系统客户端的应用服务进程,clientapplication.start();并通过班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配;

所述连接请求服务创建单元,用于在班牌系统控制端上创建班牌系统客户端的连接请求服务,clientacceptorclientacceptor=newclientacceptor();具体包括:

接收来自班牌系统客户端的连接请求实现方法,clientacceptor.accept();

向动态节点管理类申请一个空闲的节点,nodedatafreenodedata=followernodemanager.getfreenode();

将空闲节点的服务器ip地址和端口返回给班牌系统客户端的连接请求服务,freenodedata.getconnurl();

所述空闲节点获取单元,用于班牌系统控制端接收班牌系统客户端请求的连接分配,同时,班牌系统控制端根据班牌系统服务端上报的节点信息数据动态管理节点,并通过班牌系统客户端的连接请求服务获取空闲节点的服务器ip地址和端口;

所述长连接建立单元,用于班牌系统客户端的连接请求服务将空闲节点的服务器ip地址和端口返回给班牌系统客户端,班牌系统客户端的长连接通信服务根据服务器ip地址和端口直接向服务器节点集群中的对应节点请求建立长连接通道。

所述连接分配请求单元中,在班牌系统客户端的应用服务进程向班牌系统控制端请求连接分配时,如果班牌系统控制端返回所有服务器节点均处于繁忙状态,则班牌系统客户端的应用服务进程将进入定时重试状态,直到班牌系统控制端返回空闲节点的服务器ip地址和端口时才停止重试;

所述长连接建立单元中,在班牌系统客户端向对应节点请求建立长连接通道时,如果请求连接失败,则班牌系统客户端将进入次数重试状态,且如果在达到设定的重试次数后仍未连接成功,则班牌系统客户端将重新向班牌系统控制端请求一个连接分配;

该班牌系统客户端为了容错安全性考虑,采用了失败/重试的设计模式;通过采用失败/重试的设计模式,可最大限度的保证整个班牌系统的稳定性、容错性及可用性。

综上所述,在本发明中,班牌系统控制端是一个指挥者或领导者的角色,在整个系统中主要起到承上启下的作用;班牌系统控制端的主要职责是将班牌系统客户端的连接请求分发到闲置的长连接通信服务器上,该班牌系统控制端采用负载均衡的算法,把班牌系统客户端的连接请求均摊到服务器节点集群上,以最大限度保证每个服务器节点的连接数均等,同时会对超出最大连接数的服务器节点进行标记,以方便后续不再安排其承担连接请求。该班牌系统控制端是通过监听班牌系统中转端来动态感知服务器集群节点数量、节点当前活跃连接请求的数量以及节点当前连接标识列表集合。由于班牌系统控制端是动态感知服务器集群节点的,所以内部可以实时撑握服务器集群节点的状态,当某个服务器节点挂开超过预定的时间时,班牌系统控制端将监测到该项异常指标,并报告给班牌系统监控端。该班牌系统控制端监测的指标内容包括有:服务器节点集群状态指标、服务器节点挂开指标、新服务器节点加入指标、班牌系统客户端状态指标或者班牌系统中转端状态指标。

班牌系统服务端是一个追随者的角色,一台物理服务器对应一个服务器节点,在班牌系统服务端中可以同时存在多个服务器节点,在实际生产环境中也可以根据需要来合理增加服务器节点。该班牌系统服务端的主要职责是接收来自班牌系统控制端的客户端连接请求,且一旦请求成功,班牌系统服务端将与班牌系统客户端建立套接字(socket)长接连通道。该班牌系统服务端在启动完成后,就把自身的内部信息注册到班牌系统中转端,包括网络ip、应用端口、节点名称等;且一旦成功注册到班牌系统中转端上时,班牌系统控制端将监听到来自班牌系统中转端的新服务器节点加入的通知消息,此时班牌系统控制端可以开始接收来自班牌系统客户端的连接请求并分发到对应的服务器节点上。班牌系统服务端与班牌系统客户端之间建立的长连接通道对班牌系统控制端来说是无直接感知的,班牌系统服务端的状态变化都是通过班牌系统中转端下达的,包括节点就绪、节点断开、节点连接数量变化等。本发明采用该设计的主要目的是让班牌系统服务端与班牌系统控制端解耦,让班牌系统服务端具备横向集群及动态扩容的能力,以便应对班牌系统大规模客户端的连接需求。

班牌系统中转端是一个经纪人角色,其采用通知/订阅的模式设计。班牌系统中转端的主要职责是为班牌系统服务端与班牌系统控制端做中间数据交换,班牌系统服务端启动后会通知班牌系统中转端,班牌系统控制端启动后会从班牌系统中转端订阅数据。本发明采用该设计的主要目的是让班牌系统服务端与班牌系统控制端解耦,以让班牌系统服务端具备横向集群及动态扩容的能力,以便应对班牌系统大规模客户端的连接需求。

班牌系统监控端就是一个监控器,该班牌系统监控端的主要职责是为班牌系统控制端提供数据上报监控接口,当出现异常指标时,班牌系统监控端将第一时间通知相关工作人员。班牌系统监控端可以提供配置通知方式和通知人员参数,通知方式包括邮件通知、短信通知或者相应im推送通知等,通知人员可以设置人员邮箱、手机号或相应im账号等。

班牌系统客户端的主要职责是与班牌系统服务端的服务器建立tcp/ip套接字(socket)长连接通信,同时传达服务器的推送消息指令。该班牌系统客户端在启动后会先向班牌系统控制端请求一个连接分配,班牌系统控制端受理成功后会返回服务器节点的ip+端口,这样,班牌系统客户端就可以直接向服务器节点请求建立长接连通道。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

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