TCP长连接服务器负载均衡系统及方法与流程

文档序号:20701270发布日期:2020-05-12 15:44阅读:1885来源:国知局
TCP长连接服务器负载均衡系统及方法与流程

本发明解决了服务器集群与终端通讯中,采用tcp长连接作为通讯方式时的在服务器端实现负载均衡的问题。可以广泛运用于银行、证券等需要通过tcp长连接接入大量终端,并对系统整体可靠性要求较高的系统。



背景技术:

tcp通讯是目前被广泛采用的系统间通讯方式。其中,很多系统在终端与服务器间选用tcp长连接作为通讯方式,即在终端与服务器通讯时,tcp链路通过三次握手建立完成后,一直保持这一链路用于与服务器之间的后续报文通讯。tcp长连接在安全性、效率等方面较短连接(即每次通讯均建链、断链的通讯方式)都有一定优势。但同时,由于服务器需要为每台联机的终端保持tcp链路,当终端数量较多时,受服务器操作系统限制以及服务器资源限制,服务器能够同时保持的链接数量有限,当系统规模扩大,为支持更多的终端接入,通常在服务器端需要部署多个专门用于通讯的tcp网关应用。这时需要采用一定的负载均衡策略将终端分散连接到各个tcp网关应用。目前常见的tcp长连接的负载均衡实现方式有:

·硬件负载均衡

即采用在终端与服务器tcp网关之间部署硬件负载均衡设备,例如f5。

优点:负载均衡算法灵活可配,且对应用完全透明。

缺点:由于tcp链接长期保持,大量占用硬件负载均衡设备的资源。成本非常高。

·静态负载均衡

即事先分配终端连接的tcp网关。

优点:实现方式简单,不需要对现有应用作改造。

缺点:一旦一个tcp网关故障,所有指向该网关的终端均无法使用。

·终端负载均衡

在终端保存tcp网关的列表,终端在准备建立连接时按照一定的策略选择其中一个发起建链请求。当一个tcp网关连接失败时,自动选择另一个tcp网关尝试建链。

优点:克服了服务器端单点故障问题。

缺点:终端应用需要单独代码以支持以上逻辑。另外,当tcp网关发生变化(增加/减少)时,还需要实现额外机制通知到每一台终端,进一步增加了终端应用的复杂程度。

本发明综合考虑服务器和终端应用的特点,有效避免上述常见负载均衡的缺点,实现了面向tcp长连接通讯的服务器端动态负载均衡系统,可以支持独立于现有应用部署。



技术实现要素:

该发明针对大量终端采用tcp长连接与服务器系统通讯的系统,实现面向tcp长连接基于服务器负载的动态负载均衡系统。该系统主要包括三个服务模块(参见图1):

tcp网关服务

tcp网关管理服务

tcp代理服务

上述服务模块分别部署在服务器和终端中,介于终端应用和服务器应用之间。其中,tcp网关服务和tcp网关管理服务部署在服务器端,tcp代理服务部署在终端。各服务模块的功能如下:

tcp网关服务

1.提供tcp套接字服务器接口,管理并保持终端应用或者在终端运行的tcp代理服务建立的tcp长连接通讯链路。

2.双向转发报文,即将终端应用通过tcp代理服务发来的报文转发给后台服务端应用,并将后台服务端应用回应报文转发给终端。

tcp网关管理服务

1.集中监控tcp网关服务模块各运行实例的负载及健康状况。

2.面向终端提供分配tcp网关服务运行实例的服务。

tcp代理服务

1.代理终端的tcp长连接通讯,即提供tcp套接字服务器接口,接受终端应用的建链并保持建立起来的tcp通讯链路。并在与终端建链完成后作为tcp套接字客户端向tcp网关服务发起建链,并保持建立的tcp链路。

2.双向转发报文,即将终端应用发来的报文通过tcp网关服务转发给后台服务端应用,并将通过tcp网关服务转发来的后台服务端应用回应的报文发送给终端应用。

3.在每次需要与tcp网关服务发起建链前,调用tcp网关管理服务接口,获取tcp网关服务的服务地址和端口信息。

本发明中各服务模块的工作流程如下(参见图2):

1.tcp网关服务定时输出当前负载状态信息。输出支持多种方式(根据系统环境选择其一部署):

1)负载信息定期输出到指定的缓存或者文件。

2)调用tcp网关管理的服务接口,直接上传负载信息到tcp网关管理服务。

3)提供负载查询接口,供tcp网关管理服务直接查询tcp网关服务负载情况。

2.tcp网关管理服务获取tcp网关服务的负载状态信息。与tcp网关服务对应的两种方式获取tcp网关服务负载信息:

1)对应1-1),定时读取缓存或者文件获取tcp网关服务的负载信息。

2)对应1-2),接收tcp网关通过实时通讯获取tcp网关服务的负载信息。

3)对应1-3),调用tcp网关负载查询接口,获取tcp网关服务的负载信息。

3.终端应用启动后向同处于终端系统运行的tcp代理服务发送tcp建链请求。

4.tcp代理服务接受终端应用建链请求,并立即向预先配置的tcp网关管理服务发送分配tcp网关请求报文。

5.tcp网关管理服务接收到tcp代理服务发来的分配tcp网关请求报文后,根据系统策略要求,计算并分配tcp网关,并将所tcp网关服务信息(服务器地址及端口号)发还给tcp代理服务。分配策略包括但不限于:

1)平均负载

2)轮流负载(round-robin)

3)优先群组

6.tcp代理服务收到tcp网关服务信息后,向tcp服务网关发起建链请求,并保持建好的tcp链路。至此,完成tcp长连接通道的建立。

7.tcp网关服务收到tcp代理服务的建链请求后接受建链请求,并保持建立好的tcp链路,同时采用与步骤1相同的方式向tcp网关管理服务更新负载信息。

8.当终端应用需要发送报文到服务端应用时,报文先发送到tcp代理。

9.tcp代理服务收到终端应用报文后转发到tcp网关服务。

10.tcp网关服务收到终端发来报文后转发到服务器端应用(或者应用集群)。

11.当服务器端应用需要发送数据给客户端时,例如响应报文或命令报文等,报文先发送到tcp网关服务。

12.tcp网关服务将服务器应用报文转发给对应终端的tcp代理服务。

13.tcp代理服务将服务器应用报文转发给终端应用。

附图说明

图1本发明所涉及的tcp长连接服务器负载均衡模块关系图

图2本发明所涉及的tcp长连接服务器负载均衡工作流程图

具体实施方式

tcp网关服务

可采用多种编程语言及第三方框架实现,包括但不限于c/c++、java、groovy、python等等。

根据需要接入的终端数量及系统高可靠的冗余情况在一台或多台服务器中部署多个运行实例。

由于终端的tcp长连接链路已经由tcp网关服务接管,服务器应用可以改造为基于短连接(按需连接)的工作模式,例如tcp短连接(按需连接)、http请求等,以降价服务器应用的资源占用。

tcp网关管理服务

可采用多种编程语言及第三方框架实现,包括但不限于c/c++、java、groovy、python等等。

根据系统高可靠的要求,tcp网关管理服务可以在一台或多台服务器中部署一个或多个运行实例。

tcp代理服务

可采用多种编程语言及第三方框架实现,包括但不限于c/c++、java、groovy、python等等。

为保证不干扰终端应用和服务器应用工作模式,当tcp代理服务检测到终端应用断链,应在向tcp网关服务发送完缓存中待发送报文后断掉同tcp网关服务的链路。反之亦然,当tcp代理服务与tcp网关服务链路中断时,tcp代理服务应向终端应用发送完缓存中待发送报文后断掉同终端应用的链路。

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