一种负载均衡方法、装置、设备和计算机存储介质与流程

文档序号:28068693发布日期:2021-12-18 00:05阅读:60来源:国知局
一种负载均衡方法、装置、设备和计算机存储介质与流程

1.本技术涉及金融科技(fintech)的云计算技术领域,尤其涉及一种负载均衡方法、装置、电子设备和计算机存储介质。


背景技术:

2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
3.相关技术中,针对负载均衡,存在基于硬件的f5设备,或基于软件的nginx(engine x)、linux虚拟服务器(linux virtual server,lvs)等几种典型的负载均衡方案;然而,上述方案在使用传输控制协议(transmission control protocol,tcp)长连接的情况下,难以确保负载均衡器后面的各个服务器节点所处理的消息量是相对均衡的;即,很可能存在将很多业务量高的业务ip同时发送到同一个处理服务器节点上,造成服务器过载的问题,进而,影响整个服务器集群的处理能力。


技术实现要素:

4.本技术提供一种负载均衡方法、装置、电子设备和计算机存储介质,可以解决相关技术中在基于tcp长连接进行消息传输时的服务器过载问题。
5.本技术的技术方案是这样实现的:
6.本技术实施例提供了一种负载均衡方法,所述方法包括:
7.接收到多个客户端中每个客户端发送的连接请求后,获取当前网络中每个服务器的负载值;根据所述每个服务器的负载值,确定所述每个客户端的服务器清单,向所述每个客户端下发对应的服务器清单;所述服务器清单中包括至少两个服务器;
8.在确定所述每个客户端与对应的服务器清单中每个服务器建立tcp长连接后,重新获取所述当前网络中每个服务器的负载值;根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器;
9.查找与所述目标服务器连接的目标客户端,调整所述目标客户端的服务器清单;所述目标客户端为所述多个客户端中的一个客户端。
10.在一些实施例中,所述查找与所述目标服务器连接的目标客户端,包括:
11.获取与所述目标服务器建立tcp长连接的至少两个客户端;
12.根据所述至少两个客户端中每个客户端向所述目标服务器发送的消息量,从所述至少两个客户端中,将发送消息量最小的客户端确定为所述目标客户端,或者,将发送消息量小于或等于第一设定阈值的任一客户端确定为所述目标客户端。
13.可以理解地,由于目标服务器是当前网络中不满足设定负载均衡条件的服务器,因而,需要对目标服务器的负载值进行调整使其达到均衡状态;而目标服务器的负载值是与其连接的每个客户端发送的消息量确定的,因而,基于每个客户端向所述目标服务器发送的消息量,可以有针对性地确定目标客户端;另外,从与目标服务器连接的每个客户端
中,选择发送消息量最小或小于某一设定阈值的客户端作为目标客户端,可以有效防止后续对目标服务器进行负载调整时的抖动问题,确保系统的稳定性。
14.在一些实施例中,所述根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器,包括:
15.对所述重新获取的每个服务器的负载值进行排序,得到排序结果;
16.从所述排序结果中,得到负载值最高的服务器与负载值最低的服务器;在确定所述负载值最高的服务器与所述负载值最低的服务器的负载差值大于第二设定阈值时,将所述负载值最高的服务器确定为不满足所述设定负载均衡条件的目标服务器;或者,
17.将所述排序结果中负载值大于第三设定阈值的任一服务器确定为不满足所述设定负载均衡条件的目标服务器。
18.可以看出,本技术实施例,在获取到每个服务器的负载值,通过每个服务器的负载值进行排序,可以更加直观地从排序结果中确定出不满足设定负载均衡条件的目标服务器。另外,通过将负载值最高或大于某一设定阈值的服务器确定为目标服务器,以进行后续的负载均衡调整,可以避免因为该目标服务器处理能力低下,而影响整个服务器集群的处理能力。
19.在一些实施例中,所述调整所述目标客户端的服务器清单,包括:
20.将所述目标客户端的服务器清单中负载值最高的服务器移除,并向所述目标客户端的服务器清单中新增一个当前负载值最低的服务器。
21.可以看出,本技术实施例通过将目标客户端的服务器清单中负载值最高的服务器移除,可以降低因该服务器继续处理目标客户端的业务数据而出现过载的风险。
22.在一些实施例中,所述方法还包括:
23.在接收所述多个客户端中每个客户端发送的连接请求之前,接收所述当前网络中每个服务器上报的负载确定参数;所述负载确定参数包括服务器的连接数、服务器在上一统计周期的处理消息量以及服务器上次被分配给客户端的时间中的至少一项;
24.所述获取当前网络中每个服务器的负载值,包括:
25.根据所述当前网络中每个服务器上报的负载确定参数,确定当前网络中每个服务器的负载值。
26.可以看出,本技术实施例,基于当前网络中每个服务器上报的负载确定参数,可以准确地得到每个服务器的负载值。
27.在一些实施例中,在所述负载确定参数包括服务器的连接数、服务器在上一统计周期的处理消息量以及服务器上次被分配给客户端的时间的情况下,所述负载确定参数还包括连接数权重值、处理消息量权重值、以及时间参数权重值;
28.所述根据所述当前网络中每个服务器上报的负载确定参数,确定当前网络中每个服务器的负载值,包括:
29.根据所述当前网络中每个服务器上报的服务器的连接数与所述连接数权重值、服务器在上一统计周期的处理消息量与处理消息量权重值、服务器上次被分配给客户端的时间与时间参数权重值,确定当前网络中每个服务器的负载值。
30.可以看出,本技术实施例,通过对负载确定参数中包括的参数作进一步限定,可以更加准确地得到当前网络中每个服务器的负载值。
31.在一些实施例中,所述方法还包括:
32.在当前统计周期内,每完成一次服务器清单的调整,对调整次数执行加1操作;
33.计算所述当前统计周期内调整所述服务器清单的总调整次数与所述当前网路中每个服务器的总连接数的比值,得到所述当前统计周期的调整会话占比;
34.根据所述调整会话占比与第四设定阈值的大小关系,确定是否继续调整所述当前统计周期内的服务器清单。
35.可以看出,本技术实施例,通过当前统计周期的调整会话占比对当前统计周期的服务器清单的调整次数进行控制,可以防止因出现大面积的服务器连接调整而导致系统稳定性差的问题。
36.在一些实施例中,所述根据所述调整会话占比与第四设定阈值的大小关系,确定是否继续调整所述当前统计周期内的服务器清单,包括:
37.在确定所述调整会话占比大于或等于所述第四设定阈值时,等待所述当前统计周期结束;
38.在确定所述调整会话占比小于所述第四设定阈值、且确定存在不满足设定负载均衡条件的目标服务器时,继续调整所述当前统计周期内的服务器清单。
39.可以看出,本技术实施例,通过调整会话占比与第四设定阈值的比较,对当前统计周期的服务器清单的调整次数进行控制,实现在当前统计周期负载均衡的同时还可以确保系统的稳定性。
40.本技术实施例还提出了一种负载均衡装置,所述装置包括第一确定模块、第二确定模块和调整模块,其中,
41.第一确定模块,用于接收到多个客户端中每个客户端发送的连接请求后,获取当前网络中每个服务器的负载值;根据所述每个服务器的负载值,确定所述每个客户端的服务器清单,向所述每个客户端下发对应的服务器清单;所述服务器清单中包括至少两个服务器;
42.第二确定模块,用于在确定所述每个客户端与对应的服务器清单中每个服务器建立tcp长连接后,重新获取所述当前网络中每个服务器的负载值;根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器;
43.调整模块,用于查找与所述目标服务器连接的目标客户端,调整所述目标客户端的服务器清单;所述目标客户端为所述多个客户端中的一个客户端。
44.本技术实施例提供一种电子设备,所述设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述一个或多个技术方案提供的负载均衡方法。
45.本技术实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后能够实现前述一个或多个技术方案提供的负载均衡方法。
46.本技术实施例提出了一种负载均衡方法、装置、电子设备和计算机存储介质,所述方法包括:接收到多个客户端中每个客户端发送的连接请求后,获取当前网络中每个服务器的负载值;根据所述每个服务器的负载值,确定所述每个客户端的服务器清单,向所述每个客户端下发对应的服务器清单;所述服务器清单中包括至少两个服务器;在确定所述每个客户端与对应的服务器清单中每个服务器建立tcp长连接后,重新获取所述当前网络中
每个服务器的负载值;根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器;查找与所述目标服务器连接的目标客户端,调整所述目标客户端的服务器清单;所述目标客户端为所述多个客户端中的一个客户端。
47.可以看出,本技术实施例中,在客户端与服务器建立连接之前,通过获取当前网络中每个服务器的负载值,可以确定允许每个客户端连接的服务器清单;即,可以将客户端连接到多个负载值较低的服务器上,使得该客户端的业务量更加均衡的发送到不同的服务器上进行处理。进一步地,在客户端与服务器建立连接之后,如果发现不满足设定负载均衡条件的目标服务器,则调整与该目标服务器连接的目标客户端的服务器清单,达到控制整个服务器集群的综合负载的目的,保持每个服务器负载值的动态均衡,有效解决服务器过载的问题。
附图说明
48.图1a是相关技术中的一种负载均衡的结构示意图;
49.图1b是相关技术中的另一种负载均衡的结构示意图;
50.图2a是本技术实施例中的一种负载均衡方法的流程示意图;
51.图2b是本技术实施例中的一种负载均衡调整的结构示意图;
52.图2c为本技术实施例的另一种负载均衡方法的流程示意图;
53.图2d是本技术实施例中的另一种负载均衡调整的结构示意图;
54.图3是本技术实施例的负载均衡装置的组成结构示意图;
55.图4是本技术实施例提供的电子设备的结构示意图。
具体实施方式
56.以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本技术,并不用于限定本技术。另外,以下所提供的实施例是用于实施本技术的部分实施例,而非提供实施本技术的全部实施例,在不冲突的情况下,本技术实施例记载的技术方案可以任意组合的方式实施。
57.需要说明的是,在本技术实施例中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其它要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
58.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,i和/或j,可以表示:单独存在i,同时存在i和j,单独存在j这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括i、j、r中的至少一种,可以表示包括从i、j和r构成的集合中选择的任意一个或多个元素。
59.例如,本技术实施例提供的负载均衡方法包含了一系列的步骤,但是本技术实施例提供的负载均衡方法不限于所记载的步骤,同样地,本技术实施例提供的负载均衡装置包括了一系列模块,但是本技术实施例提供的负载均衡装置不限于包括所明确记载的模
块,还可以包括为获取相关任务数据、或基于任务数据进行处理时所需要设置的模块。
60.本技术实施例可以应用于服务端组成的计算机系统中,并可以与众多其它通用或专用计算系统环境或配置一起操作。这里,服务端可以是包括小型计算机系统﹑大型计算机系统的分布式云计算技术环境,等等。
61.服务端等电子设备可以通过程序模块的执行实现相应的功能。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务端可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
62.目前,基于tcp的连接有长连接和短连接,其中对处理消息量大、实时性要求高的场景,都会选择使用tcp长连接来保证系统的吞吐率和时延低。
63.对于大多数应用场景,采用基于硬件的f5设备,或基于软件的nginx、lvs等几种典型的负载均衡方案是可以很好满足的,但也有例外,如果希望在使用tcp长连接的情况下,确保负载均衡器后面的各个服务器节点处理的消息量相对均衡,采用上述方案是难以实现的。
64.这是因为不同类型的业务,其数据传输的量级往往是相差很大的,有些业务的ip实例的处理量可能只有几笔业务,而有些业务的ip实例可能会有几十万,甚至上百万的业务量,所以对于这两类业务的ip实例,不管采集何种负载均衡的调度算法,一旦负载均衡调度器做完决策后,业务ip根据负载均衡调度器分配的服务器连接成功后,负载均衡调度器就不再干预业务ip与服务器间的数据交换,因此,难免会导致服务器节点处理的消息量存在较大的差别,这可能存在很多业务量高的ip会同时发送到同一个处理服务器节点上的情况,造成服务器过载;下面通过图1a进行说明,如图1a所示,客户端1和客户端2传输的数据流量都是3kb/s,但是客户端3和客户端4传输的数据流量是1mb/s;负载均衡调度器按连接数来分配,服务器1和服务器2都分到了两个连接,但是这两个服务器处理的消息量完全不在一量级上。
65.相关技术中,对于基于tcp长连接的负载均衡,也有主流的解决方案,其核心思路可以参照图1b;通过引入反向代理服务器,并建立反向代理服务器与每个客户端间之间的连接,保持客户端与服务器之间的tcp长连接会话,然后使用一定的负载均衡算法,将消息转发给后端的服务器集群(服务器1至服务器n);这里,使用的负载均衡算法有:平均负载、轮询负载、优先群组等。
66.可以看出,上述方案虽然可以解决tcp长连接情况下,服务器的负载均衡问题,但是该方案存在以下缺点:
67.1)在其中一个服务器异常时,需要客户端重新连接反向代理服务器,这样会影响客户端与服务器断连期间的业务。
68.2)反向代理服务器也有可能存在网卡容量或是连接数上限的问题。
69.3)反向代理服务器的处理能力不够时,难以完成服务器的扩容。
70.可见,通过引入反向代理服务器虽然可以解决tcp长连接情况下,服务器的负载均衡问题,但是因为上述缺点使得该方案具有一定的难度。
71.针对上述技术问题,提出以下各实施例。
72.在本技术的一些实施例中,负载均衡方法可以利用负载均衡装置中的处理器实现,上述处理器可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程逻辑门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。
73.图2a是本技术实施例中的一种负载均衡方法的流程示意图,如图2a所示,该方法包括如下步骤:
74.步骤200:接收到多个客户端中每个客户端发送的连接请求后,获取当前网络中每个服务器的负载值;根据每个服务器的负载值,确定每个客户端的服务器清单,向每个客户端下发对应的服务器清单;服务器清单中包括至少两个服务器。
75.示例性地,客户端用来接入具体的业务数据,并将业务数据转发给后端的服务器,做后续进一步的处理;服务器属于后端处理模块,用于对客户端转发的业务数据进行加工处理。
76.本技术实施例中,负载均衡方法是在客户端与服务器建立tcp长连接的情况下,对当前网络中各服务器的负载值进行均衡的一种方法;示例性地,在多个客户端中的每个客户端与服务器建立tcp长连接之前,客户端并不清楚当前网络中哪些服务器可用;因而,当每个客户端需要向服务器发送业务数据时,需要先向调度模块发送连接请求,这样,调度模块便可接收到多个客户端中每个客户端发送的连接请求。这里,通过引入调度模块,可以降低每个客户端与服务器之间的连接管理复杂度;下面结合图2b对调度模块进行具体说明。
77.图2b是本技术实施例中的一种负载均衡调整的结构示意图,如图2a所示,该结构图包括:客户端1、客户端2、服务器1至服务器n以及调度模块;其中,调度模块的一端分别与客户端1、客户端2连接,负责接收这两个客户端发送的连接请求;调度模块的另一端分别与当前网络中的n个服务器连接,用于收集n个服务器中每个服务器上报的与自身负载情况相关的数据;客户端1与服务器1和服务器1连接,客户端2与服务器2和服务器3连接;即,客户端可以同时连接多个服务器。
78.可以看出,与相关技术中需要在客户端与服务器之间引入反向代理服务器相比,本技术实施例不需要引入反向代理服务器,而是由每个客户端直接与对应服务器进行连接,即,不需要通过反向代理服务器与每个服务器连接,因而可以解决相关技术因反向代理服务器存在网卡容量或连接数上限,导致负载均衡实现难度较高的问题;另外,本技术实施例允许客户端同时连接多个服务器节点;这样,在其中一个服务器异常时,客户端还可以通过其它服务器节点继续进行业务处理,即,不会影响客户端与异常服务器断连期间的业务,确保服务器的高可用;进一步地,在某个服务器出现下线、升级、重启等变更或异常时,本技术实施例中还可以快速完成服务器的扩容,可以解决相关技术因反向代理服务器处理能力有限,导致服务器扩容难度较高的问题。
79.在一些实施例中,上述方法还可以包括:在调度模块接收多个客户端中每个客户端发送的连接请求之前,接收当前网络中每个服务器上报的负载确定参数。
80.示例性地,负载确定参数可以包括服务器的连接数、服务器在上一统计周期的处理消息量以及服务器上次被分配给客户端的时间中的至少一项;这里,服务器的连接数表
示在上一统计周期内服务器与客户端之间的连接数。
81.示例性地,可以在服务器中预先设置统计周期和定时时间,这样,服务器可以统计每个统计周期内的负载确定参数,并在定时时间到来时,将距离定时时间最近的上一统计周期内的负载确定参数上报给调度模块。
82.示例性地,获取当前网络中每个服务器的负载值,可以包括:调度模块根据当前网络中每个服务器上报的负载确定参数,确定当前网络中每个服务器在每个统计周期的负载值。
83.在一些实施例中,在所述负载确定参数包括服务器的连接数、服务器在上一统计周期的处理消息量以及服务器上次被分配给客户端的时间的情况下,所述负载确定参数还包括连接数权重值、处理消息量权重值、以及时间参数权重值。
84.这里,连接数权重值、处理消息量权重值、以及时间参数权重值的取值可以根据实际场景进行设置,本技术实施例对此不作限定。
85.示例性地,所述根据所述当前网络中每个服务器上报的负载确定参数,确定当前网络中每个服务器的负载值,可以包括:根据所述当前网络中每个服务器上报的服务器的连接数与所述连接数权重值、服务器在上一统计周期的处理消息量与处理消息量权重值、服务器上次被分配给客户端的时间与时间参数权重值,确定当前网络中每个服务器的负载值。
86.示例性地,当调度模块接收到当前网络中每个服务器定时上报的负载确定参数后,可以根据服务器负载评估公式(1),得到上一统计周期内每个服务器的负载值lr。
87.lr=abs(c

min(c)

δc)*wc+abs(m

min(m)

δm)*wm+wt/(t

t1)%lmr
ꢀꢀ
(1)
88.这里,abs表示计算的绝对值;c表示服务器的连接数;min(c)表示当前网络中所有服务器的连接数中,值最小的连接数;δc表示服务器连接数容差值,如果服务器间的连接数差值小于此值,即可认为服务器的连接数是均衡的;wc表示连接数在服务器负载评估公式中所占的权重值,对应上述连接数权重值。m表示服务器在上一统计周期的处理消息量;min(m)表示在上一统计周期,所有服务器中处理消息量最少的处理消息量;δm表示处理消息量容差值,如果服务器间的处理消息量差值小于此值,即可认为服务器处理的消息是均衡的;wm表示处理消息量在服务器负载评估公式中所占的权重值,对应上述处理消息量权重值。t表示当前系统时间;t1表示服务器上次有被分配给客户端的时间;wt表示时间参数在服务器负载评估公式中所占的权重值,对应上述时间参数权重值;lmr表示时间参数在服务器负载评估公式中被允许的最大值。
89.需要说明的是,本技术实施例对公式(1)包括的上述参数的取值不作限定,可以根据实际场景进行设置。可以看出,当服务器的连接越多时,服务器的负载值越高;当服务器的处理消息量越多时,服务器的负载值越高;当服务器上次被分配给客户端的时间距离当前时间越近时,服务器的负载值越高。
90.可以看出,本技术实施例,基于当前网络中每个服务器上报的负载确定参数,可以准确地得到每个服务器的负载值。
91.示例性地,在调度模块接收到多个客户端中每个客户端发送的连接请求后,可以根据每个客户端归属业务的重要程度或业务量情况,确定允许每个客户端连接服务器的数目,记作cn;这里,当某一客户端归属业务的重要程度或业务量较高时,可以允许该客户端
连接较多数目的服务器;当某一客户端归属业务的重要程度或业务量较低时,可以允许该客户端接入较少数目的服务器。
92.本技术实施例中,调度模块在接收到多个客户端中每个客户端发送的连接请求之前,便可根据公式(1)得到上一统计周期内每个服务器的负载值;示例性地,根据每个服务器的负载值,确定每个客户端的服务器清单的实现方式,可以为:调度模块根据每个服务器的负载值,从中选择负载值较低的cn个服务器作为每个客户端的服务器清单;这里,每个客户端的服务器清单中包括至少两个服务器,这样在客户端与其中一个服务器的连接出现异常时,仍能保证服务的高可用。
93.示例性地,服务器清单可以包括多个服务器,但并不包括当前网络中所有的服务器,这样,可以有效避免因为连接所有服务器导致的每个服务器的连接数过高的问题。
94.示例性地,在调度模块得到每个客户端的服务器清单后,向每个客户端下发对应的服务器清单;这样,每个客户端便可与对应服务器清单中的每个服务器建立tcp长连接。
95.步骤201:在确定每个客户端与对应的服务器清单中每个服务器建立tcp长连接后,重新获取当前网络中每个服务器的负载值;根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器。
96.示例性地,在确定每个客户端与对应的服务器清单中每个服务器建立tcp长连接后,每个客户端会轮询的向已建立tcp长连接的每个服务器发送业务数据;下面以一个客户端、两个服务器为例进行说明。
97.示例性地,当客户端1轮询的向已建立tcp长连接的服务器1和服务器2发送业务数据时,一旦服务器1接收到该客户端发送的业务数据,便会统计最近一个统计周期的负载确定参数,该负载确定参数包括此服务器连接会话对应的处理消息量、此服务器对应的处理消息量、此服务器的连接数以及此服务器被分配给客户端1的时间;然后在定时时间到来时,服务器1将上述负载确定数据上报给调度模块;这样,调度模块便可根据公式(1)重新获取到服务器1的负载值;这里,服务器2负载值的获取过程与上述获取过程类似,此处不再赘述。如此,调度模块可以重新获取当前网络中每个服务器的负载值。
98.可以看出,在客户端与对应服务器清单中每个服务器的数据传输过程中,每个服务器的负载值是动态变化的;每个服务器会定时上报最近一个统计周期的负载确定参数;这样,调度模块便可重新确定当前各个服务器的负载值。而这种动态获取负载确定参数实现负载均衡的方式,能够有效避免因某个服务器处理能力低下,而影响整个服务器集群的处理能力。
99.在一些实施例中,根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器,可以包括:对重新获取的每个服务器的负载值进行排序,得到排序结果;根据排序结果,确定不满足设定负载均衡条件的目标服务器。
100.示例性地,对于重新获取的每个服务器的负载值,可以按照负载值从高到低的顺序进行排序,得到排序结果;进而,根据该排序结果,确定不满足设定负载均衡条件的目标服务器。
101.可以看出,本技术实施例,在获取到每个服务器的负载值,通过每个服务器的负载值进行排序,可以更加直观地从排序结果中确定出不满足设定负载均衡条件的目标服务器。
102.示例性地,对于根据排序结果,确定不满足设定负载均衡条件的目标服务器的一种实现方式,可以为:从排序结果中,得到负载值最高的服务器与负载值最低的服务器;在确定负载值最高的服务器与负载值最低的服务器的负载差值大于第二设定阈值时,将负载值最高的服务器确定为不满足设定负载均衡条件的目标服务器。
103.示例性地,从排序结果中得到负载值最高的服务器与负载值最低的服务器后,首先计算负载值最高的服务器与负载值最低的服务器的负载差值;再将该负载差值与第二设定阈值进行比较,得到比较结果;如果根据比较结果确定该负载差值大于第二设定阈值,则说明存在不满足设定负载均衡条件的目标服务器,并将负载值最高的服务器确定为不满足设定负载均衡条件的目标服务器;反之,如果根据比较结果确定该负载差值小于或等于第二设定阈值,则说明此时不存在不满足设定负载均衡条件的目标服务器,即,当前建立tcp长连接的所有服务器均满足负载均衡条件。
104.示例性地,对于根据排序结果,确定不满足设定负载均衡条件的目标服务器的另一种实现方式,可以为:将排序结果中负载值大于第三设定阈值的任一服务器确定为不满足设定负载均衡条件的目标服务器。
105.示例性地,假设排序结果中大于第三设定阈值的服务器包括服务器1和服务器2,且它们之间的负载值关系为服务器1>服务器2,则可以将服务器1确定为不满足设定负载均衡条件的目标服务器,也可以将服务器2确定为不满足设定负载均衡条件的目标服务器。
106.示例性地,如果排序结果中负载值均小于或等于第三设定阈值,则说明此时不存在不满足设定负载均衡条件的目标服务器,即,当前建立tcp长连接的所有服务器均满足负载均衡条件。
107.这里,对于上述第二设定阈值和第三设定阈值的取值可以根据实际情况进行确定,本技术实施例对此不作限定。
108.可以看出,本技术实施例,通过将负载值最高或大于某一设定阈值的服务器确定为目标服务器,以进行后续的负载均衡调整,可以避免因为该目标服务器处理能力低下,而影响整个服务器集群的处理能力。
109.步骤202:查找与目标服务器连接的目标客户端,调整目标客户端的服务器清单;目标客户端为多个客户端中的一个客户端。
110.本技术实施例中,在根据上述步骤201得到不满足设定负载均衡条件的目标服务器后,获取与该目标服务器建立tcp长连接的所有客户端,并从这些客户端中查找需要调整服务器清单的目标客户端;这里,调整服务器清单表示负载均衡调整。
111.在一些实施例中,查找与目标服务器连接的目标客户端,可以包括:获取与目标服务器建立tcp长连接的至少两个客户端;根据至少两个客户端中每个客户端向目标服务器发送的消息量,从至少两个客户端中,确定目标客户端。
112.示例性地,由于目标服务器在处理不同客户端发送的消息量(业务数据)时,会向调度模块定时上报最近一个统计周期,该目标服务器所有连接各自对应的处理消息量;即,与目标服务器建立tcp连接的每个客户端发送的消息量。进而,调度模块可以根据每个客户端向目标服务器发送的消息量,从与目标服务器建立tcp连接的多个客户端中,确定目标客户端。
113.可以理解地,由于目标服务器是当前网络中不满足设定负载均衡条件的服务器,
因而,需要对目标服务器的负载值进行调整使其达到均衡状态;而目标服务器的负载值是与其连接的每个客户端发送的消息量确定的,因而,基于每个客户端向所述目标服务器发送的消息量,可以有针对性地确定目标客户端。
114.在一些实施例中,根据至少两个客户端中每个客户端向目标服务器发送的消息量,从至少两个客户端中,确定目标客户端,可以包括:根据至少两个客户端中每个客户端向目标服务器发送的消息量,从至少两个客户端中,将发送消息量最小的客户端确定为目标客户端,或者,将发送消息量小于或等于第一设定阈值的任一客户端确定为目标客户端。
115.可以看出,本技术实施例,从与目标服务器连接的每个客户端中,选择发送消息量最小或小于某一设定阈值的客户端作为目标客户端,可以有效防止后续对目标服务器进行负载调整时的抖动问题,确保系统的稳定性。
116.示例性地,确定目标客户端的实现方式,还可以为:从与目标服务器建立连接会话的所有客户端中,找出连接会话负载最小的客户端,并将该客户端确定为目标客户端;这里,与目标服务器建立连接会话的每个客户端的连接会话负载las可以通过公式(2)进行确定。
117.las=wat/(t

t1) + mc
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
118.这里,wat表示指时间参数在client连接会话负载评估公式中所占的权重值;t表示客户端连接目标服务器的时间;t1表示客户端上次会话调整的时间,即,客户端上次连接其它目标服务器的时间;mc表示最近一个统计周期,此连接会话需要处理的消息量,即,客户端向目标服务器发送的需要目标服务器处理的消息量。
119.需要说明的是,本技术实施例对公式(2)包括的上述参数的取值不作限定,可以根据实际场景进行设置。从公式(2)可以看出,如果目标服务器处理的消息数越多,则对应客户端的连接会话负载越高,如果距离最近一次会话调整的时间越近,则对应客户端的连接会话负载越高。
120.示例性地,在根据公式(2)得到与目标服务器建立连接会话的每个客户端的连接会话负载后,将连接会话负载最小的客户端确定为目标客户端,或,将连接会话负载小于等于设定值的客户端确定为目标客户端。
121.本技术实施例中,在根据上述步骤得到目标客户端后,获取目标客户端的服务器清单,对该服务器清单进行调整,实现服务器之间的负载均衡。
122.在一些实施例中,调整目标客户端的服务器清单,可以包括:将目标客户端的服务器清单中负载值最高的服务器移除,并向目标客户端的服务器清单中新增一个当前负载值最低的服务器。
123.示例性地,在得到目标客户端的服务器清单后,将该服务器清单中负载值最高的服务器移除,也就是说,将该服务器清单中的目标服务器移除,并新增一个当前负载值最低的服务器。
124.这是因为目标服务器是当前网络中负载值较高的服务器,数据处理能力低下,如果不对其进行移除,而是继续处理目标客户端发送的业务数据,很可能发生因目标服务器过载而死机的情况,影响整个服务器集群的处理能力;本技术实施例中,通过将目标客户端与目标服务器的连接调整为目标客户端与当前负载值最低的服务器的连接,使得目标服务器不再处理目标客户端发送的业务数据,这样,可以有效解决目标服务器的过载问题,降低
目标服务器因过载而死机的可能性;另外,由于目标客户端与目标服务器的连接会话负载最小,因而,这种调整方式还可以有效防止调整过程中的抖动问题,确保系统的稳定性。
125.可以看出,本技术实施例通过将目标客户端的服务器清单中负载值最高的服务器移除,可以降低因该服务器继续处理目标客户端的业务数据而出现过载的风险。
126.在一些实施例中,上述方法还可以包括:在当前统计周期内,每完成一次服务器清单的调整,对调整次数执行加1操作;计算当前统计周期内调整服务器清单的总调整次数与当前网路中每个服务器的总连接数的比值,得到当前统计周期的调整会话占比;根据调整会话占比与第四设定阈值的大小关系,确定是否继续调整当前统计周期内的服务器清单。
127.本技术实施例,通过当前统计周期的调整会话占比对当前统计周期的服务器清单的调整次数进行控制,可以防止因出现大面积的服务器连接调整而导致系统稳定性差的问题。
128.示例性地,每完成一次服务器清单的调整表示每完成一次负载均衡调整;这里,在当前统计周期内,每完成一次服务器清单的调整,对调整次数执行加1操作;示例性地,可以将当前统计周期内服务器清单的总调整次数记作at,当前网路中每个服务器的总连接数记作ct,则当前统计周期的调整会话占比为at/ct。接着,根据调整会话占比与第四设定阈值的大小关系,确定是否继续调整当前统计周期内的服务器清单。
129.在一些实施例中,根据调整会话占比与第四设定阈值的大小关系,确定是否继续调整当前统计周期内的服务器清单,可以包括:在确定调整会话占比大于或等于第四设定阈值时,等待当前统计周期结束;在确定调整会话占比小于第四设定阈值、且确定存在不满足设定负载均衡条件的目标服务器时,继续调整当前统计周期内的服务器清单。
130.示例性地,在确定调整会话占比at/ct的值大于或等于第四设定阈值时,等待当前统计周期结束;即,在此消息统计周期不再进行负载均衡调整,防止系统出现大面积连接抖动。反之,在确定调整会话占比at/ct的值小于第四设定阈值时,则再一次评估当前网络中各个服务器之间的负载是否均衡,即,确定是否存在不满足设定负载均衡条件的目标服务器如果不均衡,如果是,则继续下一轮调整,直到整个系统再次达到负载平衡;反之,则说明当前统计周期已达到负载均衡。这里,对第四设定阈值的取值不作限定,可以根据实际场景进行设置。
131.可以看出,本技术实施例,通过调整会话占比与第四设定阈值的比较,对当前统计周期的服务器清单的调整次数进行控制,实现在当前统计周期负载均衡的同时还可以确保系统的稳定性。
132.本技术实施例提出了一种负载均衡方法、装置、电子设备和计算机存储介质,该方法包括:接收到多个客户端中每个客户端发送的连接请求后,获取当前网络中每个服务器的负载值;根据每个服务器的负载值,确定每个客户端的服务器清单,向每个客户端下发对应的服务器清单;服务器清单中包括至少两个服务器;在确定每个客户端与对应的服务器清单中每个服务器建立tcp长连接后,重新获取当前网络中每个服务器的负载值;根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器;查找与目标服务器连接的目标客户端,调整目标客户端的服务器清单;目标客户端为多个客户端中的一个客户端。可以看出,本技术实施例中,在客户端与服务器建立连接之前,通过获取当前网络中每个服务器的负载值,可以确定允许每个客户端连接的服务器清单;即,可以将客户端
连接到多个负载值较低的服务器上,使得该客户端的业务量更加均衡的发送到不同的服务器上进行处理。进一步地,在客户端与服务器建立连接之后,如果发现不满足设定负载均衡条件的目标服务器,则调整与该目标服务器连接的目标客户端的服务器清单,达到控制整个服务器集群的综合负载的目的,保持每个服务器负载值的动态均衡,有效解决服务器过载的问题。
133.为了能够更加体现本技术的目的,在本技术上述实施例的基础上,进行进一步的说明。
134.图2c为本技术实施例的另一种负载均衡方法的流程示意图,如图2c所示,该流程可以包括:
135.步骤a1:服务器上报负载确定参数。
136.示例性地,服务器1至服务器n分别向调度模块上报最近一个统计周期内的负载确定参数;该负载确定参数可以包括服务器的连接数、服务器在上一统计周期的处理消息量、服务器上次被分配给客户端的时间以及服务器的每个连接会话对应的处理消息量。
137.步骤a2:客户端向调度模块发送连接请求。
138.示例性地,当客户端需要向服务器发送业务数据之前,需要先向调度模块发送连接请求。
139.步骤a3:调度模块向客户端分配服务器清单。
140.示例性地,调度模块根据每个服务器上报负载确定参数,确定每个服务器的负载值,进而,根据每个服务器的负载值以及客户端归属业务的重要程度或业务量情况,向客户端分配对应的服务器清单,并客户端下发对应的服务器清单。
141.步骤a4:客户端同时与服务器清单中每个服务器建立连接。
142.示例性地,客户端的服务器清单中包括服务器1和服务器2,即,客户端同时与服务器1和服务器2建立tcp长连接。
143.步骤a5:客户端轮询发送业务数据。
144.示例性地,在确定客户端与服务器1和服务器2建立tcp长连接后,客户端会轮询的向已建立tcp长连接的服务器1和服务器2发送业务数据。
145.需要说明的是,当任一服务器接收到客户端发送的业务数据后,会统计最近一个统计周期的负载确定参数,并将上述负载确定数据定时上报给调度模块;这样,调度模块可基于负载确定数据,重新获取当前网络中每个服务器的负载值;并根据重新获取的负载值,确定服务器与客户端连接的服务器是否满足负载均衡条件,如果不满足,则调整客户端的服务器清单,使得与客户端连接的每个服务器均处于均衡状态。
146.示例性地,考虑到大型系统中客户端和服务器的数量较多,当服务器接收到客户端发送的业务数据时,均需要服务器自身统计每个统计周期的负载确定参数;即,服务器既要处理客户端发送的业务数据,还需要统计负载确定参数,可见,服务器在负载均衡过程中承担的任务会比较重;为了提高服务器的处理能力,可以在图2b的基础上,新增一个监控模块;图2d是本技术实施例中的另一种负载均衡调整的结构示意图,如图2d所示,将新增的监控模块连接在调度模块与每个服务器之间,这样,通过监控模块实现对每个服务器的负载确定参数的统计和监控,并将统计得到的每个服务器的负载确定参数上报给调度模块;再通过调度模块控制与客户端连接的服务器清单;即,通过监控模块完成服务器的部分任务,
可以提高整个服务器集群的处理能力。
147.本技术实施例中,通过控制客户端允许连接的服务器的数量,可以将业务量大的消息量更加均衡的发送到服务器上,可以降低发生因某类业务推广,导致业务量爆增,造成服务器死机的情况。另外,在客户端同时连接多个服务器后,针对某个服务器的变更,如下线、升级、重启,或是客户端到某个服务器的网络出现异常时,也不影响客户端的数据正常上报,提高了系统可靠性。
148.图3是本技术实施例的负载均衡装置的组成结构示意图,如图3所示,该装置包括第一确定模块300、第二确定模块301和调整模块302,其中,
149.第一确定模块300,用于接收到多个客户端中每个客户端发送的连接请求后,获取当前网络中每个服务器的负载值;根据所述每个服务器的负载值,确定所述每个客户端的服务器清单,向所述每个客户端下发对应的服务器清单;所述服务器清单中包括至少两个服务器;
150.第二确定模块301,用于在确定所述每个客户端与对应的服务器清单中每个服务器建立传输控制协议tcp长连接后,重新获取所述当前网络中每个服务器的负载值;根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器;
151.调整模块302,用于查找与所述目标服务器连接的目标客户端,调整所述目标客户端的服务器清单;所述目标客户端为所述多个客户端中的一个客户端。
152.在一些实施例中,所述调整模块302,用于查找与所述目标服务器连接的目标客户端,包括:
153.获取与所述目标服务器建立tcp长连接的至少两个客户端;
154.根据所述至少两个客户端中每个客户端向所述目标服务器发送的消息量,从所述至少两个客户端中,将发送消息量最小的客户端确定为所述目标客户端,或者,将发送消息量小于或等于第一设定阈值的任一客户端确定为所述目标客户端。
155.在一些实施例中,所述第二确定模块301,用于根据重新获取的每个服务器的负载值,确定不满足设定负载均衡条件的目标服务器,包括:
156.对所述重新获取的每个服务器的负载值进行排序,得到排序结果;
157.从所述排序结果中,得到负载值最高的服务器与负载值最低的服务器;在确定所述负载值最高的服务器与所述负载值最低的服务器的负载差值大于第二设定阈值时,将所述负载值最高的服务器确定为不满足所述设定负载均衡条件的目标服务器;或者,
158.将所述排序结果中负载值大于第三设定阈值的任一服务器确定为不满足所述设定负载均衡条件的目标服务器。
159.在一些实施例中,所述调整模块302,用于调整所述目标客户端的服务器清单,包括:
160.将所述目标客户端的服务器清单中负载值最高的服务器移除,并向所述目标客户端的服务器清单中新增一个当前负载值最低的服务器。
161.在一些实施例中,所述装置还包括接收模块,所述接收模块,用于:
162.在接收所述多个客户端中每个客户端发送的连接请求之前,接收所述当前网络中每个服务器上报的负载确定参数;所述负载确定参数包括服务器的连接数、服务器在上一统计周期的处理消息量以及服务器上次被分配给客户端的时间中的至少一项;
163.所述第一确定模块300,用于获取当前网络中每个服务器的负载值,包括:
164.根据所述当前网络中每个服务器上报的负载确定参数,确定当前网络中每个服务器的负载值。
165.在一些实施例中,在所述负载确定参数包括服务器的连接数、服务器在上一统计周期的处理消息量以及服务器上次被分配给客户端的时间的情况下,所述负载确定参数还包括连接数权重值、处理消息量权重值、以及时间参数权重值;
166.所述第一确定模块300,用于根据所述当前网络中每个服务器上报的负载确定参数,确定当前网络中每个服务器的负载值,包括:
167.根据所述当前网络中每个服务器上报的服务器的连接数与所述连接数权重值、服务器在上一统计周期的处理消息量与处理消息量权重值、服务器上次被分配给客户端的时间与时间参数权重值,确定当前网络中每个服务器的负载值。
168.在一些实施例中,所述调整模块302,还用于:
169.在当前统计周期内,每完成一次服务器清单的调整,对调整次数执行加1操作;
170.计算所述当前统计周期内调整所述服务器清单的总调整次数与所述当前网路中每个服务器的总连接数的比值,得到所述当前统计周期的调整会话占比;
171.根据所述调整会话占比与第四设定阈值的大小关系,确定是否继续调整所述当前统计周期内的服务器清单。
172.在一些实施例中,所述调整模块302,用于根据所述调整会话占比与第四设定阈值的大小关系,确定是否继续调整所述当前统计周期内的服务器清单,包括:
173.在确定所述调整会话占比大于或等于所述第四设定阈值时,等待所述当前统计周期结束;
174.在确定所述调整会话占比小于所述第四设定阈值、且确定存在不满足设定负载均衡条件的目标服务器时,继续调整所述当前统计周期内的服务器清单。
175.在实际应用中,上述第一确定模块300、第二确定模块301、调整模块302和接收模块均可以由位于电子设备中的处理器实现,该处理器可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。
176.另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
177.集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、ram、磁碟或者光盘等各种可以存储程序代码的介质。
178.具体来讲,本实施例中的一种负载均衡方法对应的计算机程序指令可以被存储在光盘、硬盘、u盘等存储介质上,当存储介质中的与一种负载均衡方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种负载均衡方法。
179.基于前述实施例相同的技术构思,参见图4,其示出了本技术实施例提供的电子设备400,可以包括:存储器401和处理器402;其中,
180.存储器401,用于存储计算机程序和数据;
181.处理器402,用于执行存储器中存储的计算机程序,以实现前述实施例的任意一种负载均衡方法。
182.在实际应用中,上述存储器401可以是易失性存储器(volatile memory),例如ram;或者非易失性存储器(non

volatile memory),例如rom、快闪存储器(flash memory)、硬盘(hard disk drive,hdd)或固态硬盘(solid

state drive,ssd);或者上述种类的存储器的组合,并向处理器402提供指令和数据。
183.上述处理器402可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的负载均衡设备,用于实现上述处理器功能的电子器件还可以为其它,本技术实施例不作具体限定。
184.在一些实施例中,本技术实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
185.上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
186.本技术所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
187.本技术所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
188.本技术所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
189.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
190.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
191.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
192.以上,仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1