一种基于WebSocket的自动集群方法及其系统
技术领域
本申请涉及计算机领域,特别涉及一种基于WebSocket的自动集群方法及其系统。
背景技术
随着超文本标记语言(Hypertext Markup Language v5,HTML5)的普及,WebSocket技术被广泛地应用。WebSocket包括具有报文头(head)较小(仅2个字节)、客户端和服务端仅需一次握手便能建立链路而相互发送数据以及实时、全双工等优点。在对规模、分发能力,以及可用性等有较大、较高要求的网络通信系统中,逐渐趋向于使用WebSocket作为其传输承载。
现有的网络系统由大量的客户端和服务器组成,如何使得客户端和服务器配合工作,即做到网络资源的负载均衡,一直是网络系统中的难题,现有技术提供的解决方案是通过反向代理技术解决负载均衡问题,即具有反向代理功能的前端服务器接受客户端的网络连接请求,然后将请求转发给提供服务的后端服务器,并将后端服务器上得到的结果返回给请求连接的客户端,当需要增加或减少后端服务器时均需要修改相应的配置文件。
但是,现有的反向代理技术存在当后端服务器宕机时前端服务器无法进行重新负载的技术问题,当前端服务器跳转到宕机的后端服务器时就会发生错误,无法进行其他后端服务器的自动注册、自动发现以及自动故障处理,当需要进行后端服务器的整体升级时,必须断开与前端服务器的连接才能进行,即存在无法自动集群的问题,同时,不同功能的后端服务器集群也需要进行单独的配置,当有大量后端服务器维护或者后端服务器出现网络问题时会造成运维巨大的工作量,也会造成客户端大量无法连接的问题。
发明内容
本申请基于此,提出一种基于WebSocket的自动集群方法及其系统,使得该网络系统具有WebSocket的连接性能,同时解决现有服务器的自动集群以及负载均衡问题。
本申请请求保护的基于WebSocket的自动集群方法,包括如下步骤:
与注册服务器建立Socket连接;
通过Socket端口接收注册服务器推送的业务服务器的注册信息;
与注册的业务服务器建立WebSocket通信连接。
该方法还包括:与客户端建立WebSocket通信连接。
其中将与注册的业务服务器建立的WebSocket通信连接放入连接池。
该方法还包括,将与客户端的Session信息保存到Session服务器。
其中在注册服务器发出业务服务器断开连接的信息时,更新连接池,删除与已断开的业务服务器相应的WebSocket通信连接。
本申请还请求保护一种网关服务器,包括:
多个Socket端口,与外部设备通过Socket端口通信;
存储设备,保存注册服务器推送的业务服务器的注册信息;
通信部件,与注册的业务服务器建立WebSocket通信。
该网关服务器通过通信部件与客户端建立WebSocket通信连接。
上述网关服务器,还包括:连接池,保存与注册的业务服务器建立的WebSocket通信连接。
进一步地,在业务服务器通过Socket端口发送业务服务器断开连接的信息时,连接池删除与已断开的业务服务器相应的WebSocket通信连接。
最后,本申请还请求保护一种基于WebSocket的自动集群系统,包括如上所述的网关服务器,还包括:
登录服务器,用于为客户端分配令牌token;
客户端,向网关服务器发送WebSocket信息,并接收网关服务器发送的WebSocket信息;
注册服务器,接收业务服务器发送的注册信息和/或断开信息,并将接收的注册信息和/或断开信息通过Socket端口推送到网关服务器;
Session服务器,保存客户端的Session信息和token参数。
本申请具有如下有益效果:
1、可实现业务服务器的自动服务路由,解决业务服务器上线或下线宕机时的信息同步,故障隔离的问题;
2、网关服务器为可实现WebSocket通信机制的服务器,实现了全双工通信、地址复用,同时可以节省网络带宽。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请的系统框图;
图2是本申请中网关服务器的结构图;
图3是本申请中网关服务器与业务服务器建立连接的方法流程图;
图4是本申请中网关服务器中工作流程图;
图5是本申请中Session服务器的结构图;
图6是本申请中Session服务器的工作流程图;
图7是本申请中业务服务器的结构图;
图8是本申请中业务服务器的工作流程图;
图9是本申请中注册服务器的结构图;
图10是本申请中注册服务器的工作流程图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请请求保护一种基于WebSocket的自动集群方法及其系统,其中该系统的结构图如图1所示,包括:多个客户端101、102,多个业务服务器103、104,注册服务器105,网关服务器106、Session服务器107以及登录服务器108。其中登录服务器106用于为客户端分配令牌token,客户端连接到网关服务器106之前,首先使用http连接调用接口请求获取令牌token,该令牌token唯一标识客户端,登录服务器106将分配给客户端的token持久存储到Session服务器中。客户端与网关服务器106建立WebSocket连接,将待处理任务附带token参数通过WebSocket通信连接发送到网关服务器106;类似的,网关服务器106和多个业务服务器建立WebSocket连接,在客户端待处理任务到达时,使用负载均衡机制,将待处理任务分配至相应的业务服务器;客户端与网关服务器106之间的Session信息保存在Session服务器中,Session信息在网关服务器和不同的业务服务器之间共享,当会话过期或被放弃后,网关服务器将终止该会话,并删除相应的Session信息;注册服务器105存储业务服务器的注册信息,并监控业务服务器的运行情况,在业务服务器发生下线或宕机时,自动感知并通知网关服务器106。同时,虽然图中只示出了一个网关服务器,但是本领域技术人员可以理解,本系统可包括多个网关服务器,同时为系统提供服务。
下面结合附图,详细介绍各个部件的内部构造,其中图2示出了网关服务器的构造,其中,网关服务器是一种WebSocket服务器,负责客户端的连接、权限认证、业务服务器的服务路由和自动负载均衡,包括:
多个Socket端口201,与外部设备通过Socket端口通信;
存储设备202,保存注册服务器推送的业务服务器的注册信息;
通信部件203,与注册的业务服务器建立WebSocket通信;
控制部件204,控制多个Socket端口201、存储设备202以及通信部件203,使其协调完成工作流程。
进一步地,客户端也经由通信部件,与网关服务器建立WebSocket通信。
网关服务器还包括连接池(未在图中示出),保存与注册的业务服务器建立的WebSocket通信连接。
该网关服务器的工作流程如图3和4所示,其中图3是网关服务器与业务服务器建立通信连接的过程,包括如下步骤:
步骤S301、与注册服务器建立Socket连接;
网关服务器在启动时,建立与注册服务器的Socket连接,并通过建立的Socket连接监听注册服务器所发送的信息。
步骤S302、通过Socket端口接收注册服务器推送的业务服务器的注册信息;
注册服务器通过Socket端口将业务服务器的注册信息推送到网关服务器,其中注册信息用以在网络中唯一标识一个业务服务器,包括例如业务服务器的名称、业务服务器的IP地址和/或对应的端口号。
步骤S303、与注册的业务服务器建立WebSocket通信连接。
在接收到业务服务器的注册信息之后,与该业务服务器建立WebSocket通信连接。
其中WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。通过第一次HTTPRequest建立了连接之后,后续的数据交换都不用再重新发送HTTP Request,节省了带宽资源;同时,WebSocket的连接是双向通信的连接,在同一个TCP连接上,既可以发送,也可以接收;具有多路复用的功能(multiplexing),也即几个不同的URI可以复用同一个WebSocket连接。通过使用WebSocket连接,实现了全双工通信、地址复用,同时可以节省网络带宽。
以上介绍了网关服务器与业务服务器建立连接的过程,下面结合图4介绍网关服务器工作的流程,包括:
步骤S401、与客户端建立WebSocket通信连接;
包括如下子步骤:
步骤S4011、客户端向网关服务器发送token参数;
该token参数是客户端在连接到网关服务器之前使用http连接调用接口请求从登录服务器获取的令牌token,并且该token会持久存储到Session服务器中。
步骤S4012、网关服务器接收到token参数后将其发送到Session服务器中;
步骤S4013、Session服务器将获得的token参数与其保存的所有token参数作比较,如果比较成功则返回成功消息,否则返回验证失败消息;
步骤S4014、网关服务器收到成功消息后,与客户端建立WebSocket连接。
步骤S402、接收客户端发送的Session信息;
Session对象存储特定用户会话所需的属性及配置信息。这样,当客户端与服务器端创建连接以后,每次请求,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端首次创建连接时,如果该客户端还没有会话,则网关服务器将自动创建一个Session对象。
当会话过期或被放弃后,网关服务器将终止该会话,并通知业务服务器删除相应的Session信息。
步骤S403、将Session信息保存到Session服务器;
步骤S404、从连接池中选择匹配的连接,将客户端的任务转发到选择的一个或多个业务服务器。
根据Session信息,例如需要执行的任务的类型,任务执行的时间,任务量大小,选择与其匹配的具有相应处理能力的业务服务器,同时兼顾该业务服务器的业务处理量,即从连接池中选择与该业务服务器对应的WebSocket连接,将客户端的任务转发到选择的一个或多个业务服务器。
下发的任务中携带Session信息,指明该任务所属的会话ID(SessionID)以及下发任务的网关服务器标识(GateID)。
步骤S405、接收业务服务器返回的信息,并转发到相应的客户端;
处理完的任务中携带的上述SessionID以及GateID,根据GateID,将处理完的任务发送到相应的网关服务器。进一步根据SessionID,通过查询Session服务器,将其转发到相应的客户端。
步骤S406、在注册服务器发送业务服务器断开信息时,删除连接池中与断开的业务服务器相应的连接。
下面结合附图5、6介绍Session服务器及其工作方式,其中Session服务器是用来存储客户端连接到服务器连接信息的服务器,Session信息在网关服务器和不同的业务服务器之间共享,Session服务器构造如图5所示,包括:
收发器501,用于接收和发送信息;
信息包括Session信息和token参数。
数据库502,用于保存Session信息以及token参数;
控制器503,控制收发器501和数据库502,并且在网关服务器发送会话终止信息时,删除数据库502中相应的Session信息。
图6为Session服务器的保存Session的工作流程,包括:
步骤S601、接收网关服务器发送的Session信息;
步骤S602、将Session信息保存在数据库中;
步骤S603、根据网关服务器发送的指令查询、发送和/或删除Session信息。
通过使用专门的Session服务器保存Session信息,可实现Session信息的统一管理,同时使得Session信息可以在不同的网关服务器和业务服务器之间实现共享,例如session信息存放于数据表中,多台网关服务器之间根据sessionID去获取session的具体信息。
下面介绍Session服务器保存token参数的工作流程,包括:
步骤P1、接收登录服务器发送的token参数;
步骤P2、将token参数存储到数据库中;
步骤P3、根据网关服务器发送的指令查询token参数,并返回查询结果;
步骤P4、根据登录服务器发送的指令修改、删除token参数。
下面结合附图7和图8介绍业务服务器及其完成任务的流程,其中业务服务器负责对应的业务处理,当启动业务服务器的时候就向注册服务器增加对应的业务员服务器注册信息,注册服务器通知网关服务器并进行连接池的连接增加,当业务服务器停止或宕机时注册服务器就会将业务服务器信息删除,并通知网关服务器更新连接池。其中业务服务器的构造如图7所示,包括:
接收/发送装置701,用于与外部设备通信;
执行部件702,控制接收/发送装置701,并执行如图8所示的方法。
其工作流程如图8所示,包括
步骤S801、通过WebSocket接收网关服务器下发的任务;
下发的任务中携带Session信息,指明该任务所属的会话ID(SessionID)以及下发任务的网关服务器标识(GateID)。
步骤S802、处理任务;
步骤S803、将处理完的任务通过WebSocket发送到相应的网关服务器。
下面结合图9和图10介绍注册服务器的构造及其工作流程,其中注册服务器是一种Socket服务器,用来存储业务服务器的注册信息,对外提供接口供业务服务器注册用,当业务服务器下线或宕机能够自动感知,并自动推送注册信息以及下线或宕机信息到网关服务器。由于采取推送的方式,从而使得网关服务器可实现自动感知业务服务器的状态而无需对其进行特殊管理的效果。其包括如下部件:
多个注册Socket端口901,与外部设备通过Socket端口通信;
注册信息表902,保存业务服务器发送的注册信息;
控制器903,控制注册Socket端口与业务服务器和网关服务器分别建立Socket连接,通过与业务服务器建立的Socket连接接收业务服务器发送的注册信息,并将其保存到注册信息表,将注册信息表中的信息推送到网关服务器,并且在与注册服务器的Socket连接断开时,触发连接断开事件,并通过相应的Socket端口向网关服务器发送业务服务器断开信息。
其中连接断开事件包括从注册信息表中删除断开的业务服务器的注册信息
其中注册服务器注册的工作过程如图10所示,包括:
步骤S1001、注册服务器与网关服务器建立Socket连接;
步骤S1002、注册服务器判断是否有业务服务器发送注册请求或断开请求,如果是注册请求则执行步骤P1001,如果是断开请求则执行步骤D1001;
其中注册请求可通过业务服务器请求于注册服务器建立Socket连接判断,断开请求可通过业务服务器和注册服务器断开Socket连接判断。也可通过其他消息机制,例如广播通讯等实现。
步骤P1001、与请求注册的业务服务器建立Socket连接;
步骤P1002、通过建立的Socket连接接收业务服务器发送的注册信息;
其中注册信息用以在网络中唯一标识一个业务服务器,包括例如业务服务器的名称、业务服务器的IP地址和/或对应的端口号。
步骤P1003、向网关服务器推送业务服务器的注册信息。
步骤D1001、注册服务器触发连接断开事件;
包括删除该业务服务器的注册信息。
步骤D1002、注册服务器向网关服务器发送业务服务器断开信息。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。