基于资源池的websocket负载均衡方法及系统技术方案

技术编号:33715035 阅读:14 留言:0更新日期:2022-06-06 08:56
本申请提供了一种基于资源池的websocket负载均衡方法及系统,涉及数据通信领域,可应用于金融领域和其他领域,所述方法包含:根据websocket服务端和客户端模拟构建虚拟服务接口和虚拟客户接口;通过所述虚拟客户接口与websocket服务端建立通信连接,将所述通信连接加入连接资源池;根据虚拟服务接口接收到的客户端提供的请求数据,通过最优链路算法于所述连接资源池中获得对应的所述通信连接,将所述请求数据通过所述通信连接提供至websocket服务端。以此,资源池中所有连接的一致性,解决了链接建立成功后,所有请求必须通过同一链接进行下发的限制,实现了真正意义上的负载均衡。衡。衡。

【技术实现步骤摘要】
基于资源池的websocket负载均衡方法及系统


[0001]本申请涉及数据通信领域,可应用于金融领域和其他领域,尤指一种基于资源池的websocket负载均衡方法及系统。

技术介绍

[0002]WebSocket作为一种在单个TCP连接上进行全双工通信的协议,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。相比传统的HTTP协议,它具有控制开销少、实时性强、有状态连接、便于支持二进制数据、便于扩展等一系列优点,因此在一些在线客服、协同办公、股市基金报价等应用场景中被广泛采用。为进一步提高应用系统的健壮性和性能,通常会在前端采用负载均衡方案,以消除系统的单点故障,提高系统的并发处理能力。
[0003]目前最常见的负载均衡部署方式是采用NGINX作为反向代理,NGINX为一种开源的轻量级Web服务器和反向代理服务器及电子邮件服务器,其特点是占用内存少、并发能力强,且运行稳定、配置简单、扩展方便,因此被广泛使用,尤其是作为反向代理服务器,广泛用于作为软件负载均衡。其为后端的WebSocket应用提供负载均衡支持,解决方案是配置多个upstream实现负载均衡。NGINX支持轮询、IP哈希、URL哈希、权重等多种负载均衡算法,理论可以实现较好的负载均衡效果。但是,一般情况下WebSocket应用在通信过程中需要携带状态信息,开发人员在开发过程中,通常会将这些状态信息通过集合进行管理,存储在内存中。因此对于多节点分布式架构,只能采用IP哈希负载均衡策略,IP哈希为一种负载均衡策略算法,其原理是根据客户端的IP地址计算出一个哈希值,并依据该哈希值,将客户端连接下发到负载均衡后端的对应节点上。该算法可以确保来自同一客户端的连接始终被转发到同一后端节点,因此在需要会话保持的应用场景中,通常必须采用该负载均衡策略。以保证同一用户的请求连接转发到同一台服务器上,从而解决状态信息不一致的问题。
[0004]现有采用IP哈希负载均衡策略的解决方案,在技术上存在一些重大缺陷,主要表现在以下几个方面:无法应对NAT网络环境:多个客户端采用NAT方式访问应用系统时,对于NGINX来说,由于不同客户端的IP地址完全一样,其连接将会被分配给同一个后端处理节点,从而导致负载均衡机制失效。容错性差:一旦所绑定的后端处理节点出现故障,用户的所有会话信息都会丢失。负载均衡手段单一:仅是根据客户端的IP地址进行负载转发,本质上只能作用于负载建立之前,无法针对不同连接的信息交互压力情况进行进一步优化,可能会出现某一连接信息交互频繁而其他连接闲置的情况。

技术实现思路

[0005]本申请目的在于提供一种基于资源池的websocket负载均衡方法及系统,基于资源池的理念实现websocket带状态信息通信的负载均衡方案,可有效解决该矛盾,可实现websocket连接建立前与建立后会话两个层面的负载均衡功能。
[0006]为达上述目的,本申请所提供的基于资源池的websocket负载均衡方法,具体包含:根据websocket服务端和客户端模拟构建虚拟服务接口和虚拟客户接口;通过所述虚拟客户接口与websocket服务端建立通信连接,将所述通信连接加入连接资源池;根据虚拟服务接口接收到的客户端提供的请求数据,通过最优链路算法于所述连接资源池中获得对应的所述通信连接,将所述请求数据通过所述通信连接提供至websocket服务端。
[0007]在上述基于资源池的websocket负载均衡方法中,可选的,通过所述虚拟客户接口与websocket服务端建立通信连接,将所述通信连接加入连接资源池包含:通过所述虚拟客户接口与websocket服务端建立通信连接,根据连接结果生成对应的路径编号;根据所述路径编号和所述websocket服务端生成连接资源,将所述连接资源加入连接资源池。
[0008]在上述基于资源池的websocket负载均衡方法中,可选的,根据虚拟服务接口接收到的客户端提供的请求数据包含:通过所述虚拟服务接口拦截客户端向websocket服务端发起的连接请求,解析所述连接请求获得会话控制数据;所述虚拟服务接口根据所述会话控制数据接收到的客户端发起的会话请求,根据所述会话请求获得所述请求数据。
[0009]在上述基于资源池的websocket负载均衡方法中,可选的,解析所述连接请求获得会话控制数据还包含:当所述连接资源池内所述通信连接为空时,关闭所述连接请求。
[0010]在上述基于资源池的websocket负载均衡方法中,可选的,所述虚拟服务接口根据所述会话控制数据接收到的客户端发起的会话请求,根据所述会话请求获得所述请求数据包含:根据所述会话控制数据生成会话控制编号,将所述会话控制编号和所述会话控制数据关联后存储;根据所述虚拟服务接口接收到的客户端发起的会话请求,解析所述会话请求获得会话控制数据和会话消息;根据所述会话控制数据查询获得对应的所述会话控制编号,将所述会话控制编号加入所述会话消息获得所述请求数据。
[0011]在上述基于资源池的websocket负载均衡方法中,可选的,所述方法还包含:通过所述虚拟客户接口获得websocket服务端提供的推送消息,解析所述推送消息获得所述会话控制编号;根据所述会话控制编号查询获得对应的所述会话控制数据,根据所述会话控制数据推送所述websocket服务端提供的推送消息。
[0012]在上述基于资源池的websocket负载均衡方法中,可选的,所述方法还包含:通过单独的线程监测所述连接资源池内所述通信连接的运行状态;当所述运行状态为异常状态时,移除对应的所述通信连接并重新进行连接,将连接成功的通信连接加入所述连接资源池。
[0013]本申请还提供一种基于资源池的websocket负载均衡系统,,所述系统包含客户端、中间层和websocket服务端;所述中间层用于根据websocket服务端和客户端模拟构建虚拟服务接口和虚拟客户接口;通过所述虚拟客户接口与websocket服务端建立通信连接,将所述通信连接加入连接资源池;根据虚拟服务接口接收到的客户端提供的请求数据,通过最优链路算法于所述连接资源池中获得对应的所述通信连接,将所述请求数据通过所述通信连接提供至websocket服务端。
[0014]本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
[0015]本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
[0016]本申请还提供一种计算机程序产品,包括计算机程序/指令,,该计算机程序/指令被处理器执行时实现上述方法的步骤。
[0017]本申请的有益技术效果在于:通过伪客户端与服务端建立连资源池,暴露给客户端的是同一个连接标记,客户端在发起请求后,可本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于资源池的websocket负载均衡方法,其特征在于,所述方法包含:根据websocket服务端和客户端模拟构建虚拟服务接口和虚拟客户接口;通过所述虚拟客户接口与websocket服务端建立通信连接,将所述通信连接加入连接资源池;根据虚拟服务接口接收到的客户端提供的请求数据,通过最优链路算法于所述连接资源池中获得对应的所述通信连接,将所述请求数据通过所述通信连接提供至websocket服务端。2.根据权利要求1所述的基于资源池的websocket负载均衡方法,其特征在于,通过所述虚拟客户接口与websocket服务端建立通信连接,将所述通信连接加入连接资源池包含:通过所述虚拟客户接口与websocket服务端建立通信连接,根据连接结果生成对应的路径编号;根据所述路径编号和所述websocket服务端生成连接资源,将所述连接资源加入连接资源池。3.根据权利要求1所述的基于资源池的websocket负载均衡方法,其特征在于,根据虚拟服务接口接收到的客户端提供的请求数据包含:通过所述虚拟服务接口拦截客户端向websocket服务端发起的连接请求,解析所述连接请求获得会话控制数据;所述虚拟服务接口根据所述会话控制数据接收到的客户端发起的会话请求,根据所述会话请求获得所述请求数据。4.根据权利要求3所述的基于资源池的websocket负载均衡方法,其特征在于,解析所述连接请求获得会话控制数据还包含:当所述连接资源池内所述通信连接为空时,关闭所述连接请求。5.根据权利要求3所述的基于资源池的websocket负载均衡方法,其特征在于,所述虚拟服务接口根据所述会话控制数据接收到的客户端发起的会话请求,根据所述会话请求获得所述请求数据包含:根据所述会话控制数据生成会话控制编号,将所述会话控制编号和所述会话控制数据关联后存储;根据所述虚拟服务接口接收到的客户端发起的会话请求,解析所述会话请...

【专利技术属性】
技术研发人员:张曼曼
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1