CN111880926B - 一种负载均衡方法、装置及计算机存储介质 - Google Patents
一种负载均衡方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN111880926B CN111880926B CN202010614360.6A CN202010614360A CN111880926B CN 111880926 B CN111880926 B CN 111880926B CN 202010614360 A CN202010614360 A CN 202010614360A CN 111880926 B CN111880926 B CN 111880926B
- Authority
- CN
- China
- Prior art keywords
- node
- virtual
- capacity
- physical
- target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000003860 storage Methods 0.000 title claims abstract description 8
- 238000012544 monitoring process Methods 0.000 claims abstract description 163
- 238000012545 processing Methods 0.000 claims description 12
- 238000009826 distribution Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
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
本发明公开一种负载均衡方法、装置及计算机存储介质,所述方法包括:为分布式监控系统中每个物理节点分配虚拟节点,基于每个虚拟节点的节点已用容量,构建小顶堆,在分配目标监控对象时,在小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将目标监控对象链接至目标虚拟节点上,以使目标虚拟节点对应的物理节点执行目标监控对象的信息采集。上述方案中,能够平衡物理节点在节点容量上的差异,以及能够平衡目标监控对象所消耗的节点容量,达到了双层平滑加权负载均衡的目的,优化了监控对象的分配方式。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种负载均衡方法、装置及计算机存储介质。
背景技术
随着互联网技术的不断发展,监控系统被广泛应用,监控系统作为一种集监视和控制一体化的系统,能够对信息收集进行监控以及对信息处理进行控制。对于IO密集的信息收集部分,当监控对象增多时,需要使用分布式收集。
现有技术中,在将监控对象分发至各个信息采集器时,通常采用随机分配或轮询分派的方式,即,将各个监控对象按照随机或轮询的方式分发至分布式监控系统中的各个信息采集器中,导致各个信息采集器出现负载不均衡的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的负载均衡方法、装置及计算机存储介质。
第一方面,本实施例提供一种负载均衡方法,应用于分布式监控系统,所述方法包括:
基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,其中,所述每个物理节点对应所述分布式监控系统中的一个信息采集器;
基于每个虚拟节点的节点已用容量,构建小顶堆;
在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将所述目标监控对象链接至所述目标虚拟节点上,以使所述目标虚拟节点对应的物理节点执行所述目标监控对象的信息采集。
可选的,所述基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,包括:
确定所述每个虚拟节点的节点容量;
基于所述每个物理节点的节点容量,以及所述每个虚拟节点的节点容量,确定所述每个物理节点对应的虚拟节点的数量;
基于所述每个虚拟节点的节点容量,以及所述每个物理节点对应的虚拟节点的数量,为所述每个物理节点分配虚拟节点。
可选的,所述确定所述每个虚拟节点的节点容量,包括:
基于所述每个物理节点的节点容量,计算节点容量的最大公约数作为所述每个虚拟节点的节点容量。
可选的,所述在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,包括:
确定位于所述小顶堆的堆顶的虚拟节点为所述目标虚拟节点。
可选的,在所述将所述目标监控对象链接至所述目标虚拟节点上之后,所述方法还包括:
基于所述目标监控对象消耗的节点容量,调整所述目标虚拟节点的节点已用容量;
基于调整后的所述目标虚拟节点的节点已用容量,判断是否需要对所述小顶堆进行更新,若是,则更新所述小顶堆。
可选的,在所述基于每个虚拟节点的节点已用容量,构建小顶堆之后,所述方法还包括:
在所述分布式监控系统中添加第一物理节点时,为所述第一物理节点分配虚拟节点;
将所述第一物理节点对应的虚拟节点添加至所述小顶堆;
将所述小顶堆中已链接的监控对象按照预设规则移动至所述第一物理节点对应的虚拟节点上。
可选的,在所述基于每个虚拟节点的节点已用容量,构建小顶堆之后,所述方法还包括:
在所述分布式监控系统中删除第二物理节点时,确定与所述第二物理节点对应的虚拟节点,作为待删除虚拟节点;
在所述小顶堆中将所述待删除虚拟节点删除,以及将所述待删除虚拟节点上链接的监控对象移动至所述小顶堆中除所述待删除虚拟节点以外的其他虚拟节点上。
第二方面,本实施例还提供一种负载均衡装置,应用于分布式监控系统,所述装置包括:
节点分配模块,用于基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,其中,所述每个物理节点对应所述分布式监控系统中的一个信息采集器;
处理模块,用于基于每个虚拟节点的节点已用容量,构建小顶堆;
监控对象分配模块,用于在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将所述目标监控对象链接至所述目标虚拟节点上,以使所述目标虚拟节点对应的物理节点执行所述目标监控对象的信息采集。
可选的,所述节点分配模块,用于:
确定所述每个虚拟节点的节点容量;
基于所述每个物理节点的节点容量,以及所述每个虚拟节点的节点容量,确定所述每个物理节点对应的虚拟节点的数量;
基于所述每个虚拟节点的节点容量,以及所述每个物理节点对应的虚拟节点的数量,为所述每个物理节点分配虚拟节点。
可选的,所述节点分配模块,用于:
基于所述每个物理节点的节点容量,计算节点容量的最大公约数作为所述每个虚拟节点的节点容量。
可选的,所述监控对象分配模块,用于:
确定位于所述小顶堆的堆顶的虚拟节点为所述目标虚拟节点。
可选的,所述装置还包括:
节点容量调整模块,用于基于所述目标监控对象消耗的节点容量,调整所述目标虚拟节点的节点已用容量;
更新模块,用于基于调整后的所述目标虚拟节点的节点已用容量,判断是否需要对所述小顶堆进行更新,若是,则更新所述小顶堆。
可选的,所述装置还包括:
虚拟节点确定模块,用于在所述分布式监控系统中添加第一物理节点时,为所述第一物理节点分配虚拟节点;
添加模块,用于将所述第一物理节点对应的虚拟节点添加至所述小顶堆;
第一监控对象处理模块,用于将所述小顶堆中已链接的监控对象按照预设规则移动至所述第一物理节点对应的虚拟节点上。
可选的,所述装置还包括:
待删除虚拟节点确定模块,用于在所述分布式监控系统中删除第二物理节点时,确定与所述第二物理节点对应的虚拟节点,作为待删除虚拟节点;
第二监控对象处理模块,用于在所述小顶堆中将所述待删除虚拟节点删除,以及将所述待删除虚拟节点上链接的监控对象移动至所述小顶堆中除所述待删除虚拟节点以外的其他虚拟节点上。
第三方面,本申请提供负载均衡装置,包括处理器和存储器:所述存储器用于存储执行前述第一方面的负载均衡方法的程序;所述处理器被配置为用于执行所述存储器中存储的程序。
第四方面,本申请提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本说明书实施例中的方案,为分布式监控系统中每个物理节点分配虚拟节点,基于每个虚拟节点的节点已用容量,构建小顶堆,在分配目标监控对象时,在小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将目标监控对象链接至目标虚拟节点上,以使目标虚拟节点对应的物理节点执行目标监控对象的信息采集。上述方案中,通过为每个物理节点分配对应的虚拟节点,将监控对象在虚拟节点上进行分配,平衡了物理节点在节点容量上的差异,另外,将目标监控对象链接至目标虚拟节点,能够平衡目标监控对象所消耗的节点容量,因此,本说明书实施例提供的方法能够达到双层平滑加权负载均衡的目的,优化了监控对象的分配方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本说明书实施例第一方面提供的一种负载均衡方法的流程图;
图2为本说明书实施例提供的一种小顶堆的结构示意图;
图3为本说明书实施例第二方面提供的一种负载均衡装置的示意图;
图4为本说明书实施例第三方面提供的一种负载均衡装置的示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
第一方面,本说明书实施例提供一种负载均衡方法,应用于分布式监控系统,如图1所示,为本说明书实施例提供的一种负载均衡方法的流程图,该方法包括以下步骤:
步骤S11:基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,其中,所述每个物理节点对应所述分布式监控系统中的一个信息采集器;
步骤S12:基于每个虚拟节点的节点已用容量,构建小顶堆;
步骤S13:在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将所述目标监控对象链接至所述目标虚拟节点上,以使所述目标虚拟节点对应的物理节点执行所述目标监控对象的信息采集。
本说明书实施例中,分布式监控系统中部署有多个信息采集器,信息采集器可以是网络IO、磁盘IO等信息采集器,为了便于说明,本说明书实施例中以信息采集器为网络IO为例来进行说明。
在步骤S11中,对于分布式监控系统中包含的每个信息采集器,均可以对应一个物理节点,信息采集器的容量可以作为对应物理节点的节点容量,以信息采集器为网络IO为例,可以将网络IO对应的网卡最大传输速度作为对应物理节点的节点容量。
本说明书实施例中,为每个物理节点分配一组虚拟节点,与每个物理节点对应的虚拟节点的数量可以是一个也可以是多个,每个虚拟节点的节点容量可以根据实际需要进行设定,这里不做限定。
在具体实施过程中,步骤S11可以通过以下方式实现:确定所述每个虚拟节点的节点容量;基于所述每个物理节点的节点容量,以及所述每个虚拟节点的节点容量,确定所述每个物理节点对应的虚拟节点的数量;基于所述每个虚拟节点的节点容量,以及所述每个物理节点对应的虚拟节点的数量,为所述每个物理节点分配虚拟节点。
本说明书实施例中,每个虚拟节点的节点容量都是相同的,虚拟节点的节点容量可以是随机设定的,也可以根据经验值设定,也可以根据预设规则来计算,这里不做限定。
在一种实施方式中,为了使得虚拟节点的数量尽可能少,虚拟节点的节点容量可以通过以下方式来确定:基于所述每个物理节点的节点容量,计算节点容量的最大公约数作为所述每个虚拟节点的节点容量。具体来讲,获取分布式监控系统中所有物理节点的节点容量,将所有物理节点的节点容量的最大公约数作为虚拟节点的节点容量。例如,分布式监控系统中包含有节点容量为6的物理节点A以及节点容量为8的物理节点B,节点容量之间的最大公约数为2,则将虚拟节点的节点容量设置为2。
另外,如果物理节点的节点容量之间不存在最大公约数时,则可以选取近似最大公约数作为虚拟节点的节点容量,使得虚拟节点的节点容量尽可能大,从而减少虚拟节点的数量。
进一步的,在确定了虚拟节点的节点容量之后,基于每个物理节点的节点容量,确定为每个物理节点分配的虚拟节点的数量,例如,在虚拟节点的节点容量为上述最大公约数时,针对每个物理节点,将该物理节点的节点容量除以虚拟节点的节点容量,得到的结果即为该物理节点分配的虚拟节点的数量。仍以上述容量为6的物理节点A以及节点容量为8的物理节点B为例,为物理节点A分配3个节点容量为2的虚拟节点,为物理节点B分配4个节点容量为2的虚拟节点。
在虚拟节点的节点容量为近似最大公约数时,针对每个物理节点来说,在确定为该物理节点分配虚拟节点的数量时,需要保证与该物理节点对应的所有虚拟节点的节点容量之和大于或等于该物理节点的节点容量。
在为每个物理节点分配好对应的虚拟节点之后,执行步骤S12:基于每个虚拟节点的节点已用容量,构建小顶堆。
具体来讲,小顶堆在初始化过程中,首先初始化虚拟节点的节点已用容量,由于初始化的时候虚拟节点上还未分配有监控对象,即,虚拟节点上未链接监控对象,因此在初始化时的虚拟节点的节点已用容量均为0,初始化的小顶堆结构可以是由各个虚拟节点随机构成的。应说明的是,小顶堆的结构是一种经过排序的二叉树,小顶堆中的每个节点的值均小于或等于其左右孩子节点的值。本说明书实施例中,小顶堆中每个节点的值为虚拟节点的节点已用容量,随着监控对象被分配到小顶堆的各个虚拟节点上,虚拟节点的节点已用容量逐渐发生变化,进而导致小顶堆由初始的结构随着监控对象的分配而逐渐发生调整。本说明书实施例中,在虚拟节点上每链接一个监控对象,则检测当前的小顶堆是否需要调整,如果需要调整,则将当前的小顶堆进行更新。
如图2所示,为本说明书实施例提供的一种小顶堆的结构示意图,在图2中,共有五个虚拟节点,图中用圆圈表示虚拟节点,虚拟节点的节点已用容量分别为40、80、90、110、120,在虚拟节点上链接有监控对象,监控对象用矩形框来表示,矩形框内的数字表示监控对象消耗的节点容量,以小顶堆的根节点为例,根节点的节点已用容量为40,根节点上链接了两个监控对象,消耗的节点容量分别为20和20;以节点已用容量为90的虚拟节点为例,该虚拟节点上链接了3个监控对象,监控对象消耗的节点容量分别为20、40和30。
在构建好小顶堆之后,在分布式监控系统需要分配监控对象时,通过步骤S13将分配的监控对象连接到小顶堆的虚拟节点上。
在步骤S13中,目标监控对象为需要分配的监控对象,目标虚拟节点可以是小顶堆上的任意虚拟节点,也可以是按照一定规则确定出来的虚拟节点,为了保证负载均衡,本说明书实施例可以采用以下方式确定目标虚拟节点:确定位于小顶堆的堆顶的虚拟节点为目标虚拟节点。
具体来讲,位于小顶堆的堆顶的虚拟节点,即根节点,为当前节点已用容量最小的虚拟节点,当增加新的目标监控对象时,可以优先将目标监控对象连接到堆顶的虚拟节点上,这样可以均衡各个虚拟节点的节点已用容量,保证负载最小的虚拟节点优先分配。在确定了链接目标监控对象的目标虚拟节点之后,由于虚拟节点与物理节点之间存在对应关系,进而可以确定出与目标虚拟节点对应的物理节点,并通过物理节点采集目标监控对象的信息。
进一步的,在所述将所述目标监控对象链接至所述目标虚拟节点上之后,所述方法还包括:基于所述目标监控对象消耗的节点容量,调整所述目标虚拟节点的节点已用容量;基于调整后的所述目标虚拟节点的节点已用容量,判断是否需要对所述小顶堆进行更新,若是,则更新所述小顶堆。
具体来讲,在目标监控对象连接到目标虚拟节点上之后,目标虚拟节点的节点已用容量发生了变化,即需要在目标虚拟节点的节点已用容量上增加目标监控对象消耗的节点容量,进行节点已用容量的调整。本说明书实施例中,在小顶堆中每链接一个监控对象,则需要检测小顶堆的结构是否稳定,即是否需要调整,例如,如果目标虚拟节点的节点已用容量在调整后仍然小于或等于其左右孩子节点的节点已用容量,则小顶堆的结构仍然是稳定的,不需要调整,如果目标虚拟节点的节点已用容量在调整后大于其左右孩子节点的节点已用容量,则需要更新小顶堆,调整各个节点的位置,使更新后的小顶堆结构稳定。
本说明书实施例中,当分布式监控系统中添加新的物理节点时,可以通过以下方式来调整小顶堆以及调整已链接的监控对象:在所述分布式监控系统中添加第一物理节点时,为所述第一物理节点分配虚拟节点;将所述第一物理节点对应的虚拟节点添加至所述小顶堆;将所述小顶堆中已链接的监控对象按照预设规则移动至所述第一物理节点对应的虚拟节点上。
具体来讲,为第一物理节点分配虚拟节点的方式可以参考上面的描述,这里就不再重复了,将第一物理节点分配的虚拟节点依次添加至当前已经构建好的小顶堆中,例如,为第一物理节点分配了3个虚拟节点,则可以先选取其中的一个虚拟节点添加至当前小顶堆中,由于第一物理节点对应的虚拟节点均为新增加的虚拟节点,均未链接监控对象,因此,第一物理节点对应的虚拟节点的节点已用容量均为0。
在具体实施过程中,在将第一物理节点的一个虚拟节点添加至小顶堆时,可以将该虚拟节点添加至小顶堆的叶子节点或者根节点,或者其他位置,这里不做限定,根据虚拟节点添加的位置来进行小顶堆的更新,由于该虚拟节点的节点已用容量最小,在更新后的小顶堆中该虚拟节点会位于小顶堆的堆顶,即根节点。进一步的,将小顶堆其他虚拟节点上链接的监控对象移动到该虚拟节点上,移动监控对象的方式可以根据预设规则进行移动,例如,预设规则可以为随机选取已链接监控对象进行移动,或者预设规则可以按照已链接监控对象消耗的节点容量由大到小的顺序进行移动,等等。
本说明书实施例中,预设规则可以为按照小顶堆层级自下而上顺序依次选取虚拟节点,并在选中的虚拟节点上链接的监控对象中选取一个监控对象,将该选中的监控对象移动至新增加的虚拟节点上。以图2中的小顶堆为例,当新增一个虚拟节点后,调整小顶堆各个节点的位置,新增后的虚拟节点会位于根节点的位置,节点已用容量为0。按照小顶堆层级自下而上的顺序依次选取虚拟节点,在图2示出的小顶堆中,即首先选取节点已用容量为120的虚拟节点,在该虚拟节点链接的监控对象中选取一个监控对象,可以随机选取,也可以按照链接先后顺序选取,还可以按照监控对象消耗节点容量大小来选取,这里不做限定,将选中的监控对象移动至新增的虚拟节点。
进一步的,新增虚拟节点由于链接了监控对象导致节点已用容量发生变化,需要检测是否需要更新小顶堆,如果新增虚拟节点仍然位于根节点位置,即不需要更新小顶堆的情况下,再选取下一个虚拟节点,即选取节点已用容量为110的虚拟节点,并在该虚拟节点中链接的监控对象中选取一个监控对象,将选中的监控对象移动至位于根节点位置的新增虚拟节点上,然后再判断是否需要更新小顶堆,如果不需要更新,则重复上述步骤选取上一层的虚拟节点上的监控对象,直到新增虚拟节点不再位于根节点为止。对于第一物理节点的每个虚拟节点,在加入小顶堆时,均可以通过上述步骤来调整监控对象的链接情况,当第一物理节点的每个虚拟节点均添加至小顶堆后,完成第一物理节点的添加操作。
本说明书实施例中,当分布式监控系统中需要删除物理节点时,可以通过以下方式来调整小顶堆以及调整该物理节点对应的监控对象:在所述分布式监控系统中删除第二物理节点时,确定与所述第二物理节点对应的虚拟节点,作为待删除虚拟节点;在所述小顶堆中将所述待删除虚拟节点删除,以及将所述待删除虚拟节点上链接的监控对象移动至所述小顶堆中除所述待删除虚拟节点以外的其他虚拟节点上。
在具体实施过程中,在确定了需要删除的物理节点之后,根据物理节点与虚拟节点之间的对应关系,确定与需要删除的物理节点对应的虚拟节点,作为待删除虚拟节点。由于待删除虚拟节点可能是多个,因此,在小顶堆中对待删除虚拟节点时,可以依次进行删除。以删除其中一个待删除虚拟节点为例,确定链接在该待删除虚拟节点的监控对象,然后在小顶堆中将该待删除虚拟节点删除,由于删除了小顶堆的一个节点,则需要对小顶堆进行调整,在调整好小顶堆后,将待删除虚拟节点的监控对象依次移动至小顶堆的根节点所对应的虚拟节点中。其中,每移动一个监控对象至根节点,判断小顶堆是否需要更新,如果需要更新,则调整小顶堆各个节点的位置,然后将下一个监控对象移动至调整后的根节点上,然后再次判断小顶堆是否需要更新,重复上述步骤直到该待删除虚拟节点上的监控对象全部移动完毕。需要说明的是,由于根节点处的虚拟节点为节点已用容量最小的节点,因此将监控对象移动至根节点处的虚拟节点上,能够均衡各个虚拟节点的容量。当然,除了上述方式,还可以采用其他方式进行监控对象的移动,这里不做限定。
通过上述方法,能够实现在添加或删除物理节点时的负载均衡,另外,在查询监控对象所在物理节点时,可以通过以下方式实现:遍历小顶堆,确定链接有待查询监控对象的虚拟节点,然后根据物理节点与虚拟节点之间的对应关系,确定与该虚拟节点对应的物理节点,该物理节点即为待查询监控对象所在的物理节点。
另外,为了对本说明书实施例提供的方法的性能进行直观的说明,下面以物理节点数为N,每个物理节点平均对应两个虚拟节点,监控对象个数为M为例,从空间消耗、时间消耗、均衡程度以及重分配影响四个方面来说明本说明书实施例提供的负载均衡方法的性能。
在空间消耗方面:
根据物理节点与虚拟节点之间的对应关系,可以形成一映射表,由于每个物理节点平均对应两个虚拟节点,因此,该映射表对应的空间消耗为2N;小顶堆对应的空间消耗为M+2N;因此,总的空间消耗为M+4N,在N远远小于M的情况下,空间消耗约等于M。
在时间消耗方面:
分配监控对象时,每一次分配可能需要调整小顶堆,分配一次的复杂度为logN,总共为NlogN;
添加物理节点,每一次添加虚拟节点都需要将其他虚拟节点上的部分监控对象分配至新添加的虚拟节点上,同时调整小顶堆,平均时间复杂度为1/M*NlogN,总复杂度为M*1/M*NlogN+NlogN=2NlogN。
综上,本说明书实施例提供的方法时间复杂度为O(NlogN)。
均衡程度方面:
本说明书实施例中的提供的方法,通过引入虚拟节点,每个物理节点对应一组虚拟节点,形成一张物理节点与虚拟节点之间的映射表。在分配监控对象时,只需要保证虚拟节点上公平分配,然后找到对应的物理节点即可,通过这种方式平衡了物理节点的差异性,将物理节点的权重计算单独分离开来。另外,对于不同监控对象消耗的节点容量不同,本说明书实施例通过维护基于虚拟节点的节点已用容量构建的小顶堆,在新的监控对象的到来时,将其链接到堆顶根节点对应的虚拟节点上,即负载最小的虚拟节点优先分配,然后将根节点已用容量添加相应值,再检查是否需要调整小顶堆,保证堆顶节点为最小值,通过这种方式使得不同容量的监控对象能够平滑地分配到每个虚拟节点上。可见,本说明书实施例提供的方法能够达到双层平滑加权负载均衡的目的,平衡了物理节点的权重以及监控对象消耗容量的权重,使得每次监控对象分配达到最优。
第二方面,本实施例还提供一种负载均衡装置,应用于分布式监控系统,如图3所示,为本说明书实施例挺的一种负载均衡装置的示意图,该装置包括:
节点分配模块31,用于基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,其中,所述每个物理节点对应所述分布式监控系统中的一个信息采集器;
处理模块32,用于基于每个虚拟节点的节点已用容量,构建小顶堆;
监控对象分配模块33,用于在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将所述目标监控对象链接至所述目标虚拟节点上,以使所述目标虚拟节点对应的物理节点执行所述目标监控对象的信息采集。
可选的,节点分配模块31,用于:
确定所述每个虚拟节点的节点容量;
基于所述每个物理节点的节点容量,以及所述每个虚拟节点的节点容量,确定所述每个物理节点对应的虚拟节点的数量;
基于所述每个虚拟节点的节点容量,以及所述每个物理节点对应的虚拟节点的数量,为所述每个物理节点分配虚拟节点。
可选的,节点分配模块31,用于:
基于所述每个物理节点的节点容量,计算节点容量的最大公约数作为所述每个虚拟节点的节点容量。
可选的,所述监控对象分配模块33,用于:
确定位于所述小顶堆的堆顶的虚拟节点为所述目标虚拟节点。
可选的,所述装置还包括:
节点容量调整模块,用于基于所述目标监控对象消耗的节点容量,调整所述目标虚拟节点的节点已用容量;
更新模块,用于基于调整后的所述目标虚拟节点的节点已用容量,判断是否需要对所述小顶堆进行更新,若是,则更新所述小顶堆。
可选的,所述装置还包括:
虚拟节点确定模块,用于在所述分布式监控系统中添加第一物理节点时,为所述第一物理节点分配虚拟节点;
添加模块,用于将所述第一物理节点对应的虚拟节点添加至所述小顶堆;
第一监控对象处理模块,用于将所述小顶堆中已链接的监控对象按照预设规则移动至所述第一物理节点对应的虚拟节点上。
可选的,所述装置还包括:
待删除虚拟节点确定模块,用于在所述分布式监控系统中删除第二物理节点时,确定与所述第二物理节点对应的虚拟节点,作为待删除虚拟节点;
第二监控对象处理模块,用于在所述小顶堆中将所述待删除虚拟节点删除,以及将所述待删除虚拟节点上链接的监控对象移动至所述小顶堆中除所述待删除虚拟节点以外的其他虚拟节点上。
关于上述装置,其中各个模块的具体功能已经在本说明书实施例提供的负载均衡方法的实施例中进行了详细描述,此处将不做详细阐述说明。
第三方面,基于与前述实施例中负载均衡方法同样的发明构思,本说明书实施例还提供一种负载均衡装置,如图4所示,包括存储器404、处理器402及存储在存储器404上并可在处理器402上运行的计算机程序,所述处理器402执行所述程序时实现前文所述负载均衡方法的步骤。
其中,在图4中,总线架构(用总线400来代表),总线400可以包括任意数量的互联的总线和桥,总线400将包括由处理器402代表的一个或多个处理器和存储器404代表的存储器的各种电路链接在一起。总线400还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口406在总线400和接收器401和发送器403之间提供接口。接收器401和发送器403可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器402负责管理总线400和通常的处理,而存储器404可以被用于存储处理器402在执行操作时所使用的数据。
第四方面,基于与前述实施例中基于负载均衡方法的发明构思,本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述负载均衡方法中任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。
Claims (9)
1.一种负载均衡方法,其特征在于,应用于分布式监控系统,所述方法包括:
基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,其中,所述每个物理节点对应所述分布式监控系统中的一个信息采集器;
基于每个虚拟节点的节点已用容量,构建小顶堆,其中,初始化的小顶堆结构是由各个虚拟节点随机构成的;
在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将所述目标监控对象链接至所述目标虚拟节点上,以使所述目标虚拟节点对应的物理节点执行所述目标监控对象的信息采集;
基于所述目标监控对象消耗的节点容量,调整所述目标虚拟节点的节点已用容量;
基于调整后的所述目标虚拟节点的节点已用容量,判断是否需要对所述小顶堆进行更新,若是,则更新所述小顶堆。
2.根据权利要求1所述的方法,其特征在于,所述基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,包括:
确定所述每个虚拟节点的节点容量;
基于所述每个物理节点的节点容量,以及所述每个虚拟节点的节点容量,确定所述每个物理节点对应的虚拟节点的数量;
基于所述每个虚拟节点的节点容量,以及所述每个物理节点对应的虚拟节点的数量,为所述每个物理节点分配虚拟节点。
3.根据权利要求2所述的方法,其特征在于,所述确定所述每个虚拟节点的节点容量,包括:
基于所述每个物理节点的节点容量,计算节点容量的最大公约数作为所述每个虚拟节点的节点容量。
4.根据权利要求1所述的方法,其特征在于,所述在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,包括:
确定位于所述小顶堆的堆顶的虚拟节点为所述目标虚拟节点。
5.根据权利要求1所述的方法,其特征在于,在所述基于每个虚拟节点的节点已用容量,构建小顶堆之后,所述方法还包括:
在所述分布式监控系统中添加第一物理节点时,为所述第一物理节点分配虚拟节点;
将所述第一物理节点对应的虚拟节点添加至所述小顶堆;
将所述小顶堆中已链接的监控对象按照预设规则移动至所述第一物理节点对应的虚拟节点上。
6.根据权利要求1所述的方法,其特征在于,在所述基于每个虚拟节点的节点已用容量,构建小顶堆之后,所述方法还包括:
在所述分布式监控系统中删除第二物理节点时,确定与所述第二物理节点对应的虚拟节点,作为待删除虚拟节点;
在所述小顶堆中将所述待删除虚拟节点删除,以及将所述待删除虚拟节点上链接的监控对象移动至所述小顶堆中除所述待删除虚拟节点以外的其他虚拟节点上。
7.一种负载均衡装置,其特征在于,应用于分布式监控系统,所述装置包括:
节点分配模块,用于基于所述分布式监控系统中每个物理节点的节点容量,为所述每个物理节点分配虚拟节点,其中,所述每个物理节点对应所述分布式监控系统中的一个信息采集器;
处理模块,用于基于每个虚拟节点的节点已用容量,构建小顶堆,其中,初始化的小顶堆结构是由各个虚拟节点随机构成的;
监控对象分配模块,用于在所述小顶堆中确定出与目标监控对象对应的目标虚拟节点,并将所述目标监控对象链接至所述目标虚拟节点上,以使所述目标虚拟节点对应的物理节点执行所述目标监控对象的信息采集;
节点容量调整模块,用于基于所述目标监控对象消耗的节点容量,调整所述目标虚拟节点的节点已用容量;
更新模块,用于基于调整后的所述目标虚拟节点的节点已用容量,判断是否需要对所述小顶堆进行更新,若是,则更新所述小顶堆。
8.一种负载均衡装置,其特征在于,包括处理器和存储器:
所述存储器用于存储执行权利要求1~6中任一项所述方法的程序;
所述处理器被配置为用于执行所述存储器中存储的程序。
9.一种计算机存储介质,其特征在于,用于储存计算机软件指令,该计算机软件指令被执行时实现权利要求1~6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614360.6A CN111880926B (zh) | 2020-06-30 | 2020-06-30 | 一种负载均衡方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614360.6A CN111880926B (zh) | 2020-06-30 | 2020-06-30 | 一种负载均衡方法、装置及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111880926A CN111880926A (zh) | 2020-11-03 |
CN111880926B true CN111880926B (zh) | 2022-07-01 |
Family
ID=73158193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614360.6A Active CN111880926B (zh) | 2020-06-30 | 2020-06-30 | 一种负载均衡方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880926B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764926A (zh) * | 2021-01-19 | 2021-05-07 | 汉纳森(厦门)数据股份有限公司 | 一种基于负载感知的数据流动态负载均衡策略分析方法 |
CN115633197A (zh) * | 2022-09-15 | 2023-01-20 | 海南乾唐视联信息技术有限公司 | 一种业务数据的分流系统、方法、装置、电子设备和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130166886A1 (en) * | 2008-11-24 | 2013-06-27 | Ruchira Sasanka | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
CN105991458A (zh) * | 2015-02-02 | 2016-10-05 | 中兴通讯股份有限公司 | 一种负载均衡的方法及负载均衡装置 |
CN109729017A (zh) * | 2019-03-14 | 2019-05-07 | 哈尔滨工程大学 | 一种基于dpi预测的负载均衡方法 |
-
2020
- 2020-06-30 CN CN202010614360.6A patent/CN111880926B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130166886A1 (en) * | 2008-11-24 | 2013-06-27 | Ruchira Sasanka | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
CN105991458A (zh) * | 2015-02-02 | 2016-10-05 | 中兴通讯股份有限公司 | 一种负载均衡的方法及负载均衡装置 |
CN109729017A (zh) * | 2019-03-14 | 2019-05-07 | 哈尔滨工程大学 | 一种基于dpi预测的负载均衡方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111880926A (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102457571B (zh) | 一种云存储中数据均衡分布方法 | |
CN108009016B (zh) | 一种资源负载均衡控制方法及集群调度器 | |
CN104881325B (zh) | 一种资源调度方法和资源调度系统 | |
CN107534583B (zh) | 在管理节点中实现的方法和相关装置 | |
CN104468803B (zh) | 一种虚拟数据中心资源映射方法和设备 | |
CN109451540B (zh) | 一种网络切片的资源分配方法和设备 | |
CN112214307A (zh) | 在可用主机节点的约束内的容器化过程的执行 | |
CN103797462A (zh) | 一种创建虚拟机的方法和装置 | |
CN103473334A (zh) | 数据存储、查询方法及系统 | |
CN111880926B (zh) | 一种负载均衡方法、装置及计算机存储介质 | |
CN110519090B (zh) | 一种fpga云平台的加速卡分配方法、系统及相关组件 | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
CN105511801A (zh) | 数据存储的方法和装置 | |
CN109471725A (zh) | 资源分配方法、装置和服务器 | |
CN104350460A (zh) | 确定虚拟机放置 | |
EP4170491A1 (en) | Resource scheduling method and apparatus, electronic device, and computer-readable storage medium | |
CN104702691A (zh) | 分布式负载均衡方法和装置 | |
US20220300323A1 (en) | Job Scheduling Method and Job Scheduling Apparatus | |
CN107391039B (zh) | 一种数据对象存储方法和装置 | |
US9749219B2 (en) | Method of optimizing routing in a cluster comprising static communication links and computer program implementing that method | |
US9203733B2 (en) | Method of pseudo-dynamic routing in a cluster comprising static communication links and computer program implementing that method | |
CN115879543A (zh) | 一种模型训练方法、装置、设备、介质及系统 | |
CN112468458B (zh) | 一种基于neutron分层机制的调度方法 | |
US11928517B2 (en) | Feature resource self-tuning and rebalancing | |
US10114567B1 (en) | Data processing system with efficient path selection for storage I/O operations |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |