CN117155868A - 全链路自适应负载均衡方法、装置、介质及设备 - Google Patents

全链路自适应负载均衡方法、装置、介质及设备 Download PDF

Info

Publication number
CN117155868A
CN117155868A CN202310755143.2A CN202310755143A CN117155868A CN 117155868 A CN117155868 A CN 117155868A CN 202310755143 A CN202310755143 A CN 202310755143A CN 117155868 A CN117155868 A CN 117155868A
Authority
CN
China
Prior art keywords
service
flow
threshold
load
traffic
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
Application number
CN202310755143.2A
Other languages
English (en)
Inventor
陈健斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tongdun Technology Co ltd
Original Assignee
Tongdun Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tongdun Technology Co ltd filed Critical Tongdun Technology Co ltd
Priority to CN202310755143.2A priority Critical patent/CN117155868A/zh
Publication of CN117155868A publication Critical patent/CN117155868A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding 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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本公开实施方式涉及一种全链路自适应负载均衡方法、全链路自适应负载均衡装置、计算机可读存储介质及电子设备,涉及计算机技术领域。代理进程获取所述服务的当前负载;确定所述服务的当前负载与所述服务的负载阈值之间的大小关系;在所述服务的当前负载与所述服务的负载阈值之间的大小关系不符合预设条件的情况下,根据所述服务的负载阈值确定对应的所述服务的流量阈值;所述预设条件为所述服务的当前负载等于所述服务的负载阈值;将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量。如此,充分利用资源的同时,不会存在请求的无效转发。

Description

全链路自适应负载均衡方法、装置、介质及设备
技术领域
本公开的实施方式涉及计算机技术领域,更具体地,本公开的实施方式涉及一种全链路自适应负载均衡方法、全链路自适应负载均衡装置、计算机存储介质及电子设备。
背景技术
本部分旨在为权利要求中陈述的本公开的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。
当前大多数的互联网系统都使用了服务器集群技术,集群,即将相同服务部署在多个服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等。在实际应用中,在Web服务器集群之前总会有一个负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一个Web服务器,将客户端的请求转发给这个Web服务器处理,实现客户端到真实服务端的透明转发。
也就是说,负载均衡是将业务请求及时转发至相应的服务(功能)的方法。在存在多个服务的场景下,各业务请求流量经过多层负载均衡的转发后,直接到达相应的服务。相关技术中,服务存在以下两个问题:
(1)服务的限流在服务本身,而无法告知全链路,如此,链路中该服务的上游服务无法根据服务的实时负载调整流量,如此,在业务请求流量到达服务时,如果业务请求流量高于服务的流量阈值,会造成请求的无效转发,浪费宽带资源的同时,也对宽带资源造成了额外开销;
(2)如果业务请求流量低于服务的流量阈值,则不能充分的利用资源。
发明内容
本公开提供一种全链路自适应负载均衡方法、全链路自适应负载均衡装置、计算机存储介质及电子设备,以根据服务的当前负载,实时调整服务的流量,充分利用资源的同时,不会存在请求的无效转发。
根据本公开的第一方面,提供一种全链路自适应负载均衡方法,应用于设置于服务的代理进程,所述方法包括:获取所述服务的当前负载;其中,所述当前负载的类型至少包括CPU占用率、平均响应时间和平均负载中的一者;确定所述服务的当前负载与所述服务的负载阈值之间的大小关系;在所述服务的当前负载不等于所述服务的负载阈值的情况下,根据所述服务的负载阈值确定对应的所述服务的流量阈值;将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量。
在一种实施方式中,所述服务为多个,所述在所述服务的当前负载与所述服务的负载阈值之间的大小关系不符合预设条件的情况下,根据所述服务的负载阈值确定对应的流量阈值,包括:在所述服务的当前负载大于所述服务的负载阈值的情况下,根据所述服务的当前负载和所述服务的负载阈值,确定所述服务的负载降低权重;将所述负载降低权重作为所述服务的流量降低权重;获取所述服务的当前流量,并根据所述服务的流量降低权重和所述服务的当前流量确定所述服务的流量降低量;根据所述服务的流量降低量和所述服务的当前流量确定所述服务的第一更新流量阈值。
在一种实施方式中,所述根据所述服务的流量降低量和所述服务的当前流量确定所述服务的第一更新流量阈值,包括:确定所述服务的当前流量和所述服务的流量降低量之差,得到所述服务的流量差值;确定所述服务的流量差值小于所述服务的流量阈值,并将所述服务的流量差值作为所述服务的第一更新流量阈值。
在一种实施方式中,所述将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量,包括:将所述服务的第一更新流量阈值和所述服务的流量降低权重传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述服务的第一更新流量阈值和所述服务的流量降低权重调整所述服务的流量。
在一种实施方式中,所述服务的上游服务根据所述服务的第一更新流量阈值和所述服务的流量降低权重调整所述服务的流量,包括:所述服务的上游服务根据所述服务的流量降低权重和所述上游服务的当前流量,确定所述服务的分配流量;所述服务的上游服务以所述服务的分配流量和所述服务的第一更新流量阈值中的小者调整所述服务的流量。
在一种实施方式中,所述服务为多个,所述在所述服务的当前负载与所述服务的负载阈值之间的大小关系不符合预设条件的情况下,根据所述服务的负载阈值确定对应的流量阈值,包括:在所述服务的当前负载小于所述服务的负载阈值的情况下,根据所述服务的当前负载和所述服务的负载阈值,确定所述服务的负载增加权重;将所述负载增加权重作为所述服务的流量增加权重;获取所述服务的当前流量,并根据所述服务的流量增加权重和所述服务的当前流量确定所述服务的流量增加量;根据所述服务的流量增加量和所述服务的当前流量确定所述服务的第二更新流量阈值。
在一种实施方式中,在所述获取所述服务的当前负载之前,所述方法包括:获取所述服务的冷启动最低流量值和冷启动最高流量值;将所述冷启动最低流量值和所述冷启动最高流量值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述冷启动最低流量值和所述冷启动最高流量值调整所述服务的流量。
在一种实施方式中,在所述链路上所述服务的上游服务根据所述限流阈值调整所述服务的流量之后,所述方法包括:将所述服务的下线信息传递至所述服务所在的链路和与所述服务连接的注册中心,以使所述链路上所述服务的上游服务根据所述服务的下线信息将所述服务的流量权重调整为零,并使应用程序在预设时长后不调用所述服务;所述应用程序包括一个或多个所述服务;确定所述服务是处理完残留请求后下线的。
根据本公开的第二方面,提供一种全链路自适应负载均衡装置,所述装置包括:数据获取模块,被配置为获取所述服务的当前负载;其中,所述当前负载的类型至少包括CPU占用率、平均响应时间和平均负载中的一者;第一确定模块,被配置为确定所述服务的当前负载与所述服务的负载阈值之间的大小关系;第二确定模块,被配置为在所述服务的当前负载不等于所述服务的负载阈值的情况下,根据所述服务的负载阈值确定对应的所述服务的流量阈值;处理模块,被配置为将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量。
根据本公开实施方式的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种方法。
根据本公开实施方式的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种方法。
根据本公开实施方式的全链路自适应负载均衡方法、全链路自适应负载均衡方法装置、计算机可读存储介质及电子设备,代理进程根据当前负载实时调整服务的流量阈值,并将服务的流量阈值传递至整个链路,使得链路上服务的上游服务根据流量阈值调整服务的流量。一方面,代理进程根据当前负载实时调整服务的流量阈值并告知全链路,上游服务根据服务的流量阈值为服务分配流量,不会存在请求的无效转发,如此,不会造成宽带资源的浪费,也不会对宽带资源造成额外开销。另一方面,代理进程根据当前负载实时调整服务的流量阈值,如此,上游服务根据服务的流量阈值为服务分配尽可能多的流量,使得资源得到充分利用。
附图说明
图1示出本公开实施方式中一种全链路自适应负载均衡方法的流程架构示意图;
图2示出本公开实施方式中一种全链路自适应负载均衡方法的流程图;
图3示出本公开实施方式中一种全链路自适应负载均衡方法的子流程图;
图4示出本公开实施方式中一种全链路自适应负载均衡方法的子流程图;
图5示出本公开实施方式中一种全链路自适应负载均衡方法的子流程图;
图6示出本公开实施方式中一种全链路自适应负载均衡方法的子流程图;
图7示出本公开实施方式中一种全链路自适应负载均衡方法的子流程图;
图8示出本公开实施方式中一种全链路自适应负载均衡方法的子流程图;
图9示出本公开实施方式中一种全链路自适应负载均衡方法的示意图;
图10示出本公开实施方式中一种全链路自适应负载均衡方法的示意图;
图11示出本公开实施方式中一种全链路自适应负载均衡方法的示意图;
图12示出本公开实施方式中一种全链路自适应负载均衡方法的示意图;
图13示出本公开实施方式中一种全链路自适应负载均衡方法的示意图;
图14示出本公开实施方式中一种全链路自适应负载均衡方法的示意图;
图15示出本公开实施方式中一种全链路自适应负载均衡装置的结构示意图;
图16示出本公开实施方式中一种电子设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下文将结合附图更全面地描述本公开的示例性实施方式。
附图为本公开的示意性图解,并非一定是按比例绘制。附图中所示的一些方框图可能是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在硬件模块或集成电路中实现这些功能实体,或在网络、处理器或微控制器中实现这些功能实体。实施方式能够以多种形式实施,不应被理解为限于在此阐述的范例。本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或多个实施方式中。在下文的描述中,提供许多具体细节从而给出对本公开实施方式的充分说明。然而,本领域技术人员应意识到,可以在实现本公开的技术方案时省略其中的一个或多个特定细节,或者可以采用其它的方法、组元、装置、步骤等替代一个或多个特定细节。
图1示出了系统架构的示意图,该系统架构100可以包括代理进程110与服务120。其中,代理进程110可以泛指提供全链路自适应负载均衡服务的后个系统(如全链路自适应负载均衡服务系统),可以是一个服务器或多个服务器形成的集群。服务120可以是一个服务器或多个服务器形成的集群。代理进程110可以获取服务120的当前负载,并确定服务的当前负载与服务的负载阈值之间的大小关系;在服务的当前负载与服务的负载阈值之间的大小关系不符合预设条件的情况下,根据服务的负载阈值确定对应的服务的流量阈值;将服务的流量阈值传递至服务所在的链路,以使链路上服务的上级服务根据流量阈值调整服务的流量。代理进程110和服务120之间可以通过有线或无线的通信链路形成连接,以进行数据交互。
下面结合图2对本示例性实施方式中的全链路自适应负载均衡方法进行说明,图2示出了该全链路自适应负载均衡方法的示例性流程,应用于设置于服务的代理进程,可以包括以下步骤S210至S240:
步骤S210、获取服务的当前负载;其中,当前负载的类型至少包括CPU占用率、平均响应时间和平均负载中的一者;
步骤S220、确定服务的当前负载与服务的负载阈值之间的大小关系;
步骤S230、在服务的当前负载不等于服务的负载阈值的情况下,根据服务的负载阈值确定对应的服务的流量阈值;
步骤S240、将服务的流量阈值传递至服务所在的链路,以使链路上服务的上游服务根据流量阈值调整服务的流量。
在上述全链路自适应负载均衡方法中,代理进程根据当前负载实时调整服务的流量阈值,并将服务的流量阈值传递至整个链路,使得链路上服务的上游服务根据流量阈值调整服务的流量。一方面,上游服务根据服务的流量阈值为服务分配流量,不会有多余的请求到达服务,如此,不会造成宽带资源的浪费,也不会对宽带资源造成额外开销。另一方面,代理进程根据当前负载实时调整服务的流量阈值,如此,上游服务能够为服务分配尽可能多的流量,使得资源得到充分利用。
下面对图2中的每个步骤进行具体说明。
参考图2,步骤S210中,获取服务的当前负载。
其中,当前负载的类型至少包括CPU占用率、平均响应时间和平均负载中的一者。
CPU占用率,即CPU的使用率,可以理解为处理器的繁忙程度,一般的,使用率低会比较空闲,使用率高会比较繁忙,当使用率超过90%基本上会达到满载(并不是达到100%才到满载)可能会出现卡顿的现象;CPU占用率可以通过以下过程得到:首先,读取/proc/pid/stat文件,其中记录了从开机到当前时刻,本进程所占用的CPU时间(单位jiffies);然后,读取/proc/stat文件,其中记录了从开机到当前时刻,系统所占用的CPU时间(单位jiffies);最后,取两个时间点,这两个时间点的进程耗时差,除以系统耗时差,得到的就是该进程的CPU占用率。
平均响应时间是指系统对请求作出响应的平均时间,可以通过所有样本的响应时间与样本数量的比值确定。
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也是平均活跃进程数。其中,可运行状态的进程是指正在使用CPU或者正在等待CPU的进程,即是可以采用ps命令查看处于R状态的进程。不可中断状态的进程是指处于内核态关键流程中的进程,且不可被打断,比如最常见的是等待硬件设备的I/O响应,即是可以采用ps命令看到的D状态的进程;可以通过ps命令查看两个时间点之间的R状态的进程和D状态的进程,再除以两个时间点的时差得到。
继续参考图2,步骤S220中,确定服务的当前负载与服务的负载阈值之间的大小关系。
其中,在当前负载只包括CPU占用率时,负载阈值为CPU占用率阈值;比如:CPU占用率阈值为80%,那么,当前负载为70%时,即,当前负载小于负载阈值;当前负载为90%时,即,当前负载大于负载阈值。
在当前负载只包括平均响应时间时,负载阈值为平均响应时间阈值;比如:平均响应时间阈值为3s,那么,平均响应时间为2s时,即,当前负载小于负载阈值;平均响应时间为4s时,即,当前负载大于负载阈值。
在当前负载只包括平均负载时,负载阈值为平均负载阈值;比如:平均负载阈值为50个进程,那么,平均负载为40个进程时,即,当前负载小于负载阈值;平均负载为60个进程时,即,当前负载大于负载阈值。
在当前负载包括CPU占用率、平均响应时间、平均负载中至少两者时,可以基于经验,将该至少两者中的小者的阈值作为负载阈值;比如:当前负载包括CPU占用率和平均响应时间,CPU占用率为60%,平均响应时间为2ms,CPU占用率阈值为80%,平均响应时间阈值为3ms,依据经验,在当前的CPU占用率和平均响应时间下,CPU占用率更易达到阈值,那么,将CPU占用率阈值作为负载阈值。
继续参考图2,步骤S230中,在服务的当前负载与不等于服务的负载阈值的情况下,根据服务的负载阈值确定对应的服务的流量阈值。
其中,服务的当前负载不等于服务的负载阈值的情况包括两种,即,服务的当前负载大于服务的负载阈值,或者服务的当前负载小于服务的负载阈值。
流量阈值可以通过小于负载阈值的某一负载与流量的对应关系确定,比如:负载阈值是80%,在负载为60%时,对应的流量为200,那么,负载阈值80%对应的流量阈值为200*80%/60=267。
继续参考图2,步骤S240中,将服务的流量阈值传递至服务所在的链路,以使链路上服务的上游服务根据流量阈值调整服务的流量。
其中,上游服务也可设置代理进程,在上游服务也设置代理进程的情况下,将服务的流量阈值传递至上游服务的代理进程即可,上游服务代理进程即可根据流量阈值调节上游服务分配给服务的流量。
此外,网关也可设置代理进程,在网关也设置代理进程的情况下,将服务的流量阈值传递至网关的代理进程即可,网关的代理进程即可根据流量阈值调节网关分配给服务的流量。
进一步的,本步骤中,链路上的任一服务或网关均可设置代理进程。
在服务的流量阈值传递至整个链路后,上游服务以流量阈值为准调整服务的流量,即,将服务的流量调整至流量阈值;这里,在当前流量大于流量阈值的情况下,降低流量;在当前流量小于流量阈值的情况下,提高流量。
此外,上述步骤S210至S240为服务为一个的情况,此时,上游服务的所有流量都分配给服务,因此,可以直接根据服务的流量阈值进行流量调节,而无需顾虑权重。
在一种实施方式中,服务为多个,此时,上游服务将其接收到的流量分配给多个服务,因此,上游服务根据各服务的权重和流量阈值进行调整;具体的,上述步骤S230可以进一步包括以下步骤S310至S340:
步骤S310、在服务的当前负载大于服务的负载阈值的情况下,根据服务的当前负载和服务的负载阈值,确定服务的负载降低权重。
其中,负载降低权重可以通过以下过程实现:首先,确定当前负载与负载阈值的差值;其次,确定差值与理论满载的比值;最后,将上述比值确定为负载降低权重。比如:当前负载只包括CPU占用率,CPU占用率阈值为80%,当前CPU占用率为90%,那么,负载降低权重为10%;再比如:当前负载包括CPU占用率和平均响应时间,CPU占用率阈值为80%,平均响应时间阈值为3s,当前CPU占用为90%,当前平均响应时间为4s,根据经验,降低平均响应时间比降低CPU占用率更难,因此,以平均响应时间阈值为准进行调整,那么,在平均响应时间理论最大值为4s的情况下,负载降低权重为(4-3)/4=25%。
步骤S320、将负载降低权重作为服务的流量降低权重。
其中,由于负载与流量之间正相关,因此,可以直接将负载降低权重作为服务的流量降低权重进行计算和调整。
步骤S330、获取服务的当前流量,并根据服务的流量降低权重和服务的当前流量确定服务的流量降低量。
其中,由于服务的当前负载大于服务的负载阈值,因此。服务的当前流量与服务的负载阈值对应的流量阈值相同;即,本步骤中的当前流量为流量阈值。进一步的,流量降低量可以通过以下过程实现:首先,通过负载阈值与流量阈值确定理论流量最大值;然后,将流量降低权重和理论流量最大值的乘积作为流量降低量。比如:CPU占用率阈值为80%,对应的流量阈值为80,当前CPU占用率为90%,那么,理论流量最大值为100,流量降低权重为10%,流量降低量为10。
步骤S340、根据服务的流量降低量和服务的当前流量确定服务的第一更新流量阈值。
其中,通过当前流量和流量降低量可确定出调整后的流量,若此时调整后的流量大于流量阈值,那么,上调流量阈值得到第一更新流量阈值;若此时调整后的流量小于流量阈值,那么下调流量阈值得到第一更新流量阈值。
在一种实施方式中,参考图4,可以通过以下步骤S410和S420确定第一更新流量阈值:
步骤S410、确定服务的当前流量和服务的流量降低量之差,得到服务的流量差值。
举例而言,当前流量(流量阈值)为80,流量降低量为10,那么,流量差值为80-10=70。
步骤S420、确定服务的流量差值小于服务的流量阈值,并将服务的流量差值作为服务的第一更新流量阈值。
接上面的例子,举例而言,将上述70作为第一更新流量阈值。
在一种实施方式中,由于服务为多个,此时,上游服务将其接收到的流量分配给多个服务,因此,上游服务根据各服务的权重和流量阈值进行调整;具体的,上述步骤S240可以进一步包括以下步骤:
将服务的第一更新流量阈值和服务的流量降低权重传递至服务所在的链路,以使链路上服务的上游服务根据服务的第一更新流量阈值和服务的流量降低权重调整服务的流量。
其中,将第一更新流量阈值和流量降低权重传递至上游服务,上游服务即可根据其接收到的流量,确定采用流量降低权重得到的需要分配给服务的流量,以及采用第一更新流量阈值得到的需要分配给服务的流量;如此,通过权重(流量降低权重)和流量阈值(第一更新流量阈值)相辅相成,能够实时调整服务的流量,使得充分利用资源的同时,不会使服务接收到其无法处理的流量。
在一种实施方式中,参考图5,上述步骤中的“服务的上游服务根据服务的第一更新流量阈值和服务的流量降低权重调整服务的流量”,可以进一步包括以下步骤S510和S520:
步骤S510、服务的上游服务根据服务的流量降低权重和上游服务的当前流量,确定服务的分配流量。
其中,分配流量可以通过以下过程实现:首先,通过流量降低权重和当前流量权重确定调整后的流量权重;然后,将调整后的流量权重与当前流量的乘积作为分配流量;比如:服务的当前流量权重为50%,流量降低权重为10%,那么,调整后的流量权重为40%,在上游服务的当前流量为200的情况下,服务的分配流量为80。
步骤S520、服务的上游服务以服务的分配流量和服务的第一更新流量阈值中的小者调整服务的流量。
其中,在上游服务的流量增大的情况下,分配流量也会增大,此时,分配流量可能会超过第一更新流量阈值,那么,为了使服务不会接收到其无法处理的流量,则按照第一更新流量阈值为服务分配流量。
在上游服务的流量减小的情况下,分配流量也会减小,此时,分配流量可能会小于第一更新流量阈值,那么,为了使各服务负载均衡,则按照分配流量为服务分配流量。
在一种实施方式中,服务为多个,此时,上游服务将其接收到的流量分配给多个服务,因此,上游服务根据各服务的权重和流量阈值进行调整;具体的,参考图6,服务为多个,上述步骤S230可以进一步包括以下步骤S610至S640:
步骤S610、在服务的当前负载小于服务的负载阈值的情况下,根据服务的当前负载和服务的负载阈值,确定服务的负载增加权重。
其中,本步骤的实现方法与上述步骤S310相同,此处不再赘述。
步骤S620、将负载增加权重作为服务的流量增加权重。
其中,本步骤的实现方法与上述步骤S320相同,此处不再赘述。
步骤S630、获取服务的当前流量,并根据服务的流量增加权重和服务的当前流量确定服务的流量增加量。
其中,本步骤的实现方法与上述步骤S330相同,此处不再赘述。
步骤S640、根据服务的流量增加量和服务的当前流量确定服务的第二更新流量阈值。
其中,本步骤的实现方法与上述步骤S340相同,此处不再赘述。
在一种实施方式中,当服务启动时,服务处于未预热状态,为了使服务平滑上线,可以采用与上面不同的方式调整服务的流量;具体的,参考图7,在上述步骤S210之前,该方法还可以进一步包括以下步骤S710和S720:
步骤S710、获取服务的冷启动最低流量值和冷启动最高流量值。
其中,冷启动最低流量值是服务上线时,能够处理的最低流量。
冷启动最高流量值是服务上线时,能够处理的最高流量。
步骤S720、将冷启动最低流量值和冷启动最高流量值传递至服务所在的链路,以使链路上服务的上游服务根据冷启动最低流量值和冷启动最高流量值调整服务的流量。
其中,上游服务为服务分配冷启动最低流量值与冷启动最高流量值之间的流量即可,如此,既不会造成流量浪费,也不会使服务接收到无法处理的流量。
此外,微服务体系中会有对应的注册中心,比如:zookeeper,nacos之类的中间件,因此,上游服务能够知晓下游服务是否上线,在下游服务上线后,获取该下游服务的冷启动最低流量值和冷启动最高流量值即可。
在本步骤之后,按照上面图2至图6的方法调节服务的流量即可。
在一种实施方式中,当服务下线时,为了使服务平滑下线,将残留的流量处理完,可以采用与上面不同的方式调整服务的流量,具体的,参考图8,在上述步骤S240之后,该方法还可以进一步包括以下步骤S810和S820:
步骤S810、将服务的下线信息传递至服务所在的链路和与服务连接的注册中心,以使链路上服务的上游服务根据服务的下线信息将服务的流量权重调整为零,并使应用程序在预设时长后不调用服务。
其中,应用程序包括一个或多个服务。
预设时长是预设的服务处理残留流量的时间,这里,预设时长可以根据经验确定,也可以根据默认设置的,还可以是用户设置的,此处不做限定。
步骤S820、确定服务是处理完残留请求后下线的。
其中,代理进程可以随服务一起下线,也可以不下线,此处不做限定。
在一种实施方式中,如图9所示,在服务为三个时,假设网关接收到20个请求到业务服务(上游服务),业务服务转发20个请求至订单服务,而订单服务的代理进程判断当前的服务负载较高,比如CPU占用率已经达到80%,此时只能处理10个请求,那么,订单服务的代理进程将自动修改自身的限流值为10,再将限流值传递至全链路,业务服务接收到限流值后将调整对该服务的权重及限流值为10。
假设这是下单服务,那么业务服务除了调用订单服务外还需要调用账户或者商品服务进行扣库存扣款等操作,在这个例子中,如果商品服务的限流值是20,订单服务的限流值也是20,但是业务服务最大流量为20,那么,当订单服务要求限流为10时,业务服务也会将下单服务限流为10。如此,就达到了全局,全链路的一致性限流和减少了资源浪费,此图只显示到了业务服务,其实实际可以接着传递到网关,直到源头,将限流全局统一。
在一种实施方式中,如图10所示,在服务为多个时,网关接收到流量后,会将流量转发至对应的业务服务中,假设这是查询订单的请求,那么业务服务将会转发请求去订单服务的代理进程中,由代理进程再转发至订单服务,权重为1000,限流值为1000,该限流可以在业务服务侧,也可以在网关侧,还可以在订单服务侧。如果限流在网关侧,那么网关是对用户,如web,手机app等各种渠道来的流量进行限流,如果在业务服务侧,那么就是业务服务对网关转发来的流量进行限流。
假设网关侧流量为1000,总共3个订单服务,且3个订单服务的权重相同,那么,由网关转发到对应的业务服务,业务服务负载均衡后,根据负载均衡结果将流量转发到订单服务的代理进程上,每个订单服务约为333流量。
在一种实施方式中,如图11所示,在服务为两个时,由于业务服务知道有几个订单服务,那么每个订单服务限流值为20时,业务服务的总上限限流值为40,权重完全一致时,比如订单服务1和订单服务2都是1000,那么每个订单服务每秒接收的流量为20,当此时又上线一个新的订单服务时,通常的负载均衡策略会将流量等比例的放大,如40就变成了60。
以上图9至图11所描述的都是限流降低的场景,而当代理进程的自检程序判断出对应的订单服务还有很大的能力承受请求,那么它会向上游反馈增大自己的限流值,如限流为20,可调整为40,不断在自我检测中,实时调整,将资源最大化利用。比如CPU占用率为10%,流量为20,响应时间为1ms,那么理论上流量完全可以在这个计算中逐步的增加到140,直到CPU达到一个冗余空间如70%。
在一种实施方式中,如图12所示,对权重和限流之间的关系进行说明,比如业务服务,或者网关限流为100,服务有2个,那么,权重都为100的情况下,每个服务都是50的流量,而业务上不同的请求造成的压力也会不同,不能完全通过限流相同来解决压力过大的问题,所以需要服务的代理进程进行流量代理及自我诊断,动态向上游反馈要求其减少对自己的压力。比如:订单服务2压力过大,要求业务服务降低对其10%的权重,那么以100为例,即调整为90,而订单服务1目前压力较轻,可以多承受一些压力,那么会调整自身的权重增加10%,即调整为110。那么如果有100个请求进来,按90+110权重,订单服务1就是55%的流量,而订单服务2就是45%的流量,如此,订单服务2的流量会减少,并交由承受能力更强的节点。
在一种实施方式中,如图13所示,当新的订单服务启动时,存在冷启动的最低流量值,当前的示例里为10,最大为50,新上线节点初始流量为10,那么由于场景的微服务体系中会有对应的注册中心如zookeeper,nacos,所以业务服务知道有新节点上线,此时新节点的权重比例就会被调整为10/110大概是9%的流量会转发至订单服务,由于新启动的节点,基本处于未预热的状态,当面临大流量,应用可能出现抖动,需要达到一定的请求量后才会扩容,否则性能会严重受影响,因此,优雅上线的目的就是让应用节点平滑慢慢的达到最优的状态。
在一种实施方式中,如图14所示,当应用下线后,如果还有残留请求到对应的应用,那么会出现网络不可达导致异常,这样会影响应用的稳定性和可用性,所以要尽量降低流量,并告知上游服务自身即将下线,把权重调整为0,并保证自身把剩余的流量处理完成后再下线,如此,才会优雅下线且更安全。
具体的,可以采用如下过程进行优雅下线:
步骤1、如果此时在下线时发现还有流量,那么在响应给上游时,增加降低权重的标识;
步骤2、告知注册中心自身要下线,如此,可以使预设时长之后才有请求到该服务的应用知道该服务即将下线,从而不再调用该服务
步骤3、将还在正常状态的请求处理完毕,进行下线。
在介绍了本公开示例性全链路自适应负载均衡方法之后,接下来,参考图15对本公开示例性实施方式的全链路自适应负载均衡装置进行说明。
参考图15所示,全链路自适应负载均衡装置1500,包括:
数据获取模块1510,被配置为获取服务的当前负载;其中,当前负载至少包括CPU占用率、平均响应时间和平均负载中的一者;
第一确定模块1520,被配置为确定服务的当前负载与服务的负载阈值之间的大小关系;
第二确定模块1530,被配置为在服务的当前负载不等于服务的负载阈值的情况下,根据服务的负载阈值确定对应的服务的流量阈值;
处理模块1540,被配置为将服务的流量阈值传递至服务所在的链路,以使链路上服务的上游服务根据流量阈值调整服务的流量。
在一种实施方式中,服务为多个,上述第二确定模块1530被配置为:在服务的当前负载大于服务的负载阈值的情况下,根据服务的当前负载和服务的负载阈值,确定服务的负载降低权重;将负载降低权重作为服务的流量降低权重;获取服务的当前流量,并根据服务的流量降低权重和服务的当前流量确定服务的流量降低量;根据服务的流量降低量和服务的当前流量确定服务的第一更新流量阈值。
在一种实施方式中,上述第二确定模块1530被配置为:确定服务的当前流量和服务的流量降低量之差,得到服务的流量差值;确定服务的流量差值小于服务的流量阈值,并将服务的流量差值作为服务的第一更新流量阈值。
在一种实施方式中,上述处理模块1540被配置为:将服务的第一更新流量阈值和服务的流量降低权重传递至服务所在的链路,以使链路上服务的上游服务根据服务的第一更新流量阈值和服务的流量降低权重调整服务的流量。
在一种实施方式中,上述处理模块1540被配置为:服务的上游服务根据服务的流量降低权重和上游服务的当前流量,确定服务的分配流量;服务的上游服务以服务的分配流量和服务的第一更新流量阈值中的小者调整服务的流量。
在一种实施方式中,服务为多个,上述第二确定模块1530被配置为:在服务的当前负载小于服务的负载阈值的情况下,根据服务的当前负载和服务的负载阈值,确定服务的负载增加权重;将负载增加权重作为服务的流量增加权重;获取服务的当前流量,并根据服务的流量增加权重和服务的当前流量确定服务的流量增加量;根据服务的流量增加量和服务的当前流量确定服务的第二更新流量阈值。
在一种实施方式,上述全链路自适应负载均衡装置1500还包括启动模块,上述启动模块被配置为:获取服务的冷启动最低流量值和冷启动最高流量值;将冷启动最低流量值和冷启动最高流量值传递至服务所在的链路,以使链路上服务的上游服务根据冷启动最低流量值和冷启动最高流量值调整服务的流量。
在一种实施方式,上述全链路自适应负载均衡装置1500还包括下线模块,上述下线模块被配置为:将服务的下线信息传递至服务所在的链路和与服务连接的注册中心,以使链路上服务的上游服务根据服务的下线信息将服务的流量权重调整为零,并使应用程序在预设时长后不调用服务;应用程序包括一个或多个服务;确定服务是处理完残留请求后下线的。
上述装置中各部分的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。
本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种可选的实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施方式还提供一种电子设备,该电子设备例如可以是上述查询方110与服务方120。该电子设备可以包括处理器与存储器。存储器存储有处理器的可执行指令,如可以是程序代码。处理器通过执行该可执行指令来执行本示例性实施方式中的异常用户群组识别方法,如可以执行图2的方法步骤。
下面参考图16,以通用计算设备的形式对电子设备进行示例性说明。应当理解,图16显示的电子设备1600仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来限制。
如图16所示,电子设备1600可以包括:处理器1610、存储器1620、总线1630、I/O(输入/输出)接口1640、网络适配器1650。
存储器1620可以包括易失性存储器,例如RAM 1621、缓存单元1622,还可以包括非易失性存储器,例如ROM 1623。存储器1620还可以包括一个或多个程序模块1624,这样的程序模块1624包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。例如,程序模块1624可以包括上述全链路自适应负载均衡装置1500中的各模块。
总线1630用于实现电子设备1600的不同组件之间的连接,可以包括数据总线、地址总线和控制总线。
电子设备1600可以通过I/O接口1640与一个或多个外部设备2000(例如键盘、鼠标、外置控制器等)进行通信。
电子设备1600可以通过网络适配器1650与一个或者多个网络通信,例如网络适配器1650可以提供如3G/4G/5G等移动通信解决方案,或者提供如无线局域网、蓝牙、近场通信等无线通信解决方案。网络适配器1650可以通过总线1630与电子设备1600的其它模块通信。
尽管图16中未示出,还可以在电子设备1600中设置其它硬件和/或软件模块,包括但不限于:显示器、微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。

Claims (11)

1.一种全链路自适应负载均衡方法,其特征在于,应用于设置于服务的代理进程,所述方法包括:
获取所述服务的当前负载;其中,所述当前负载的类型至少包括CPU占用率、平均响应时间和平均负载中的一者;
确定所述服务的当前负载与所述服务的负载阈值之间的大小关系;
在所述服务的当前负载不等于所述服务的负载阈值的情况下,根据所述服务的负载阈值确定对应的所述服务的流量阈值;
将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量。
2.根据权利要求1所述的全链路自适应负载均衡方法,其特征在于,所述服务为多个,所述在所述服务的当前负载与所述服务的负载阈值之间的大小关系不符合预设条件的情况下,根据所述服务的负载阈值确定对应的流量阈值,包括:
在所述服务的当前负载大于所述服务的负载阈值的情况下,根据所述服务的当前负载和所述服务的负载阈值,确定所述服务的负载降低权重;
将所述负载降低权重作为所述服务的流量降低权重;
获取所述服务的当前流量,并根据所述服务的流量降低权重和所述服务的当前流量确定所述服务的流量降低量;
根据所述服务的流量降低量和所述服务的当前流量确定所述服务的第一更新流量阈值。
3.根据权利要求2所述的全链路自适应负载均衡方法,其特征在于,所述根据所述服务的流量降低量和所述服务的当前流量确定所述服务的第一更新流量阈值,包括:
确定所述服务的当前流量和所述服务的流量降低量之差,得到所述服务的流量差值;
确定所述服务的流量差值小于所述服务的流量阈值,并将所述服务的流量差值作为所述服务的第一更新流量阈值。
4.根据权利要求2或3所述的全链路自适应负载均衡方法,其特征在于,所述将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量,包括:
将所述服务的第一更新流量阈值和所述服务的流量降低权重传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述服务的第一更新流量阈值和所述服务的流量降低权重调整所述服务的流量。
5.根据权利要求4所述的全链路自适应负载均衡方法,其特征在于,所述服务的上游服务根据所述服务的第一更新流量阈值和所述服务的流量降低权重调整所述服务的流量,包括:
所述服务的上游服务根据所述服务的流量降低权重和所述上游服务的当前流量,确定所述服务的分配流量;
所述服务的上游服务以所述服务的分配流量和所述服务的第一更新流量阈值中的小者调整所述服务的流量。
6.根据权利要求1所述的全链路自适应负载均衡方法,其特征在于,所述服务为多个,所述在所述服务的当前负载与所述服务的负载阈值之间的大小关系不符合预设条件的情况下,根据所述服务的负载阈值确定对应的流量阈值,包括:
在所述服务的当前负载小于所述服务的负载阈值的情况下,根据所述服务的当前负载和所述服务的负载阈值,确定所述服务的负载增加权重;
将所述负载增加权重作为所述服务的流量增加权重;
获取所述服务的当前流量,并根据所述服务的流量增加权重和所述服务的当前流量确定所述服务的流量增加量;
根据所述服务的流量增加量和所述服务的当前流量确定所述服务的第二更新流量阈值。
7.根据权利要求1所述的全链路自适应负载均衡方法,其特征在于,在所述获取所述服务的当前负载之前,所述方法包括:
获取所述服务的冷启动最低流量值和冷启动最高流量值;
将所述冷启动最低流量值和所述冷启动最高流量值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述冷启动最低流量值和所述冷启动最高流量值调整所述服务的流量。
8.根据权利要求1所述的全链路自适应负载均衡方法,其特征在于,在所述链路上所述服务的上游服务根据所述限流阈值调整所述服务的流量之后,所述方法包括:
将所述服务的下线信息传递至所述服务所在的链路和与所述服务连接的注册中心,以使所述链路上所述服务的上游服务根据所述服务的下线信息将所述服务的流量权重调整为零,并使应用程序在预设时长后不调用所述服务;所述应用程序包括一个或多个所述服务;
确定所述服务是处理完残留请求后下线的。
9.一种全链路自适应负载均衡装置,其特征在于,包括:
数据获取模块,被配置为获取所述服务的当前负载;其中,所述当前负载至少包括CPU占用率、平均响应时间和平均负载中的一者;
第一确定模块,被配置为确定所述服务的当前负载与所述服务的负载阈值之间的大小关系;
第二确定模块,被配置为在所述服务的当前负载不等于所述服务的负载阈值的情况下,根据所述服务的负载阈值确定对应的所述服务的流量阈值;
处理模块,被配置为将所述服务的流量阈值传递至所述服务所在的链路,以使所述链路上所述服务的上游服务根据所述流量阈值调整所述服务的流量。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~8任一项所述的方法。
11.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~8任一项所述的方法。
CN202310755143.2A 2023-06-25 2023-06-25 全链路自适应负载均衡方法、装置、介质及设备 Pending CN117155868A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310755143.2A CN117155868A (zh) 2023-06-25 2023-06-25 全链路自适应负载均衡方法、装置、介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310755143.2A CN117155868A (zh) 2023-06-25 2023-06-25 全链路自适应负载均衡方法、装置、介质及设备

Publications (1)

Publication Number Publication Date
CN117155868A true CN117155868A (zh) 2023-12-01

Family

ID=88904975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310755143.2A Pending CN117155868A (zh) 2023-06-25 2023-06-25 全链路自适应负载均衡方法、装置、介质及设备

Country Status (1)

Country Link
CN (1) CN117155868A (zh)

Similar Documents

Publication Publication Date Title
JP4984169B2 (ja) 負荷分散プログラム、負荷分散方法、負荷分散装置およびそれを含むシステム
US9306825B2 (en) Providing a witness service
CN110505155B (zh) 请求降级处理方法、装置、电子设备及存储介质
US20070220149A1 (en) Load balance control method and load balance control apparatus in data-processing system
US20080077657A1 (en) Transaction takeover system
CN111131505A (zh) 基于p2p网络的数据传输方法、设备、系统、装置及介质
CA3030504A1 (en) Blockchain network and task scheduling method therefor
CN112600761A (zh) 一种资源分配的方法、装置及存储介质
WO2023185071A1 (zh) 数据查询方法、数据写入方法、相关装置和系统
CN109428926B (zh) 一种调度任务节点的方法和装置
CN118368287A (zh) 客户端驱动的云网络访问系统和方法
CN108111630B (zh) 一种Zookeeper集群系统及其连接方法和系统
KR101195123B1 (ko) 클라우드 컴퓨팅 네트워크 시스템 및 그것의 파일 분산 방법
CN117155868A (zh) 全链路自适应负载均衡方法、装置、介质及设备
CN115225496B (zh) 一种基于边缘计算环境的移动感知服务卸载容错方法
JP5082111B2 (ja) コンピュータシステム、サービス利用装置、制御方法、及びプログラム
US20230401103A1 (en) System and method of dynamically adjusting virtual machines for a workload
CN112769960B (zh) 一种基于Nginx服务器的主动流量控制方法及系统
CN113946376B (zh) 负载调整方法、装置、电子设备及存储介质
CN112291326B (zh) 负载均衡方法、负载均衡装置、存储介质与电子设备
CN113364615B (zh) 滚动升级的方法、装置、设备和计算机可读介质
US10708343B2 (en) Data repository for a distributed processing environment
CN113448715B (zh) 一种资源调度方法和装置
CN113760319B (zh) 一种更新应用的方法和系统
JP4046562B2 (ja) 負荷分散方法

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