CN118606002A - 负载均衡方法、系统及可读存储介质 - Google Patents
负载均衡方法、系统及可读存储介质 Download PDFInfo
- Publication number
- CN118606002A CN118606002A CN202410755027.5A CN202410755027A CN118606002A CN 118606002 A CN118606002 A CN 118606002A CN 202410755027 A CN202410755027 A CN 202410755027A CN 118606002 A CN118606002 A CN 118606002A
- Authority
- CN
- China
- Prior art keywords
- load
- pod
- node
- load information
- preset
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种负载均衡方法、系统及可读存储介质,该方法包括:获取集群中各节点以及节点内各个pod的负载信息,负载信息包括多项负载使用量;判断集群中各个pod是否处于负载均衡状态;若否,则基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于各个节点以及pod的第一负载分值计算各个pod的第二负载分值;第二负载分值最大值对应的pod,将待调度请求调度至所述pod。与现有技术相比,可以避免节点过载产生的阻塞,缓解资源利用不足而浪费的问题。进一步的,自动下发服务网格可以降低运维成本,通过实时负载作出反馈,保持负载均衡,优化服务质量,可扩展性高。
Description
技术领域
本发明属于微服务技术领域,具体涉及一种负载均衡方法、系统及可读存储介质。
背景技术
微服务架构的大多数框架和开源软件,其侵入式设计使得需要在业务逻辑中集成相关的服务治理组件。在服务网格架构下,通过网格代理进行服务间通信。所有应用程序间的流量和对流量的管理控制都会通过代理在服务网格中实现。进一步的,容器虚拟化技术可以标准化微服务部署,这种容器化的微服务架构不仅在云计算领域得到广泛应用,面向边缘场景的多样化需求也具有良好的适应性。在云边环境中部署容器化微服务应用能同时享受边缘节点的低访问延迟和云数据中心的高计算能力,根据流量策略,每个服务的请求都可以选择在节点上到达目的服务的不同版本的不同实例上。
由于集群节点的配置是异构的,不同的节点处理能力不同,且边缘节点的资源有限,不同类型的微服务链对资源需求不同。同时在集群中服务的动态性也会影响调度决策,集群的资源和微服务的负载通常处于动态变化和迭代中,导致用户请求的分布也在不断发生变化,现有的调度方案很难在短时间根据服务负载量的变化做出实时的动态响应,对服务动态响应的缺失也必然会导致服务质量难以得到保证。
因此,针对上述技术问题,有必要提供一种改良的基于负载均衡的调度方案。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种负载均衡方法、系统及可读存储介质,其能够避免节点过载产生阻塞的问题,并缓解资源利用不足而浪费的问题。
为了实现上述目的,本发明一具体实施例提供的技术方案如下:
第一方面,本发明提供了一种负载均衡方法,其包括:
获取集群中各节点以及所述节点内各个pod的负载信息,所述负载信息包括多项负载使用量;
判断集群中各个pod是否处于负载均衡状态;
若否,则基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;
基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于所述各个节点以及pod的第一负载分值计算各个pod的第二负载分值;
获取所述第二负载分值最大值对应的pod,将待调度请求调度至所述pod。
在本发明的一个或多个实施方式中,所述基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点,包括:
若所述节点负载信息中存在至少一项负载使用量大于对应的负载使用量阈值,则该节点为不可调度节点;
若所述节点负载信息中全部所述负载使用量均小于或等于对应负载使用量阈值,则该节点为可调度节点。
在本发明的一个或多个实施方式中,所述方法还包括:
获取所述负载信息对应的时间戳,并计算当前时间与所述时间戳记载的时间的差值;
若当前时间与所述时间戳记载的时间的差值大于预设的有效阈值,则所述负载信息无效;
若当前时间与所述时间戳记载的时间的差值小于或等于预设的有效阈值,则所述负载信息有效。
在本发明的一个或多个实施方式中,所述负载评估算法为:
finalScore=(nodeScore×γnode+podScore×γpod)/(γnode+γpod)
其中,αi为节点负载信息中记录的各负载使用量;γi为αi对应的权重值;bj为pod负载信息中记录的各负载使用量;γj为bj对应的权重值;MaxScore为预设的最大分值;γnode为节点第一负载分值在第二负载分值中的权重,γpod为pod第一负载分值在第二负载分值中的权重,finalScore为pod对应的负载分值。
在本发明的一个或多个实施方式中,所述方法还包括:
对集群内各节点以及pod的工作负载进行实时监控;
基于预设的监控策略,周期性采集集群中各节点以及所述节点内各个pod的负载信息;
基于预设时间区间内采集的负载信息的平均值标注对应pod,并基于所述时间区间对所述平均值添加时间戳。
在本发明的一个或多个实施方式中,所述方法还包括:
对所述集群内各节点以及pod的工作负载进行实时监控;
基于预设的监控策略,周期性采集集群内各节点以及所述节点内各个pod的负载信息;
基于最近一次采集到的所述负载信息标注对应pod,并基于采集时间对所述负载信息添加时间戳。
在本发明的一个或多个实施方式中,所述方法还包括:
若所述集群负载均衡,则基于轮询算法或最小连接算法或随机选择健康实例法对待调度请求进行调度。
第二方面,本发明提供一种负载均衡系统,其包括:
获取模块,用于获取集群中各节点以及所述节点内各个pod的负载信息,所述负载信息包括多项负载使用量;
判断模块,用于判断集群中各个pod是否处于负载均衡状态;
筛选模块,用于当集群负载不均衡时,基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;
计算模块,用于基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于所述各个节点以及pod的第一负载分值计算各个pod的第二负载分值;
调度模块,用于获取所述第二负载分值最大值对应的pod,将待调度请求调度至所述pod。
第三方面,本发明提供一种负载均衡系统,其包括:
监控模块,用于对集群内各节点以及pod的工作负载进行实时监控,基于预设的监控策略,周期性采集所述集群中各节点以及各所述节点内pod的负载信息;
数据输入模块,用于实时更新所述负载信息,并基于预设的监控策略对所述负载信息进行处理并上送至优化处理模块;
优化处理模块,用于基于各个pod负载使用量的方差值,动态选择负载均衡策略;
文件读写模块,用于读取选中的负载均衡策略;
应用部署模块,用于基于所述选中的负载均衡策略写入命令行,完成应用修改部署。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行所述的负载均衡方法。
与现有技术相比,本发明提供的负载均衡方法,基于服务网格的负载均衡请求调度策略,根据生产环境的真实工作负载和资源使用率进行服务网格节点的过滤和筛选,可以避免节点过载产生阻塞的问题,同时考虑节点异构和服务差异,能够在一定程度上缓解资源利用不足而浪费的问题。进一步的,自适应的应用系统能够动态地更新优选负载均衡策略,自动下发服务网格可以降低运维成本,通过实时负载感知作出反馈,保持负载均衡,优化服务质量。基于该负载均衡方法,配置信息自动下发模块完成整个动态优选策略的过程,不侵入源代码,可扩展性高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施方式中负载信息的获取处理架构示意图;
图2是本发明一实施方式中负载均衡方法的流程示意图;
图3是本发明一实施方式中负载均衡系统的结构框图;
图4是本发明一实施方式中电子设备的结构框图;
图5是本发明一实施方式中应用系统架构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
为了方便理解本申请的技术方案,下面首先对本发明中可能出现的技术术语进行详细解释。
微服务架构(Microservice Architecture):是一种架构概念,旨在通过将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。本质上是用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。
服务网格(Service Mesh):使用服务网格不用操心服务治理的细节,所有业务之外的功能都由服务网格去做,服务网格在业务逻辑和服务治理逻辑之间划分出一条清晰的界线,是所有的架构模式中解耦和复用程度最为彻底的方法。服务网格架构下,通过网格代理进行服务间通信。所有应用程序间的流量和对流量的管理控制都会通过代理在服务网格中实现。服务网格中每个微服务实例都会配置一个Sidecar代理,主要职责是接管相应服务的入流量和出流量,例如服务订阅、服务发现、熔断、限流、降级和分布式跟踪等服务治理的所有功能都由Sidecar接管,应用服务间互相访问只需要与Sidecar进行通信即可。随着大量Sidecar在微服务中的部署,这些Sidecar节点自然地形成了一个服务网格。
在现有技术方案中存在多种服务网格中调度请求的方法,其一为通过单一的固定请求调度策略对待调度的请求进行调度,在这种调度策略下,难以满足应用需求,无法实现出色的实时响应。在负载实时变化的普遍情况下,由于无法感知当前负载分布状态,易造成性能低节点过载而产生阻塞,而性能高节点存在资源利用不足而浪费。
其二为采用手动更新策略的方式进行调度,手动进行调度在一定程度上可以缓解服务网格各个节点pod负载不均的问题,但相对的,在实际应用场景下,手动调整策略效率极低,同时依旧难以保证服务质量,大量的人力资源消耗是的运维成本激增。
本发明的发明人发现现有技术的主要缺点,并基于现有技术的缺点提出了一个新的技术实现思路:通过实时周期性对服务网格内节点和/或pod进行负载信息采集,基于负载信息过滤服务框架内负载达到阈值的节点,不再向该节点调度请求。新建评价体系,将各个可调度节点的pod的负载情况进行归一化,通过算法计算各个pod的负载分值,将待调度请求调度至负载分值最高的pod。
请参照图2所示,为本发明一实施方式中负载均衡方法的流程示意图。该负载均衡方法,具体包括以下步骤:
S201:获取集群中各节点以及所述节点内各个pod的负载信息;
需要说明的是,云边环境下的微服务架构,其性能的损失分布在各个部分,同时,由于系统内的节点资源配置以及服务特性都是有差异的,导致集群的资源和微服务的负载通常处于动态变化和迭代中。因此,各个节点和/或pod的负载信息时刻发生无规律的变化。为了使负载达到均衡状态,本发明提供的负载均衡方法需要在调度请求时获取各个节点及pod上的负载信息,进而获取当前时刻最适宜调度的pod以及该pod对应的节点。
可以理解的是,本发明实施例对各个节点及pod的负载信息记录位置不做限制。优选的,各个节点及pod上的负载信息可以记录在对应节点的CRD上。CRD即为CustomResource Definition,译为自定义资源定义,是一种Kubernetes API扩展机制。它允许用户创建和管理自定义资源,这些资源不是Kubernetes标准API的一部分。CRD使得Kubernetes不仅限于内建资源(如Pod、Service等),还可以支持用户定义的资源类型。
可以理解的是,在执行上述步骤“获取服务网格中各节点以及节点内各个pod的负载信息,负载信息包括多项负载使用量”前,本发明提供的负载均衡方法还包括,监控并采集各个节点及pod的负载信息,并将负载信息记录在对应节点或pod中。
具体的,在一示例性实施例中,监控并采集各个节点及pod的负载信息,并将负载信息记录在对应节点或pod中包括:对服务网格内各节点以及pod的工作负载进行实时监控;基于预设的监控策略,周期性采集服务网格中各节点以及节点内各个pod的负载信息,将负载信息存储至中间变量;基于预设时间区间内采集的负载信息的平均值标注对应pod,并基于该时间区间对该平均值添加时间戳。
需要说明的是,基于时间区间对平均值添加时间戳,包括:基于该时间区间的时间长度标记该平均值;将附带时间长度标记的该平均值以注释的形式写入对应节点或pod的CRD中,并将获取该平均值的时刻作为时间戳加至该注释中。
例如,如图1所示,为一具体实施例中对负载信息的获取处理架构示意图。在该具体实施例中,借助Metrics-server组件和日志文件对集群工作负载进行实时监控,记录集群中所有Node的cpu_usage(CPU占用量)、cpu_percent(CPU使用率)、mem_usage(内存占用量)、mem_percent(内存使用率)以及所有Pod的cpu_usage(CPU占用量)、mem_usage(内存占用量)和RC(一个时间间隙内的请求数)。周期性从Metrics-server组件和日志文件中获取所需负载信息,由于Metrics-server提供的是最近一次的实时数据,在获取到之后Metrics-annotator支持用户自定义性能指标,如需要在最近时间内CPU的占用量均值和最大值,需在预设的时间区间内持续获取并存储到中间变量中并根据设置的公式进行相应计算,输出形如cpu_usage_avg_t或cpu_usage_max_t的值,其中t表示一个预设的时间区间等。
进一步的,将标记有时间长度的该均值一注释的形式写入对应节点或pod只能怪,并在注释完毕后继续添加一个时间戳,用以标记获取该均值的时间。
在另一示例性实施例中,监控并采集各个节点及pod的负载信息,并将负载信息记录在对应节点或pod中包括:对服务网格内各节点以及pod的工作负载进行实时监控;基于预设的监控策略,周期性采集服务网格中各节点以及节点内各个pod的负载信息;基于最近一次采集到的负载信息标注对应pod,并基于采集时间对负载信息添加时间戳。
还需说明的是,负载信息包括多项节点/pod的负载使用量。具体的,上述负载使用量可以包括但不限于:CPU占用量、CPU使用率、内存占用量、内存使用率、pod一个时间间隙内的请求数等。本发明实施例对记录、获取的负载信息的种类、数量均不再限制。
同时,可以理解的是,对各个节点和/或pod负载信息的记录间隔越长,对数据处理的压力越小,系统性能的损耗越低;相对的,对负载信息记录间隔越短,数据时效性越强,同时可以更精确的反映规定时间内节点/pod的负载情况。因此,对负载信息的记录时间间隔可以基于实际使用场景进行适应性调整,本发明实施例对此不做限制。
S202:基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;
可以理解的是,负载平衡的原则在于将请求更多的调度至当前负载较小的pod中,实现对高负载的节点进行减负,进而达到是系统负载平衡的目的。负载阈值即为区分可调度节点以及不可调度节点的认定指标。
具体的,基于预设的各负载使用量对应的负载阈值,筛选可调度的节点,包括:若存在至少一项节点负载信息中的负载使用量大于对应的负载阈值,则节点为不可调度节点;若不存在至少一项节点负载信息中的负载使用量大于对应的负载阈值,则节点为可调度节点。
还需说明的是,作为节点是否可调度的判据为节点对应负载信息中负载使用量与预设的负载阈值的大小关系,因此负载信息的有效性对上述判断逻辑至关重要。进而在筛选可调度节点前,还需对节点负载信息的有效性进行进一步验证,避免因负载信息拉取失败等原因,致使负载信息失效导致对节点状态的判断出现异常。
在一示例性实施例中,上述对节点负载信息的有效性检测包括:获取负载信息对应的时间戳,并计算当前时间与时间戳记载的时间的差值;若当前时间与时间戳记载的时间的差值大于预设的有效阈值,则负载信息无效;若当前时间与时间戳记载的时间的差值小于或等于预设的有效阈值,则负载信息有效。
S203:基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于各个节点以及pod的第一负载分值计算各个pod的第二负载分值;
需要说明的是,在一示例性实施例中,本发明负载评估算法可以为:
finalScore=(nodeScore×γnode+podScore×γpod)/(γnode+γpod)
其中,αi为节点负载信息中记录的各负载使用量;γi为αi对应的权重值;bj为pod负载信息中记录的各负载使用量;γj为bj对应的权重值;MaxScore为预设的最大分值;γnode为节点第一负载分值在第二负载分值中的权重,γpod为pod第一负载分值在第二负载分值中的权重,finalScore为pod对应的负载分值,L为节点负载信息中负载使用量的个数,L’为pod负载信息中负载使用量的个数。
权重值的大小可影响不同负载使用量对负载分值的影响程度,权重值越大,对应负载使用量对负载分值的影响越大,反之权重值越小,对应负载使用量对负载分值的影响越小。基于不同的实施场景下,可以适应性调整各个权重值的大小,本发明实施例对权重值的取值不做限制。
可以理解的是,各个节点以及pod的第一负载分值可以在一定程度上体现对应节点/pod的负载情况,但在复杂的应用场景中,存在节点负载压力大但其中某个pod负载压力相对较小的情况。基于上述情况下,无论是从节点角度亦或是从pod角度,单侧分值难以准确呈现调度的优先情况,因此,在本发明提供的负载均衡方法中,将pod对应的第一负载分值与其所在节点的第一负载分值进行综合计算,以生成的第二负载分值作为调度pod选取的判据。
S204:获取第二负载分值最大值对应的pod,将待调度请求调度至对应pod。
需要说明的是,本发明提供的负载均衡方法旨在提供一种当系统各个节点/pod处于负载不均时可以采用的救济方法,因此可以理解的是,在进行节点筛选前,本发明非负载均衡方法还包括:计算各个pod负载使用量的方差;若上述方差大于预设的均衡阈值,则基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点。
可以理解的是,方差是衡量随机变量或一组数据离散程度的度量。也即方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。在本发明实施例中,各个pod负载使用量的方差可以衡量负载的变化程度,计算得到的方差越大,则对应各个pod的负载越不均。
进一步的当上述方差大于预设的均衡阈值,则认为此时系统负载不均,因此需进行负载均衡,故应基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点。基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于各个节点以及pod的第一负载分值计算各个pod的第二负载分值;获取第二负载分值最大值对应的pod,将待调度请求调度至pod。
若方差小于或等于预设的均衡阈值,则说明系统此时负载均匀,可以根据负载均衡程度在默认负载均衡策略集合中动态选优。在一示例性实施例中,对以下几种情况进行动态调整,D<1时选取ROUND_ROBIN(轮询算法),D>2时选取LEAST_CONN(最小连接算法),1<D<2时选取RANDOM(随机选择健康实例),其中D为计算得到的方差值。
请参照图3所示,基于与前述负载均衡方法相同的发明构思,本发明一实施方式中提供了一种负载均衡系统300,其中包括:获取模块301、筛选模块302、计算模块303以及调度模块304。
具体的,获取模块301,用于获取集群中各节点以及节点内各个pod的负载信息,负载信息包括多项负载使用量;筛选模块302,用于基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;计算模块303,用于基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于各个节点以及pod的第一负载分值计算各个pod的第二负载分值;调度模块304,用于获取第二负载分值最大值对应的pod,将待调度请求调度至对应pod。
请参照图5所示,基于与前述负载均衡方法相同的发明构思,本发明另一实施方式中提供了一种负载均衡系统500,其中包括:监控模块501、数据输入模块502、优化处理模块503、文件读写模块504以及应用部署模块505。
具体的,监控模块501,用于对集群内各节点以及pod的工作负载进行实时监控,基于预设的监控策略,周期性采集集群中各节点以及节点内各个pod的负载信息;数据输入模块502,用于实时更新负载信息,并基于预设的监控策略对负载信息进行处理并上送至优化处理模块;优化处理模块503,用于基于各个pod负载使用量的方差值,动态选择负载均衡策略;文件读写模块504,用于读取负载均衡策略;应用部署模块505,用于写入命令行,完成应用修改部署。
需要说明的是所述文件读写模块分别修改配置文件中的负载均衡字段;所述应用部署模块写入命令行,自适应更新配置使应用服务的新配置信息生效,完成应用修改部署。
在一示例性实施例中,Istio是第二代微服务治理框架的代表,该框架以服务网格的形式使用Sidecar将业务逻辑与服务治理解耦,每个服务实例都拥有一个代理。EdgeMesh是边缘计算场景下服务网格的延伸和扩展,逐渐对接标准的Istio进行服务治理控制,每个节点拥有一个代理,更加轻量化。通过优化流量管理执行模块的算法机制得到的结果需要实时自适应地更新并应用到Istio和EdgeMesh中。
配置信息自动下发模块的处理流程分为两步,第一步YAML读写模块通过在名为“destination-rule.yaml”的文件中搜索字段位置进行修改操作,即分别修改配置文件中的loadBalancer(负载均衡器)字段;第二步实现命令行写入来自适应更新配置使应用服务的新配置信息生效,即通过写入到命令行“kubectl apply-f文件路径/destination-rule.yaml”等类似命令完成应用修改部署。
请参照图4所示,本发明实施例还提供了一种电子设备400,该电子设备400包括至少一个处理器401、存储器402(例如非易失性存储器)、存储器403和通信界面404,并且至少一个处理器401、存储器402、存储器403和通信界面404经由总线405连接在一起。至少一个处理器401用于调用在存储器402中存储或编码的至少一个程序指令,以使得至少一个处理器401执行本说明书的各个实施方式中所描述负载均衡方法的各种操作和功能。
在本说明书的实施例中,电子设备400可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动电子设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴电子设备、消费电子设备等等。
本发明实施例还提供了一种计算机可读介质,该计算机可读介质上承载有计算机执行指令,计算机执行指令被处理器执行时,可用于实现本说明书的各个实施例中描述的负载均衡方法的各种操作和功能。
本发明中的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问记忆体(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置、系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种负载均衡方法,其特征在于,包括:
获取集群中各节点以及所述节点内各个pod的负载信息,所述负载信息包括多项负载使用量;
判断集群中各个pod是否处于负载均衡状态;
若否,则基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;
基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于所述各个节点以及pod的第一负载分值计算各个pod的第二负载分值;
获取所述第二负载分值最大值对应的pod,将待调度请求调度至所述pod。
2.根据权利要求1所述的负载均衡方法,其特征在于,所述基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点,包括:
若所述节点负载信息中存在至少一项负载使用量大于对应的负载使用量阈值,则该节点为不可调度节点;
若所述节点负载信息中全部所述负载使用量均小于或等于对应负载使用量阈值,则该节点为可调度节点。
3.根据权利要求1所述的负载均衡方法,其特征在于,所述方法还包括:
获取所述负载信息对应的时间戳,并计算当前时间与所述时间戳记载的时间的差值;
若当前时间与所述时间戳记载的时间的差值大于预设的有效阈值,则所述负载信息无效;
若当前时间与所述时间戳记载的时间的差值小于或等于预设的有效阈值,则所述负载信息有效。
4.根据权利要求1所述的负载均衡方法,其特征在于,所述负载评估算法为:
finalScore=(nodeScore×γnode+podScore×γpod)/(γnode+γpod)
其中,αi为节点负载信息中记录的各负载使用量;γi为αi对应的权重值;bj为pod负载信息中记录的各负载使用量;γj为bj对应的权重值;MaxScore为预设的最大分值;γnode为节点第一负载分值在第二负载分值中的权重,γpod为pod第一负载分值在第二负载分值中的权重,finalScore为pod对应的负载分值。
5.根据权利要求1所述的负载均衡方法,其特征在于,所述方法还包括:
对集群内各节点以及pod的工作负载进行实时监控;
基于预设的监控策略,周期性采集集群中各节点以及所述节点内各个pod的负载信息;
基于预设时间区间内采集的负载信息的平均值标注对应pod,并基于所述时间区间对所述平均值添加时间戳。
6.根据权利要求1所述的负载均衡方法,其特征在于,所述方法还包括:
对所述集群内各节点以及pod的工作负载进行实时监控;
基于预设的监控策略,周期性采集集群内各节点以及所述节点内各个pod的负载信息;
基于最近一次采集到的所述负载信息标注对应pod,并基于采集时间对所述负载信息添加时间戳。
7.根据权利要求1所述的负载均衡方法,其特征在于,所述方法还包括:
若所述集群负载均衡,则基于轮询算法或最小连接算法或随机选择健康实例法对待调度请求进行调度。
8.一种负载均衡系统,其特征在于,包括:
获取模块,用于获取集群中各节点以及所述节点内各个pod的负载信息,所述负载信息包括多项负载使用量;
判断模块,用于判断集群中各个pod是否处于负载均衡状态;
筛选模块,用于当集群负载不均衡时,基于各节点的负载信息以及预设的各负载使用量阈值,筛选可调度的节点;
计算模块,用于基于预设的负载评估算法,分别计算各个节点以及pod的第一负载分值并基于所述各个节点以及pod的第一负载分值计算各个pod的第二负载分值;
调度模块,用于获取所述第二负载分值最大值对应的pod,将待调度请求调度至所述pod。
9.一种负载均衡系统,其特征在于,包括:
监控模块,用于对集群内各节点以及pod的工作负载进行实时监控,基于预设的监控策略,周期性采集所述集群中各节点以及各所述节点内pod的负载信息;
数据输入模块,用于实时更新所述负载信息,并基于预设的监控策略对所述负载信息进行处理并上送至优化处理模块;
优化处理模块,用于基于各个pod负载使用量的方差值,动态选择负载均衡策略;
文件读写模块,用于读取选中的负载均衡策略;
应用部署模块,用于基于所述选中的负载均衡策略写入命令行,完成应用修改部署。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行权利要求1-7中任一项所述的负载均衡方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410755027.5A CN118606002A (zh) | 2024-06-12 | 2024-06-12 | 负载均衡方法、系统及可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410755027.5A CN118606002A (zh) | 2024-06-12 | 2024-06-12 | 负载均衡方法、系统及可读存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN118606002A true CN118606002A (zh) | 2024-09-06 |
Family
ID=92562956
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410755027.5A Pending CN118606002A (zh) | 2024-06-12 | 2024-06-12 | 负载均衡方法、系统及可读存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN118606002A (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119225970A (zh) * | 2024-09-30 | 2024-12-31 | 北京火山引擎科技有限公司 | 分布式系统的负载均衡方法、装置、设备和存储介质 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
| CN114090235A (zh) * | 2021-10-25 | 2022-02-25 | 北京神舟航天软件技术股份有限公司 | 一种云平台动态负载均衡方法 |
| CN114443284A (zh) * | 2021-12-29 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种集群资源负载均衡方法、装置、电子设备和介质 |
-
2024
- 2024-06-12 CN CN202410755027.5A patent/CN118606002A/zh active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
| CN114090235A (zh) * | 2021-10-25 | 2022-02-25 | 北京神舟航天软件技术股份有限公司 | 一种云平台动态负载均衡方法 |
| CN114443284A (zh) * | 2021-12-29 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种集群资源负载均衡方法、装置、电子设备和介质 |
Non-Patent Citations (1)
| Title |
|---|
| JIALI ZHOU等: "Balancing Load: An Adaptive Traffic Management Scheme for Microservices", 《2022 IEEE 28TH INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED SYSTEMS (ICPADS)》, 12 January 2023 (2023-01-12), pages 641 - 648, XP034319580, DOI: 10.1109/ICPADS56603.2022.00089 * |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119225970A (zh) * | 2024-09-30 | 2024-12-31 | 北京火山引擎科技有限公司 | 分布式系统的负载均衡方法、装置、设备和存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10992535B2 (en) | Hybrid cloud integration fabric and ontology for integration of data, applications, and information technology infrastructure | |
| US10872064B2 (en) | Utilizing version vectors across server and client changes to determine device usage by type, app, and time of day | |
| US10972344B2 (en) | Automated adjustment of subscriber policies | |
| US9473413B1 (en) | Dynamic throttle of network traffic | |
| JP2023548405A (ja) | クラスタコンピューティング環境を修正するための技術 | |
| CN115277566B (zh) | 数据访问的负载均衡方法、装置、计算机设备及介质 | |
| CN110545246A (zh) | 一种基于令牌桶的限流方法和装置 | |
| CN114756312B (zh) | 用于对本地服务进行远程协助优化的系统和方法 | |
| CN109257758B (zh) | 一种网络扩容方法及装置 | |
| US20150156135A1 (en) | Reputation-based mediation of virtual control planes | |
| CN117972367B (zh) | 一种数据存储预测方法、数据存储子系统及智能计算平台 | |
| US9882773B2 (en) | Virtual resource provider with virtual control planes | |
| US20150163280A1 (en) | Method and device for downloading file | |
| CN110347546B (zh) | 监控任务动态调整方法、装置、介质及电子设备 | |
| US9553774B2 (en) | Cost tracking for virtual control planes | |
| US20170322834A1 (en) | Compute instance workload monitoring and placement | |
| CN114035906B (zh) | 虚拟机迁移方法、装置、电子设备及存储介质 | |
| CN113867957B (zh) | 一种跨集群容器数量弹性伸缩实现方法及装置 | |
| JP2017204712A (ja) | 仮想資源自動選択システム及び方法 | |
| JP2025513685A (ja) | パーソナライズされた効率性リコメンデーションを生成するためのシステムおよび方法 | |
| CA3059062A1 (en) | Systems and methods for proactive infrastructure resource management for multiple application clusters | |
| CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
| US9471389B2 (en) | Dynamically tuning server placement | |
| US20210160331A1 (en) | Managed data export to a remote network from edge devices | |
| CN118606002A (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 |