一种基于负载均衡的请求分配方法和装置与流程

未命名 09-15 阅读:101 评论:0


1.本说明书涉及负载均衡技术领域,尤其涉及一种基于负载均衡的请求分配方法和装置。


背景技术:

2.随着互联网应用的不断增加以及用户数量的不断增长,服务器的负载也越来越大。负载均衡技术是解决服务器负载过大的有效方式之一。负载均衡技术通常是将许多服务器组合成一个服务器池,并将请求路由到其中一个服务器上。这样可以提高系统的可用性、可扩展性和性能。但是现有负载均衡方法,无法在实现较低性能开销的同时避免在突发场景下导致服务实例间负载倾斜的问题。
3.针对上述问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本说明书提供了一种基于负载均衡的请求分配方法和装置,以解决现有技术无法在实现较低性能开销的同时避免在突发场景下导致服务实例间负载倾斜的问题。
5.一方面,本说明书实施例提供了一种基于负载均衡的请求分配方法,包括:
6.监测多个服务实例的连接数量,所述服务实例对应有权重;
7.根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;
8.若不满足均衡条件,从所述多个服务实例中选取异常服务实例;
9.调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
10.进一步地,所述根据连接数量,确定所述多个服务实例是否满足均衡条件,包括:
11.根据连接数量,确定所述多个服务之间连接数量的比例;确定所述多个服务实例之间连接数量的比例是否等于所述多个服务实例之间权重的比例。
12.进一步地,所述不满足均衡条件,包括:所述连接数量的比例大于所述权重的比例和/或所述连接数量的比例小于所述权重的比例。
13.进一步地,所述调整所述异常服务实例的权重,包括:
14.在所述连接数量的比例大于所述权重的比例时,则降低所述异常服务实例的权重;
15.在所述连接数量的比例小于所述权重的比例时,则提升所述异常服务实例的权重。
16.进一步地,所述方法还包括:
17.根据降低后的权重为所述异常服务实例分配相应的连接请求;
18.监测所述异常服务实例在接收到连接请求后的连接数量;
19.根据连接数量,确定所述多个服务实例是否满足均衡条件;
20.若否,则提升所述异常服务实例的权重,以根据提升后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
21.进一步地,所述方法还包括:
22.获取多个服务实例所在服务器的性能数据;所述性能数据包括内存利用率和处理器利用率;
23.根据所述内存利用率和处理器利用率,确定多个服务实例对应的权重。
24.进一步地,所述方法还包括:
25.接收服务调用请求,所述服务调用请求用于请求调用服务;
26.根据调整后的权重,从所述多个服务实例选取服务实例;
27.将服务调用请求分配至选取的服务实例,以使服务调用请求与选取的服务建立连接。
28.另一方面,本说明书实施例还提供了一种基于负载均衡的请求分配装置,包括:
29.监测模块,用于监测多个服务实例的连接数量,所述服务实例对应有权重;
30.确定模块,用于根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;
31.选取模块,用于若不满足均衡条件,从所述多个服务实例中选取异常服务实例;
32.调整分配模块,用于调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
33.再一方面,本技术还提供了一种电子设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
34.再一方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机可读存储介质执行所述指令时实现:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
35.本说明书提供的一种基于负载均衡的请求分配方法和装置,首先,监测多个服务实例的连接数量,所述服务实例对应有权重。其次,根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例,若不满足均衡条件,则从所述多个服务实例中选取异常服务实例。最后,调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。本说明实施例中通过监测多个服务实例的连接数量,可以及时地根据连接数量,判断多个服务实例是否满足均衡条件,从而可以及时地筛选出异常的服务实例。通过调整异常服务实例的权重,可以及时处理突发场景下的服务
实例间出现负载倾斜的问题。
附图说明
36.为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1是本说明书实施例提供的一种基于负载均衡的请求分配方法的流程示意图;
38.图2是在一个场景示例中,应用本说明书实施例提供的一种基于负载均衡的请求分配方法的一种实施例的示意图;
39.图3是本说明书实施例提供的一种基于负载均衡的请求分配装置的结构组成示意图;
40.图4是本说明书实施例提供的计算机设备结构组成示意图。
具体实施方式
41.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
42.随着互联网应用的不断增加和用户数量的不断增长,服务器的负载也越来越大。负载均衡技术是解决服务器负载过大的有效方式之一。负载均衡技术通常将许多服务器组合成一个服务器池,并将请求路由到其中一个服务器上。这样可以提高系统的可用性、可扩展性和性能。常见的负载均衡算法有:
43.1.随机或加权随机算法:随机选择一台服务实例来分配任务。它保证了请求的分散性从而达到了负载均衡的目的。加权随机就是在随机的基础上为每个服务实例配置比重来调整随机的概率。
44.2.轮询或加权轮询算法:是将请求轮流分配给各个服务实例。加权轮询就是在轮询的基础按照给定的权重就行轮流分配。
45.3.最小连接数法算法:将请求分配给服务实例中具有最小连接数的节点。
46.4.哈希法:根据请求内容通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是调用者要访问的服务实例的序号,可以保证同一个服务调用者每次请求到的均是同一台服务器,主要用于有状态的服务实例。
47.但是现有的负载均衡存在以下问题:
48.对于随机或加权随机算法、轮询或加权轮询算法,其缺点在于:虽然可以均匀的将请求分布到不同的服务实例上,并且可以通过增加权重的方式来区分不同处理能力的后端服务实例,比如针对性能较强的服务实例配置较高的权重。但是对于一些突发场景,该算法可能会导致各个服务实例出现负载倾斜。比如,由网络波动、物理机器故障等原因导致某些服务实例的处理速度慢于其他剩余的服务实例,此时虽然请求被均匀的转发到了所有的服务实例上,但是仍可能出现处理速度较慢的服务实例请求已经在堆积,但正常的实例已经
出现空闲的情况。
49.对于最小连接数算法:虽然能在上述突发情况下很好的将请求更多的发送到正常的服务实例上,但是相比于随机或加权随机算法、轮询或加权轮询算法而言,最小连接数算法会消耗更多的性能(如:每次分配请求的时候都需要遍历一遍所有的服务实例,寻找连接数最少的那一个)。
50.针对现有方法存在的上述问题,本说明书引入一种基于负载均衡的请求分配方法和装置,考虑可以结合随机或轮询算法和最小连接数算法的优点,实现较低性能开销的同时,避免在突发场景下导致服务实例间负载不均衡的问题。
51.基于上述思路,本说明书提出一种基于负载均衡的请求分配方法,首先,监测多个服务实例的连接数量,所述服务实例对应有权重。其次,根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例。最后,调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。参阅图1所示,本说明书实施例提供了一种基于负载均衡的请求分配方法。具体实施时,该方法可以包括以下内容。
52.s101:监测多个服务实例的连接数量,所述服务实例对应有权重。
53.在一些实施例中,上述多个服务实例可以对应有权重和连接数量,所述权重和连接数量可以为初始权重和初始连接数量。所述初始权重可以通过如下方式获取:
54.可以先获取多个服务实例所在服务器的性能数据,所述性能数据可以包括内存利用率和处理器利用率,然后根据内存利用率和处理器利用率,确定多个服务实例对应的权重(初始权重)。其中,所述性能数据还可以包括:磁盘利用率、磁盘i/o频率、处理器(cpu)容量、内存容量等,本说明书对此不作具体限定。
55.还可以对内存利用率和处理器利用率进行加权求和,确定多个服务实例所在的服务器的负载指标,然后对处理器(cpu)容量、内存容量进行加权求和,确定多个服务实例所在的服务器的性能指标,最后,再基于性能指标与负载指标的比值,确定出上述的初始权重。
56.其中,权重越大代表服务实例的处理能力越强,权重越小代表服务实例的处理能力越弱。连接数量越多代表服务实例能够处理的请求越少,连接数量越少代表服务实例能够处理的请求越多。
57.在一些实施例中,还可以基于上述多个服务实例对应的权重,为各个服务实例分配连接请求,再监测多个服务实例在接收到连接请求后的连接数量。即,可以先根据初始权重,依次将连接请求均匀地分配到各个服务实例上,然后监测各个服务实例在接收到请求后的连接数量,需要说明的是,各个服务实例在接收并处理连接请求后,其初始连接数量可以发生变化,监测的多个服务实例的连接数量可以为发送变化的连接数量。通过先均匀分配请求后监测连接数量的方式,可以降低性能开销,同时还可以有效避免网络波动、物理机器故障等原因导致负载倾斜的问题。
58.s102:根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例。
59.在一些实施例中,上述根据连接数量,确定所述多个服务实例是否满足均衡条件,
可以包括:根据连接数量,确定所述多个服务之间连接数量的比例;将连接数量的比例与权重的比例进行比较,确定所述多个服务实例之间连接数量的比例是否等于所述多个服务实例之间权重的比例。例如:服务实例a对应的权重为1、服务实例b对应权重为1,服务实例c对应的权重为3,实时监测到服务实例a的连接数量为2、服务实例b的连接数量为2,服务实例c的连接数量为3,此时,服务实例a、服务实例b、服务实例c的连接数量的比例为2:2:3,权重的比例为:1:1:3,连接数量的比例不等于权重的比例,则认为服务实例a、服务实例b、服务实例c不满足均衡条件。
60.通过实时监测服务实例的连接数量,基于连接数量确定多个服务实例是否满足均衡条件,可以及时地发现由于网络波动等造成服务实例出现负载倾斜的问题。
61.s103:若不满足均衡条件,从所述多个服务实例中选取异常服务实例。
62.在一些实施例中,上述不满足均衡条件,可以包括:上述连接数量的比例大于上述权重的比例和/或上述连接数量的比例小于上述权重的比例。上述异常服务实例可以为一个或多个,异常服务实例可以为受网络波动等影响导致连接数量增加或减少,且增加后的连接数量或减少后的连接数量的比例与权重的比例不一致的服务实例。通过筛选异常服务实例,可以为后续动态调整异常服务实例的权重,避免各个服务实例出现负载倾斜奠定基础。
63.在一些实施例中,上述根据连接数量,确定所述多个服务实例是否满足均衡条件,还可以包括:若是,则根据服务实例对应的权重继续分配连接请求,并监测多个服务实例在接收到连接请求后的连接数量,并基于连接数量再次判断多个服务实例是否满足均衡条件。通过在多个服务实例满足均衡条件时,基于服务实例的初始权重分配连接请求,在多个服务实例不满足均衡条件时,及时筛选出异常服务实例,可以在降低性能消耗的同时避免各个服务实例出现负载倾斜的问题。
64.s104:调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
65.在一些实施例中,上述调整所述异常服务实例的权重,可以包括:
66.在所述连接数量的比例大于所述权重的比例时,则降低所述异常服务实例的权重;
67.在所述连接数量的比例小于所述权重的比例时,则提升所述异常服务实例的权重。
68.在一些实施例中,还可以根据降低后的权重为所述异常服务实例分配相应的连接请求;监测所述异常服务实例在接收到连接请求后的连接数量;根据连接数量,确定所述多个服务实例是否满足均衡条件;若否,则提升所述异常服务实例的权重,以使得根据提升后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
69.在一些实施例中,可能会突发的网络波动等情况,导致某一个或多个服务实例的连接数量大幅增加,服务实例的处理性能下降,使得该服务实例的连接数量的比例大于该服务实例权重(初始权重)的比例,此时,需要降低服务实例的权重,以使得受到网络波动影响的服务实例被分配到较少的请求,使服务实例当前分配的请求与当前的处理能力是适配的。在分配的请求变少后,异常服务实例处理能力可能会恢复,可以再提升异常服务实例的
权重,并使得提升后权重后的异常服务实例和其他服务实例的连接数量满足初始权重的比例,即可以确保各个服务实例都为正常状态下的服务实例。
70.在一些实施例中,以一个具体场景为例:假设存在三个服务实例a、b、c,这三个服务实例的处理能力和网络状态完全一致,初始权重可以设置为1:1:1,运行阶段很平稳,三个服务实例a、b、c的连接数量都大致相等,此时不会调整权重。但在服务实例a的节点突然发生网络波动时,导致服务实例a的处理能力下降,请求开始堆积在服务实例a上,此时监测发现服务实例a不满足均衡条件,如:服务实例a的连接数量大幅增加,导致a的连接数量的比例大于初始权重的比例,此时可以下调服务实例a的权重,例如下调为0.5:1:1,使得转发到服务实例a上的请求数量减少,直到服务实例a恢复正常后,服务实例a节点的连接数量便会显著小于0.5:1:1的比例,此时可以再上调服务实例a的权重,直至恢复到初始权重的初始比例1:1:1(恢复至初始权重的比例即是服务实例均正常时的比例)。
71.在一些实施例中,还可以接收用户发送的服务调用请求,所述服务调用请求可以用于请求调用服务。然后,根据调整后的权重,从所述多个服务实例选取服务实例。最后,将服务调用请求分配至选取的服务实例,以使服务调用请求与选取的服务建立连接。通过使用调整的权重,从多个服务实例中选取服务实例,再将服务调用请求分配到选取的服务实例上,可以准确快速地调用相应的服务,建立服务请求与服务的连接。
72.下面结合一个具体实施例对上述方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本技术,并不构成对本技术的不当限定。
73.在具体实施前,首先,可以获取多个服务实例的初始权重和初始连接数量,其中,初始权重和初始连接数量的比例相同。然后,可以根据初始权重为多个服务实例分配连接请求,其中,初始权重较大的服务实例可以分配较多的请求,初始权重较小的服务实例可以分配较少的请求。最后,各个服务实例可以对分配的连接请求进行处理。
74.在具体实施时,可以基于动态负载均衡器实时监测多个服务实例的连接数量,根据连接数量的比例是否等于初始权重的比例,来判断多个服务实例中是否出现异常服务实例。在连接数量的比例不等于初始权重的比例时,筛选出异常服务实例并动态调整异常服务实例的初始权重,根据动态调整后的权重为异常服务实例分配连接请求,直至多个服务实例的连接数量的比例与初始权重的比例一致或相同。若监测到连接数量的比例仍然等于初始权重的比例时,继续基于初始权重为多个服务实例分配初始权重,然后继续监测多个服务实例在接收连接请求后的连接数量。通过持续分配连接请求并监测连接数量,可以在网络出现异常波动时,及时地调整请求的分配方式,如:在多个服务实例满足均衡条件时(未出现网络波动等异常情况,不存在异常服务实例),此时可以基于服务实例的权重分配连接请求,可以确保每一个服务实例都能均匀地分配到相应的请求,且在分配请求时,是轮询的方式进行分配,可以降低性能消耗。在多个服务实例不满足均衡条件时(出现网络波动等异常情况,存在异常服务实例)时,可以筛选出异常服务实例,并为筛选后的异常服务实例分配相应的请求,可以使得在异常服务实例在受网络波动影响导致处理性能降低时,能够处理较少的请求,而在处理较少请求后的一段时间后,异常服务实例的处理性能又提升后,再使异常服务实例处理较多的请求。
75.在一个具体的场景示例中,可以应用本说明书实施例提供的一种基于负载均衡的请求分配方法降低性能消耗,同时避免请求分配不均而造成服务实例间出现负载倾斜的问
题。参阅图2所示,可以包括:
76.服务实例池:服务实例池内保存了当前所有的服务及其对应的服务实例,如:服务1和服务2,以及服务1中的服务实例1a、1b、1c和服务2中的服务实例2a、2b、2c。其中,服务1和服务2为两个不同的服务,服务1和服务2中具有多个对应的服务实例,服务实例是服务的具体实现。在部署层面上,服务可能会由一个或多个服务实例构成。每个服务实例都能完整的处理针对该服务的所有请求。
77.在刚开始可以根据每个服务实例各自的实际处理能力配置各自的初始权重,如:为服务实例1a、1b、1c配置的初始权重为1、1、1,当前连接数量为:10、10、10,为服务实例2a、2b、2c配置的初始权重为1、0.5、2,当前连接数量为:10、20、5,其中,初始权重的比例和当前连接数量的比例是相同或一致的。
78.权重轮询选择器:从服务调用者(请求方,可以是发起请求的用户或客户端)所请求的服务中根据权重轮询得到一个服务实例,并转发到后端服务实例上。
79.动态负载均衡器:定时查询服务实例池内各个服务实例的连接数量,根据当前连接数量动态调整权重,使得每个服务实例当前处理的请求数量的比例能保持和初始权重一致。比如服务实例1a、1b、1c初始权重分别为1:1:2,但实际连接数量分别为2:1:3,此时对于1a而言处理请求较少需要增加权重,对于1c而言处理请求数量较多需要减少权重,调整权重后使得各个实例的连接数量的比值可以恢复到初始权重1:1:2的状态。
80.通过使用权重轮询选择器,可以确保请求能够均匀地分配到各个服务实例中,直接基于权重轮询分配请求,可以降低性能消耗,提高请求的分配效率。通过使用动态负载均衡器,可以实时监测服务实例池中的服务实例是否出现异常,及时地调整服务实例的权重,确定分配的请求与服务实例当前的处理能力是适配的,从而可以应对一些突发场景下,如网络波动、物理机器故障等场景下导致的服务实例负载不均衡的情况。
81.虽然本说明书提供了如下述实施例或附图3所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。
82.基于上述一种基于负载均衡的请求分配方法,本说明书还提出一种基于负载均衡的请求分配装置的实施例。如图3所示,所述基于装置具体可以包括以下模块:
83.监测模块301,可以用于监测多个服务实例的连接数量,所述服务实例对应有权重;
84.确定模块302,可以用于根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;
85.选取模块303,可以用于若不满足均衡条件,从所述多个服务实例中选取异常服务实例;
86.调整分配模块304,可以用于调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
87.在一些实施例中,上述监测模块301中的权重可以根据如下方式获取:获取多个服务实例所在服务器的性能数据;所述性能数据包括内存利用率和处理器利用率;根据所述内存利用率和处理器利用率,确定多个服务实例对应的权重。
88.在一些实施例中,上述确定模块302具体还可以用于根据连接数量,确定所述多个服务之间连接数量的比例;确定所述多个服务实例之间连接数量的比例是否等于所述多个服务实例之间权重的比例。
89.在一些实施例中,上述选取模块303中的所述不满足均衡条件,可以包括:所述连接数量的比例大于所述权重的比例和/或所述连接数量的比例小于所述权重的比例。
90.在一些实施例中,上述调整分配模块304具体可以用于所述连接数量的比例大于所述权重的比例时,则降低所述异常服务实例的权重;在所述连接数量的比例小于所述权重的比例时,则提升所述异常服务实例的权重。
91.在一些实施例中,上述调整分配模块304具体还可以用于根据降低后的权重为所述异常服务实例分配相应的连接请求;监测所述异常服务实例在接收到连接请求后的连接数量;根据连接数量,确定所述多个服务实例是否满足均衡条件;若否,则提升所述异常服务实例的权重,以根据提升后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
92.在一些实施例中,上述调整分配模块304之后具体还可以用于接收服务调用请求,所述服务调用请求用于请求调用服务;根据调整后的权重,从所述多个服务实例选取服务实例;将服务调用请求分配至选取的服务实例,以使服务调用请求与选取的服务建立连接。
93.需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
94.由上可见,基于本说明书实施例提供的一种基于负载均衡的请求分配装置,可以通过监测多个服务实例的连接数量并基于连接数量,判断服务实例是否满足负载均衡条件,可以及时准确地筛选出异常服务实例。在筛选出异常服务实例后,通过动态调整异常服务实例的初始权重,可以使得异常服务实例在低性能时能够分配处理较少请求,在性能恢复后,再处理较多的请求,从而可以避免多个服务实例间出现负载不均衡的情况。并且,可以有效应对网络异常等情况导致的某一个或多个服务实例的处理性能突然下降的问题。
95.本说明书实施例还提供一种电子设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,
以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
96.为了能够更加准确地完成上述指令,参阅图4所示,本说明书实施例还提供了另一种具体的电子设备,其中,所述电子设备包括网络通信端口401、处理器402以及存储器403,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
97.其中,所述网络通信端口401,具体可以用于监测多个服务实例的连接数量,所述服务实例对应有权重。
98.所述处理器402,具体可以用于根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
99.所述存储器403,具体可以用于存储相应的指令程序。
100.在本实施例中,所述网络通信端口401可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行ftp数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如gsm、cdma等;其还可以为wifi芯片;其还可以为蓝牙芯片。
101.在本实施例中,所述处理器402可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
102.在本实施例中,所述存储器403可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如ram、fifo等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、tf卡等。
103.本说明书实施例还提供了一种基于负载均衡的请求分配方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
104.在本实施例中,上述存储介质包括但不限于随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、缓存(cache)、硬盘(hard disk drive,hdd)或者存储卡(memory card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
105.本说明书实施例还提供了一种基于负载均衡的请求分配方法的计算机程序产品,
所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。
106.虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
107.本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
108.本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
109.通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
110.本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
111.虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形而不脱离本说明书的精神,希望所附的权利要求包括这些变形而不脱离本说明书的精神。

技术特征:
1.一种基于负载均衡的请求分配方法,其特征在于,包括:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。2.根据权利要求1所述的方法,其特征在于,所述根据连接数量,确定所述多个服务实例是否满足均衡条件,包括:根据连接数量,确定所述多个服务之间连接数量的比例;确定所述多个服务实例之间连接数量的比例是否等于所述多个服务实例之间权重的比例。3.根据权利要求2所述的方法,其特征在于,所述不满足均衡条件,包括:所述连接数量的比例大于所述权重的比例和/或所述连接数量的比例小于所述权重的比例。4.根据权利要求3所述的方法,其特征在于,所述调整所述异常服务实例的权重,包括:在所述连接数量的比例大于所述权重的比例时,则降低所述异常服务实例的权重;在所述连接数量的比例小于所述权重的比例时,则提升所述异常服务实例的权重。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:根据降低后的权重为所述异常服务实例分配相应的连接请求;监测所述异常服务实例在接收到连接请求后的连接数量;根据连接数量,确定所述多个服务实例是否满足均衡条件;若否,则提升所述异常服务实例的权重,以根据提升后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取多个服务实例所在服务器的性能数据;所述性能数据包括内存利用率和处理器利用率;根据所述内存利用率和处理器利用率,确定多个服务实例对应的权重。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收服务调用请求,所述服务调用请求用于请求调用服务;根据调整后的权重,从所述多个服务实例选取服务实例;将服务调用请求分配至选取的服务实例,以使服务调用请求与选取的服务建立连接。8.一种基于负载均衡的请求分配装置,其特征在于,包括:监测模块,用于监测多个服务实例的连接数量,所述服务实例对应有权重;确定模块,用于根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;选取模块,用于若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整分配模块,用于调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。9.一种电子设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而
实现权利要求1至7中任一项所述方法的步骤。10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1至7中任一项所述方法的步骤。11.一种计算机程序产品,其特征在于,包含有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。

技术总结
本说明书提供了一种基于负载均衡的请求分配方法和装置,涉及负载均衡技术领域,该方法包括:监测多个服务实例的连接数量,所述服务实例对应有权重;根据连接数量,确定所述多个服务实例是否满足均衡条件,所述均衡条件包括:服务实例之间连接数量的比例等于服务实例之间权重的比例;若不满足均衡条件,从所述多个服务实例中选取异常服务实例;调整所述异常服务实例的权重,以便根据调整后的权重为所述异常服务实例分配连接请求,使所述多个服务实例的连接数量满足均衡条件。基于上述方法能够避免请求分配不均而造成负载倾斜的问题。避免请求分配不均而造成负载倾斜的问题。避免请求分配不均而造成负载倾斜的问题。


技术研发人员:张正园
受保护的技术使用者:建信金融科技有限责任公司
技术研发日:2023.06.21
技术公布日:2023/9/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐