CN117155942A - 一种微服务动态自适应客户端负载均衡方法及*** - Google Patents
一种微服务动态自适应客户端负载均衡方法及*** Download PDFInfo
- Publication number
- CN117155942A CN117155942A CN202311171774.6A CN202311171774A CN117155942A CN 117155942 A CN117155942 A CN 117155942A CN 202311171774 A CN202311171774 A CN 202311171774A CN 117155942 A CN117155942 A CN 117155942A
- Authority
- CN
- China
- Prior art keywords
- load
- service
- server
- node
- weight
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000011156 evaluation Methods 0.000 claims description 26
- 230000003044 adaptive effect Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 239000013598 vector Substances 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 3
- 230000003321 amplification Effects 0.000 claims description 2
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 2
- 238000011217 control strategy Methods 0.000 abstract description 3
- 230000001960 triggered effect Effects 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 21
- 238000012545 processing Methods 0.000 description 10
- 230000001965 increasing effect Effects 0.000 description 8
- 230000035772 mutation Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 108090000623 proteins and genes Proteins 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 210000000349 chromosome Anatomy 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002068 genetic effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000306 component Substances 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000007334 memory performance Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000009395 breeding Methods 0.000 description 1
- 230000001488 breeding effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003028 elevating effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明属于服务器负载均衡领域,涉及一种微服务动态自适应客户端负载均衡方法及***;所述方法包括客户端节点定期向微服务集群中每个服务器节点发送服务请求,以获取服务器节点的负载信息,并缓存至Redis中;当微服务集群中每个服务器节点的负载信息的实际、综合负载率超过相应阈值的大小,则采用动态反馈权重负载均衡算法确定出当前权重最大的服务器节点执行请求;根据服务节点的负载情况来调整流控策略,一旦触发了流控条件阈值,将按照一定策略动态限制进入的流量大小,以减小节点的负载压力;本发明采用客户端负载均衡,减轻了服务端的负担;根据服务器节点的实际负载情况进行动态调整负载,具有良好的实际意义和应用价值。
Description
技术领域
本发明属于服务器负载均衡领域,提出了一种微服务动态自适应客户端负载均衡方法及***。
背景技术
随着"互联网+"时代的到来,微服务架构受到了越来越多的关注。以往的单体式服务通常被部署在同一台服务器上,难以扩展和维护,因此微服务架构成为必要选择。然而,在微服务架构中,为了解决高并发任务,通常采用集群技术,但是,这也会不可避免地导致一些问题,比如,当前应用的负载均衡算法容易造成服务器资源分配不均衡,从而使得用户请求不能被及时响应,也不能充分发挥集群的效果。此外,物联网终端周期性业务传输数据时,虽然每个数据请求的大小相对较小,但传输频率很高,可能会同时存在数万个或数十万个请求,大量请求和高并发会使处理过程变得更为复杂。因此,在服务器集群***中,需要一个优秀的负载均衡算法来充分利用集群各节点的计算资源,提升***性能。
负载平衡一直以来都是一项重要的研究课题,旨在确保计算资源有效且公平地分配。根据实施方式的不同,现有的负载均衡可分为如图1所示的服务端负载均衡和如图2所示的客户端负载均衡。其中,客户端负载均衡将负载均衡器集成到客户端应用程序中,通过它选择合适的服务器来发送请求,以减轻服务端的压力。因此,客户端负载均衡在实际应用中被广泛使用。现有的客户端负载均衡提供了多种负载均衡算法,包括轮询、加权轮询和最小连接算法等,但这些算法不能在负载发生变化时进行自适应调整,或者仅考虑单一的性能指标,缺乏对服务器集群负载状态的综合评估和对服务器节点实时负载状态的准确评估,以便适当地分配请求任务。
相关学者针对现有负载均衡算法的不足提出了一些动态负载均衡算法,但这些算法通常未考虑不同任务类型对节点资源消耗的差异以及***并发总量较大时无法有效处理高压力的问题,并且结果表明,在高负载情况下,这些算法通常会提高效率,但在低负载情况下,相较于传统算法,它们的效率提升并不明显。
发明内容
针对上述问题,考虑到Ribbon客户端负载均衡器提供的策略更灵活,本发明提出了一种微服务动态自适应客户端负载均衡方法及***。该方法考虑微服务集群中服务器节点的实际负载状态和不同请求任务类型对资源消耗的差异。为了解决现有动态负载均衡算法在低负载情况下效率提升有限的问题,该方法周期性收集后端服务器节点的动态性能情况,并根据需要选择适用于该场景的动态权值反馈负载均衡算法或平滑加权轮询负载均衡算法。本发明提出的动态权值反馈负载均衡算法结合初始权重和动态权重,确定节点服务器的最优权值,并在需要时不断更新旧权值和权重系数。同时,在高负载压力下,节点内部采取进一步的业务流量控制措施,以充分利用资源,实现负载均衡的目标。本发明所提供的技术方案具体包括:
本发明第一方面提供了一种微服务动态自适应客户端负载均衡方法,该方法面向物联网终端周期性业务,所述方法包括以下步骤:
客户端节点定期向微服务集群中每个服务器节点发送服务请求,以获取服务器节点的性能参数负载信息,并将负载信息缓存至Redis中;所述负载信息包括CPU利用率、内存利用率、网络带宽利用率、磁盘I/O利用率;
客户端节点根据微服务集群中每个服务器节点的负载信息的各个实际负载率与实际负载率阈值的大小,或/和综合负载率与综合负载率阈值的大小进行判断,若超过对应的负载率阈值,则采用动态反馈权重负载均衡算法确定出当前权重最大的服务器节点;
客户端节点向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
进一步的,本发明还包括若定期获取的服务器节点的CPU利用率或/和内存利用率,超过对应的预设阈值,则最小化服务端节点在一定时间内接收到的业务请求量的前提下,采用流量控制策略对每个客户端节点的首次发送业务请求时刻与***起始时刻偏差进行调节。
本发明第二方面提供了一种微服务动态自适应客户端负载均衡***,用于实现本发明第一方面所述的一种微服务动态自适应客户端负载均衡方法,所述***至少包括客户端节点、服务器节点和注册中心;所述客户端节点包括设备/网关、管理平台、Gateway网关模块和负载均衡器;所述服务器节点包括服务器负载信息收集模块和微服务执行模块,多个服务器节点构成微服务集群;所述客户端节点和所述服务器节点分别在所述注册中心中完成注册;
所述客户端节点通过所述设备/网关、Gateway网关模块向微服务集群中每个服务器节点发起请求;所述服务器节点通过服务器负载信息收集模块采集服务器节点的负载信息,通过负载均衡器搭载的动态反馈权重负载均衡算法对采集的负载信息进行处理,确定出当前权重最大的服务器节点;向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
本发明的有益效果:
本发明通过在客户端实现负载均衡,可减轻服务端的负担,提高***的可伸缩性和容错性,根据微服务集群中服务器节点的实际负载情况和处理能力,动态选择负载均衡算法,从而避免在低负载情况下使用动态反馈权重负载均衡算法造成资源浪费效率低下的问题,并且,在动态反馈权重负载均衡算法中能够根据服务器的实际负载情况和不同服务类型占用资源差异,动态调整权重系数从而更新权重;最后,根据权重大小对可用服务器节点进行评估,选择最优的服务器节点进行请求的转发。同时本实施例还可以考虑***并发总量较大的情况,根据服务节点的负载情况,在服务入口处按照一定策略动态限制进入的流量大小,实现动态的、实时的流量控制,提高***的可靠性、可扩展性、响应速度和吞吐量,提高了***的稳定性。因此,本发明是一种有益的负载均衡方案。
附图说明
图1是服务端负载均衡示意图;
图2是客户端负载均衡示意图;
图3是本发明实施例所述负载均衡方法的一种实施方式的流程图;
图4为本发明实施例进行动态权重反馈负载均衡算法的流程图;
图5是本发明实施例所述负载均衡方法的一种优选实施方式的流程图;
图6为本发明实施例进行遗传算法求最优的***模型图;
图7是本发明实施例所述负载均衡***架构图;
图8为本发明实施例提供的另一种负载均衡方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3是本发明实施例所述负载均衡方法的一种实施方式的流程图,如图3所示,所述方法包括以下步骤:
101、客户端节点定期向微服务集群中每个服务器节点发送服务请求,以获取服务器节点的性能参数负载信息,并将负载信息缓存至Redis中;所述负载信息包括CPU利用率、内存利用率、网络带宽利用率、磁盘I/O利用率;
在本发明实施例中,客户端节点中的负载均衡器会定期向每个服务器节点发送请求以获取节点的负载信息,这可以是基于Linux***提供/proc文件***来保存***当前的运行状态,可以通过读取和分析/proc文件来获取节点的内存利用率和CPU利用率等负载指标信息,并将其存入Redis缓存中。
对于负载均衡器而言,负载均衡器对可用服务器建立socket连接,引入QPS参数,QPS值可根据当前节点任务的接收和处理量实时计算得到,服务器负载信息收集模块每隔T(T初始设定为5s,当节点QPS超过阈值后,将周期设定为2s)秒收集可用服务实例对应服务器的CPU利用率、内存利用率、磁盘I/O利用率和网络带宽利用率,通过socket连接推送至负载均衡器中并进行Redis缓存。
在初始状态下,会根据虚拟机中每个节点服务器的硬件资源信息,结合虚拟机中服务器初始的CPU性能、内存性能、磁盘I/O以及网络带宽性能,设置初始的权值并进行Redis缓存。
所述根据初始状态下根据虚拟机中每个节点服务器的硬件资源信息设置初始权值具体包括:
假设用分别代表集群中第i个服务器初始的CPU性能、内存性能,磁盘I/O以及网络带宽性能,其中i∈(1,2,...,n),其具体的性能指标定义如下:
其中,Cmax、Rmax、Imax、Nmax分别表示最大可用核数、最大可用内存、最大可用磁盘、最大可用网络带宽,Ucpu、Umem、Uio、Unet分别表示CPU利用率、内存利用率、磁盘I/O利用率、网络带宽利用率。
用分别表示集群所有节点CPU、内存、磁盘I/O以及网络带宽的性能情况的总和,将/>定义为服务器节点i∈(1,2,...,n)的初始权重,其中k为常量,作为节点初始权重的调节因子。
其中,ωc、ωr、ωio、ωn分别表示CPU、内存、磁盘I/O以及网络带宽的性能对应的权重系数。
102、客户端节点根据微服务集群中每个服务器节点的负载信息的各个实际负载率与实际负载率阈值的大小,或/和综合负载率与综合负载率阈值的大小进行判断,若超过对应的负载率阈值,则采用动态反馈权重负载均衡算法确定出当前权重最大的服务器节点;
在本发明实施例中,在可用的服务器节点中,当某服务器节点的各负载信息的负载率或综合负载率大于该服务器节点设置的各性能参数单个阈值和综合负载率阈值时,则使用动态反馈权重负载均衡算法实现合理分配请求,否则可以使用常见的一些负载均衡算法使服务请求均匀的分发到合适的服务器节点上,包括但不限于轮询算法、加权轮询算法和最小连接算法等,例如可以平滑加权轮询负载均衡算法。
而对于本发明使用动态反馈权重负载均衡算法实现合理分配请求时,如图4所示,首先判断是否是第一次获取负载信息,如果是则根据负载信息计算权重,并保持至Redis,如果不是则引入节点资源使用率的标准差和阈值Q两个值,比较节点资源使用率的标准差与设定的阈值Q来决定是否需要更新权重,如果节点资源使用率的标准差大于阈值Q,说明当前节点过载,需要计算权值并更新并保持至Redis,否则不需要计算权值并更新,直接从Redis中获取前一次的权重信息。通过比较可用服务器节点的权重,确定出权重最大所在的服务器。重新计算权重时应考虑不同服务类型(IO密集型和CPU密集型)请求时占用资源不同以及节点性能评估的误差,导致节点的资源利用率不均的问题。通过对比负载评价指标与负载评价指标均值/>判断负载评价指标权重系数是否需要提高或降低。
所述根据负载信息计算权重具体包括:
从Redis中获取各个服务器节点的负载信息也即服务器节点的CPU利用率、内存利用率、网络带宽利用率、磁盘I/O利用率,并将利用率换算成剩余率;
使用加权和法结合各个服务器节点的四个负载评价指标与权重系数构造评价函数,利用评价函数计算服务器节点的权重;
结合服务器节点的初始权重与动态权重,得到服务器节点的最终权重。
假设用Wdi定义为服务器节点i的动态权重,其中i∈(1,2,...,n),用PC(Total)、PR(Total)、PI(Total)、PN(Total)分别代表服务器集群所有节点CPU、内存、磁盘I/O和网络带宽总剩余性能,用分别代表集群中第i个服务器的CPU剩余性能、内存剩余性能、磁盘I/O剩余性能和网络带宽剩余性能,其中V表示权重变化的参考变量,该值默认值为1。
其中,ωc、ωr、ωio、ωn分别表示CPU剩余性能、内存剩余性能、磁盘I/O剩余性能和网络带宽剩余性能对应的权重系数。
令服务器节点的最终权重为WEi。最终权重越大,分配到服务请求的可能性就越大,WEi与服务器的性能呈正相关,但是/>是静态的,在对服务请求处理过程中,服务器的剩余性能不断变化,而/>仅能反映单个服务器节点的性能而无法反映其负载情况。因此,本发明引入了动态的权重Wdi,在一定程度上反映了服务器节点的负载情况,WEi与Wdi也呈正相关,B是放大常数,使结果放大若干倍,使丢弃的小数部分减小,从而减少误差,WEi的计算公式如下:
本实施例通过静态权重和动态权重的结合,能够准确反映服务器节点的性能情况和负载情况,使得最终确定的权重更为准确,提升负载均衡的效率。
所述比较节点资源使用率的标准差与设定的阈值Q来决定是否需要更新权重具体包括:
如果每次都将采集到的各个节点的负载进行权重计算并频繁重新赋值,不仅不能达到负载均衡的目的,反而会给服务节点带来性能影响。采用标准差来判断服务器各个节点的资源利用情况,引入阈值Q作为是否启动修改权值流程的临界值。通过比较节点资源使用率的标准差与设定的阈值Q来决定是否需要更新权重。如果标准差大于阈值Q,则进行权重修改,否则不进行权重修改。设服务节点的资源利用率的标准差为S(σ),服务节点的资源使用率用Ui表示,服务节点平均动态使用率用表示,则服务节点的资源利用率的标准差计算公式为:
其中,
所述考虑不同服务类型(IO密集型和CPU密集型)请求时占用资源不同以及节点性能评估的误差,导致节点的资源利用率不均的问题,判断负载评价指标权重系数是否需要提高或降低具体包括:
集群***在实际运行过程中,由于不同请求占用资源不同以及节点性能评估的误差,导致节点的资源利用率不均,这里考虑不同服务类型有IO密集型和CPU密集型这两种。当请求为IO密集型,物理机需要大量快速地进行磁盘I/O的读取,此时对磁盘I/O的要求就很高,此时应增大磁盘I/O利用率以及网络带宽利用率对应的权重系数,当请求为CPU密集型,相应地就需要物理机提供快速地运算能力,此时应增大CPU利用率以及内存利用率对应的权重系数。
考虑到较高的负载评价指标应获取较高的权重系数,通过对比负载评价指标与负载评价指标均值/>判断负载评价指标权重系数是否需要提高或降低,其中/>下面以权重系数ωc更新算法为例阐述。
当则认为服务器节点i的CPU负载评价指标对该服务器的影响增大,此时应提高其对应的权重系数ωc,反之则认为服务器节点i的CPU负载评价指标对该服务器的影响减小,此时应减小其对应的权重系数ωc,权重系数修正变量α如下式所示:
则权重系数更新后的表达式如下所示:
由于权重系数需要满足各权重系数相加为1,故本实施例可以对ωc’、ωr’、ωio’、ωn’进行如下的归一化处理:
在本发明的一些实施例中,当对每个服务器节点的负载信息的各个实际负载率与实际负载率阈值的大小,或/和综合负载率与综合负载率阈值的大小进行判断,若没有超过对应的负载率阈值时,则可以使用传统负载均衡算法进行负载均衡处理,以使用平滑加权轮询算法为例,首先,计算每个服务器的权重之和,初始时,所有服务器的当前有效权重都设置为0,随着请求的到来,每次先从所有服务器中选取当前有效权重最大的服务器进行处理,处理完请求后,选中的服务器的有效权重需要减去所有已选择服务器的权重和来更新该服务器的当前有效权重,在下一次请求时,重新计算所有服务器的当前有效权重,并选择当前有效权重最大的服务器,如此反复循环,在加权过程中进行平滑处理,避免让权重大的节点连续被选中造成局部短时间内负载过重,从而实现负载均衡,提高整个***的性能和稳定性。
103、客户端节点向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
在本发明实施例中,客户端节点向通过动态反馈权重负载均衡算法确定出的最大权重的服务器节点发送调用请求,并在该服务器节点的微服务执行模块中执行请求,并把执行结果返回给客户端节点;从而实现了负载均衡的目的。
图5是本发明实施例所述负载均衡方法的一种优选实施方式的流程图,如图5所示,所述方法包括以下步骤:
201、客户端节点定期向微服务集群中每个服务器节点发送服务请求,以获取服务器节点的性能参数负载信息,并将负载信息缓存至Redis中;所述负载信息包括CPU利用率、内存利用率、网络带宽利用率、磁盘I/O利用率;
202、客户端节点根据微服务集群中每个服务器节点的负载信息的各个实际负载率与实际负载率阈值的大小,或/和综合负载率与综合负载率阈值的大小进行判断,若超过对应的负载率阈值,则采用动态反馈权重负载均衡算法确定出当前权重最大的服务器节点;
203、客户端节点向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
204、若定期获取的服务器节点的CPU利用率或/和内存利用率,超过对应的预设阈值,则最小化服务端节点在一定时间内接收到的业务请求量的前提下,采用流量控制策略对每个客户端节点的首次发送业务请求时刻与***起始时刻偏差进行调节。
本实施例将重点对步骤204进行说明,本实施例中,首先,***初始运行时,先将流控等级设定为一级,在该等级下,正常请求无需进行流控操作。根据服务节点的CPU占用率Ucpu或者内存占用率Umem的情况,作为流控调整的参考条件,对流控等级进行动态升降,以达到不同程度的控制效果。
在本实施例中,按照一定策略动态限制进入的流量大小,以减小节点的负载压力,主要包括当CPU占用率Ucpu或者内存占用率Umem超过90%时,将流控等级设定为二级,假设业务***中存在m个消费者集合{c1,c2,...,cm};每个消费者周期性向服务器发送业务请求,其周期分别为T1,T2,...,Tm。消费者cx发送业务请求的时刻分别用表示,设cx首次发送业务请求时刻与***起始时刻偏差为Δtx,则cx第j次发送业务请求相对于***起始时刻的偏差时间为:
由于业务***中各设备时钟硬件精度各异且网络传输存在延时抖动,所以各消费者发送业务请求的时刻值与请求到达服务端的时刻值之间可能存在偏差,为简化模型,设cx第j次业务请求到达服务端的时刻满足区间其中,δx为客户端节点cx对应的服务延迟参数,与消费者cx与服务端之间的网络状况等因素相关,其为常数且满足0<δx<Ty。
假设cx第j次业务请求达到时间在区间内均匀分布,则服务端任意时刻的业务请求量如图6所示(假设3个消费者也即三个客户端节点),可表示为消费者的各次请求到达时间区间在服务端时间轴上投影的叠加之合,即任意时刻服务端业务请求数可表示为:
其中Φ(t,x)定义为:
为使服务端业务负载均衡,即服务端在τ时间内接收到的业务请求量尽量少,在消费者业务请求周期保持不变化的前提下,可通过对每个消费者的Δtx进行调节,避免多个消费者业务请求在同一时间段内集中达到。则设计优化目标函数为:
s.t.0≤Δtx<Ty
其中(Δt1,Δt2,...,Δtm)为业务***内所有消费者时间偏差参数向量。
在求解这个优化问题时,使用遗传算法进行求解。遗传算法可以通过优良的全局搜索能力来寻找最优解。具体来说,可以按照以下步骤进行解决:
(1)初始化种群:定义种群规模为K,初始化目标函数的K组解,每一组解称作一个个体或染色体,每一组解中的分量称作基因即时间偏差参数向量,其中每个参数满足0≤Δtx<Ty的约束条件;
(2)计算适应度:计算每个个体的适应度值时,应该遵循适应度值越大,个体越优秀的原则,适应度值可以由目标函数取倒数来表示;
(3)选择操作:使用轮盘赌法选择操作,根据个体的适应度值,选择一部分优秀的个体作为父代用于繁殖下一代;
基于轮盘赌法,即基于适应度比例的选择策略。定义Fi为个体i的适应度值,
个体i被选中的概率pi为:
依次比较[0,1]区间的随机数rand与个体i的累积概率qi,其中选中qi第一次大于rand的个体,重复K次直至选出K个体。
(4)交叉操作:种群中基于交叉概率随机选择两个个体以及交叉的基因位置通过将其基因交换,产生新个体;
采用实数交叉,设b为[0,1]区间随机数,第k个染色体ak和第l个染色体al在j位的交叉操作方法如下所示:
(5)变异操作:对新生成的后代个体进行变异操作,种群中基于变异概率随机选择一个个体以及变异基因位置进行非均匀变异,变异操作可以通过改变个体中的某些参数值来增加种群的多样性;
设r为[0,1]区间随机数,gen为当前迭代次数,maxgen为最大迭代次数,第i个体的第j个基因aij进行变异操作的方法如下所示:
其中amin和amax分别为aij的下界和上界。
(6)更新种群:将父代和后代个体合并为新一代种群;
(7)重复步骤(2)至步骤(6):设置进化代数maxgen,迭代执行步骤(2)至步骤(6)maxgen次,直至达到终止条件;
(8)输出最优解:当终止条件满足时,输出适应度值最大的个体作为最优解,即业务***内所有消费者的时间偏差参数向量(Δt1,Δt2,...,Δtm)。
通过以上步骤,本发明可以找到一种方式,使得一段时间内业务数量到达量最小,从而保证服务器稳定运行。
图7是一种微服务动态自适应客户端负载均衡***架构图,如图7所示,所述***至少包括客户端节点、服务器节点和注册中心;所述客户端节点包括设备/网关、管理平台、Gateway网关模块和负载均衡器;所述服务器节点包括服务器负载信息收集模块和微服务执行模块,多个服务器节点构成微服务集群;所述客户端节点和所述服务器节点分别在所述注册中心中完成注册;所述客户端节点通过所述设备/网关、Gateway网关模块向微服务集群中每个服务器节点发起请求;所述服务器节点通过服务器负载信息收集模块采集服务器节点的负载信息,通过负载均衡器搭载的动态反馈权重负载均衡算法对采集的负载信息进行处理,确定出当前权重最大的服务器节点;向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
在本发明实施例中,客户端节点作为微服务的使用者,负责发起一个或以并发方式进行多个请求,可以利用服务注册与发现组件Nacos获取微服务实例的IP地址、端口号和健康状态等信息,通过负载均衡模块动态选择负载均衡算法选择最合适的微服务实例对请求进行处理,以实现负载均衡的目的;
所述Gateway网关可以过滤和安全验证路由请求,并将请求转发到负载均衡调度器,网关能够根据服务请求的类型、流量、性能和资源等因素将请求转发到不同的微服务实例中,从而降低单个实例的压力,提高***的可用性和性能,确保负载平衡,提高***的稳定性和性能;
在本发明实施例中,所述负载均衡器中还可以包括负载均衡模块,所述负载均衡模块中信息处理模块的负载均衡器是微服务架构的核心组件,它先接收由服务网关过滤和路由后的请求,根据Nacos注册中心提供的服务地址快速检索哪些集群服务器上部署了请求的服务,再根据资源监控的数据,计算各个集群服务器的负载并选取权重最大的服务器,最终将请求平均分配到多个实例上,以达到负载均衡的效果,提高整个***的性能和可靠性;
所述注册中心主要负责微服务的注册和服务发现,服务提供方将自身的信息注册到Nacos注册中心,服务消费者通过服务名发现可用的服务实例,查询可用的微服务实例并根据负载均衡算法选择合适的实例进行调用,Nacos注册中心提供快速检索实例信息的服务地址,为负载均衡调度器提供了必要的数据,帮助实现负载均衡器的基本功能,同时提高了整个微服务架构的可靠性和性能;
所述微服务集群模块由多台部署了微服务实例的服务器组成,主要包括微服务执行模块和服务器负载信息收集模块两个部分;
进一步的,所述微服务执行模块的主要功能是接收并处理负载均衡调度器发送的负载请求,并根据预设的负载均衡算法,从集群中选择一台服务器来执行请求,此外,微服务执行模块还需要接收服务请求返回的响应并将其反馈给请求端,由于微服务实例通常部署在不同的服务器上,因此微服务执行模块需要在不同的服务器之间进行请求转发,以保证任务能够被及时地执行处理。
进一步的,所述服务器负载信息收集模块周期性收集异构服务器集群负载参数指标,由于考虑到选取的评估服务器资源负载参数指标需要方便收集,不会给服务带来过多资源消耗,也能准确地衡量服务器的性能状态以及服务节点对服务请求的处理能力,综合上述考虑,选取CPU利用率、内存利用率、磁盘I/O利用率和网络带宽利用率硬件指标来定义综合负载,从而综合考虑每个服务器集群的负载处理性能来限制请求分配。
图8为本发明实施例提供的另一种微服务动态自适应客户端负载均衡方法流程图,如图8所示,所述方法包括以下步骤:
步骤1:初始化各个服务器负载信息设置和初始权值设置,将流控等级设定为一级;
步骤2:消费者发起服务的请求,将请求传递给Spring Cloud Gateway网关例如Spring Cloud Gateway网关,转到步骤3;
步骤3:服务网关接受请求,然后发送请求到负载均衡模块,转到步骤4;
步骤4:注册中心上已经记载了微服务的相关信息,传到负载均衡模块以后,在注册中心查询部署该服务实例的服务器,若没有部署该服务,则返回请求无法执行,结束流程,若部署了该服务,找到此时服务请求对应的服务实例的可用服务器列表,获得其IP地址、端口等信息并发送到负载均衡模块,继续往下执行,转到步骤5;
步骤5:判断微服务集群上是否只有一台服务器部署了该服务,若只有一台服务器部署了该服务,则直接由该服务去执行服务请求。若不止一台服务器部署了该服务,则需要经过比较确定最终由哪台服务器来执行请求,转到步骤6;
步骤6:负载信息处理模块周期性获取并计算所需服务器当前负载信息,当CPU占用率或者内存占用率超过90%时,将流控等级设定为二级,按照一定策略动态限制进入的流量大小,转到步骤7;
步骤7:在可用的服务节点中,当某服务节点的各负载信息的负载率或综合负载率大于该服务节点设置的各负载信息单个阈值和综合负载率阈值时,使用动态反馈权重负载均衡算法,转到步骤8,动态反馈权重负载均衡算法的核心是将权重作为选择服务器的标准,反之使用平滑加权轮询算法,转到步骤9;
步骤8:使用动态反馈权重负载均衡算法,负载均衡模块向权重最大的所在的服务器发送调用请求,转到步骤10;
步骤9:使用平滑加权轮询算法使服务请求均匀的分发到合适的服务器节点上,转到步骤10;
步骤10:服务器集群中微服务执行模块对请求进行合理的分配,接收服务请求返回的响应并将其反馈给请求客户端,从而达到负载均衡的目的,等待下一次服务请求,从步骤2开始。
可以理解的是,本发明实施例中的一种微服务动态自适应客户端负载均衡方法及***属于相同的发明构思,其相应的技术特征可以相互引用,本发明就不再赘述。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (9)
1.一种微服务动态自适应客户端负载均衡方法,其特征在于,所述方法包括:
客户端节点定期向微服务集群中每个服务器节点发送服务请求,以获取服务器节点的负载信息,并将负载信息缓存至Redis中;所述负载信息包括CPU利用率、内存利用率、网络带宽利用率、磁盘I/O利用率;
客户端节点根据微服务集群中每个服务器节点的负载信息的各个实际负载率与实际负载率阈值的大小,或/和综合负载率与综合负载率阈值的大小进行判断,若超过对应的负载率阈值,则采用动态反馈权重负载均衡算法确定出当前权重最大的服务器节点;
客户端节点向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
2.根据权利要求1所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,所述动态反馈权重负载均衡算法包括:
获取负载信息并判断是否为第一次获取,若是,则根据负载信息计算权重并将其保存至Redis;若不是,则对当前服务器节点的资源使用率的标准差和阈值Q两个值进行比较,如果当前服务器节点资源使用率的标准差大于阈值Q,则根据负载信息计算权重并将其保存至Redis,否则,直接从Redis中获取上一次的权重,通过比较可用服务器节点的权重,确定出权重最大所在的服务器。
3.根据权利要求2所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,所述根据负载信息计算权重具体包括:
从Redis中获取各个服务器节点的负载信息,并将利用率换算成剩余率;
使用加权和法结合各个服务器节点的四个负载评价指标与权重系数构造评价函数,利用评价函数计算服务器节点的权重;
结合服务器节点的初始权重与动态权重,得到服务器节点的最终权重。
4.根据权利要求3所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,服务器节点的动态权重的表达式如下所示:
其中,Wdi表示服务器节点i的动态权重;V表示权重变化的参考变量;ωc、ωr、ωio、ωn分别表示CPU剩余性能、内存剩余性能、磁盘I/O剩余性能和网络带宽剩余性能对应的权重系数;分别代表微服务集群中服务器节点i的CPU剩余性能、内存剩余性能、磁盘I/O剩余性能和网络带宽剩余性能;PC(Total)、PR(Total)、PI(Total)、PN(Total)分别代表微服务器集群所有服务器节点的CPU、内存、磁盘I/O和网络带宽总剩余性能。
5.根据权利要求4所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,服务器节点的最终权重的表达式如下所示:
WEi=B*Wi 0*Wdi
其中,WEi表示服务器节点i的最终权重;B是放大常数;Wi 0表示服务器节点i的初始权重。
6.根据权利要求3所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,对服务器节点的各个权重参数按照性能评价指标进行修正,修正后的各个权重参数如下所示:
其中,ωc ′、ωr ′、ωio ′、ωn ′分别表示修正后的CPU剩余性能、内存剩余性能、磁盘I/O剩余性能、网络带宽剩余性能的权重系数;分别代表微服务集群中服务器节点i的CPU剩余性能负载评价指标、内存剩余性能负载评价指标、磁盘I/O剩余性能负载评价指标和网络带宽剩余性能负载评价指标;/>分别代表微服务集群中服务器节点i的CPU剩余性能负载评价指标均值、内存剩余性能负载评价指标均值、磁盘I/O剩余性能负载评价指标均值和网络带宽剩余性能负载评价指标均值。
7.根据权利要求1所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,所述方法还包括若定期获取的服务器节点的CPU利用率或/和内存利用率,超过对应的预设阈值,则最小化服务端节点在一定时间内接收到的业务请求量的前提下,采用流量控制策略对每个客户端节点的首次发送业务请求时刻与***起始时刻偏差进行调节。
8.根据权利要求7所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,最小化服务端节点在一定时间内接收到的业务请求量的优化模型表示为:
s.t.0≤Δtx<Ty
其中,τ表示一定时间,Φ(t,x)表示客户端节点cx在t时刻的指示函数,当/>时,Φ(t,x)=1,否则Φ(t,x)=0,(Δt1,Δt2,...,Δtm)为业务***内所有消费者也即客户端节点时间偏差参数向量,Ty表示第y个周期,δx为客户端节点cx对应的服务延迟参数,/>表示客户端节点cx第j次发送业务请求相对于***起始时刻的偏差时间。
9.一种微服务动态自适应客户端负载均衡***,用于实现如权利要求1~8任一所述的一种微服务动态自适应客户端负载均衡方法,其特征在于,所述***至少包括客户端节点、服务器节点和注册中心;所述客户端节点包括设备/网关、管理平台、Gateway网关模块和负载均衡器;所述服务器节点包括服务器负载信息收集模块和微服务执行模块,多个服务器节点构成微服务集群;所述客户端节点和所述服务器节点分别在所述注册中心中完成注册;
所述客户端节点通过所述设备/网关、Gateway网关模块向微服务集群中每个服务器节点发起请求;所述服务器节点通过服务器负载信息收集模块采集服务器节点的负载信息,通过负载均衡器搭载的动态反馈权重负载均衡算法对采集的负载信息进行处理,确定出当前权重最大的服务器节点;向微服务集群中当前权重最大的服务器节点发送调用请求,在对应的微服务执行模块中执行请求,并把执行结果返回给客户端节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311171774.6A CN117155942A (zh) | 2023-09-11 | 2023-09-11 | 一种微服务动态自适应客户端负载均衡方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311171774.6A CN117155942A (zh) | 2023-09-11 | 2023-09-11 | 一种微服务动态自适应客户端负载均衡方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117155942A true CN117155942A (zh) | 2023-12-01 |
Family
ID=88884048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311171774.6A Pending CN117155942A (zh) | 2023-09-11 | 2023-09-11 | 一种微服务动态自适应客户端负载均衡方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117155942A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117478610A (zh) * | 2023-12-27 | 2024-01-30 | 成都新希望金融信息有限公司 | 全局流量控制方法、装置、电子设备及存储介质 |
CN117714056A (zh) * | 2024-02-05 | 2024-03-15 | 中国船舶集团有限公司第七〇七研究所 | 一种面向服务的专用密码服务体系 |
-
2023
- 2023-09-11 CN CN202311171774.6A patent/CN117155942A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117478610A (zh) * | 2023-12-27 | 2024-01-30 | 成都新希望金融信息有限公司 | 全局流量控制方法、装置、电子设备及存储介质 |
CN117478610B (zh) * | 2023-12-27 | 2024-03-12 | 成都新希望金融信息有限公司 | 全局流量控制方法、装置、电子设备及存储介质 |
CN117714056A (zh) * | 2024-02-05 | 2024-03-15 | 中国船舶集团有限公司第七〇七研究所 | 一种面向服务的专用密码服务体系 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109218355B (zh) | 负载均衡引擎,客户端,分布式计算***以及负载均衡方法 | |
US10812615B2 (en) | Caching method, system, device and readable storage media for edge computing | |
CN109308221B (zh) | 一种基于WebSocket长连接的Nginx动态负载均衡方法 | |
CN117155942A (zh) | 一种微服务动态自适应客户端负载均衡方法及*** | |
CN113938488B (zh) | 一种基于动静态加权轮询的负载均衡方法 | |
CN111258762B (zh) | 一种动态周期的媒体服务器负载均衡算法 | |
CN109960585A (zh) | 一种基于kubernetes的资源调度方法 | |
CN110764912A (zh) | 一种自适应任务调度器及方法 | |
CN111459617A (zh) | 基于云平台的容器化应用自动分配优化***及其方法 | |
CN109831524B (zh) | 一种负载均衡处理方法及装置 | |
US20030037093A1 (en) | Load balancing system and method in a multiprocessor system | |
CN113110933A (zh) | 一种具有Nginx负载均衡技术的*** | |
CN109032800A (zh) | 一种负载均衡调度方法、负载均衡器、服务器及*** | |
CN111143036A (zh) | 一种基于强化学习的虚拟机资源调度方法 | |
Li et al. | An efficient scheduling optimization strategy for improving consistency maintenance in edge cloud environment | |
CN113822456A (zh) | 一种云雾混构环境下基于深度强化学习的服务组合优化部署方法 | |
US20090313633A1 (en) | Method and System for Managing a Workload in a Cluster of Computing Systems with Multi-Type Operational Resources | |
CN115629865B (zh) | 一种基于边缘计算的深度学习推理任务调度方法 | |
CN114118560A (zh) | 一种基于微服务的路由方法、装置、设备及存储介质 | |
CN115529316A (zh) | 一种基于云计算中心网络架构的微服务部署方法 | |
CN116909735A (zh) | 算力调度方法及装置、服务器和存储介质 | |
JP2005148911A (ja) | 負荷分散方法及び装置とシステム並びにプログラム | |
CN116302578B (zh) | 一种QoS约束的流应用延迟确保方法及*** | |
CN113722112A (zh) | 一种服务资源负载均衡处理方法及*** | |
CN116302404B (zh) | 面向资源解耦合数据中心的服务器无感知计算调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |