CN106776008A - 一种基于zookeeper实现负载均衡的方法及系统 - Google Patents
一种基于zookeeper实现负载均衡的方法及系统 Download PDFInfo
- Publication number
- CN106776008A CN106776008A CN201611038251.4A CN201611038251A CN106776008A CN 106776008 A CN106776008 A CN 106776008A CN 201611038251 A CN201611038251 A CN 201611038251A CN 106776008 A CN106776008 A CN 106776008A
- Authority
- CN
- China
- Prior art keywords
- task
- load
- processor
- zookeeper
- allocative decision
- 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; 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明所述的一种基于zookeeper实现负载均衡的方法及系统,包括如下步骤:获取任务处理器负载信息素;调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。采用该方式可以灵活的对任务进行扩展,任务处理模块对所有任务的处理支持周期性任务和单次任务。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于zookeeper实现负载均衡的方法及系统。
背景技术
企业大数据量的快速激增要求对业务数据分块,进而由分布式系统对各块进行高可用的并行处理。在分布式数据处理系统中,通常有一些通过网络彼此互联且在数量上可以弹性扩展的节点,每个节点都采用相同的工作方式,他们通过一定的协商机制,在协商完毕后结合一致性哈希算法,能够自发地确定由自身处理的数据块,然后对这些数据块进行处理。
对于分布式系统,需要一定的协调机制使系统在节点变动例如增加、删除一个或多个节点的情况下系统仍具有较高的可靠性。Zookeeper常被软件系统用于构建这种协调机制,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
申请号为201410154133.4的专利申请中公开一种处理数据的方法和装置,。该方法中,当前节点向zookeeper进行注册并触发对系统中所有其他节点的监听;当前节点在从注册完成时起,干预设时长内监听到全部其他节点对新增节点事件做出确认的事件的情况下,确定由自身来处理的数据块;当前节点在注册完成时起,经预设时长后仍未监听到至少一个其他节点对新增节点事件做出确认的事件情况下,判断zookeeper中是否保存该至少一个其他节点对新增节点事件做出确认信息,若是,则确定由自身来处理的数据块,否则重新向zookeeper进行注册。上述方法有助于避免在分布式数据处理系统中采用zookeeper进行任务调度时出现的数据被不同的节点重复处理的现象,但该方法不能实现各个节点数据均衡处理且容易出现单点故障故障问题。
申请号为201510561242.2的专利申请中公开用于基于zookeeper实现分布式调度的方法,该方法包括在zookeeper注册中心处的分布式队列中注册多个调度应用;调用注册的多个调度应用中的第一调度应用,以向所述第一调度应用分配分布式锁,使得仅所述第一调度应用能够执行任务;以及当所述第一调度应用获得所分配的分布式锁时,利用所述第一调度应用执行相应的任务。上述方法利用zookeeper替代数据库来控制实现单点任务调度的Quartz单点应用的执行以实现分布式调度,实现了一种既能满足定时调度任务、又能满足多任务同时执行的调度框架,但该方式无法实现各个节点数据均衡处理且容易出现单点故障。
发明内容
本发明的目的在于,提出一种能够灵活实现系统稳定的负载均衡,避免单点故障,且支持周期性任务与单次任务的基于zookeeper实现负载均衡的方法,避免无法实现各个节点数据均衡处理,容易出现单点故障的问题。
为了实现上述目的,本发明所采用的技术方案为:
一种基于zookeeper实现负载均衡的方法,包括如下步骤:
S100:获取任务处理器负载信息素;
S200:调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;
S300:逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。
每一待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案,包括以下步骤:
步骤A:初始化m个任务处理器负载信息素,根据式(1)计算所有任务处理器i(i=1,2,...,m)的初始负载信息素Load(i);
Load(i)=|Uti(i)-Uti(i).avg| 式(1)
步骤B:在n个任务中,根据所选的第一个任务i在满足式(2)的情况下,按照式(3)计算可执行该任务的处理器j(处理器j满足式(2))的任务分配概率pij,选择其中最大概率的处理器完成对要执行的任务的的部署,选择下一个任务继续执行上述操作,直至任务全部执行完,得到一种分配方案;
Ti<Sj 式(2)
步骤C:对所分配的任务处理器按照式(4)进行负载信息素Load’(i)更新(i为参与分配任务的处理器),并根据式(5)计算该方案的负载不均衡度H;
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
步骤D:更换所选的第一个任务转至步骤B,直至不同的n种方案处理完毕;
步骤E:比较n中方案的负载不均衡度大小,即比较H(i)的大小(i=1,2,...,n),选择最小不均衡度的方案作为最优的任务分配方案。
步骤F:根据式(6)更新全部任务处理器的负载信息素Load’(i)(i=1,2,...,m)
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
所述步骤B中,获取最大分配概率的任务处理器,包括如下步骤;
建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
计算最大分配概率的任务处理器:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
每一待执行任务分配给一最大分配概率的任务处理器后还包括所述步骤C更新任务处理器的负载信息素,所述更新任务处理器的负载信息素的方法为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数。
在输出最优的任务分配方案之后还包括:
将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
在输出最优的任务分配方案之后还包括,所述步骤F中,更新全部任务处理器的负载信息素:
依据最优任务分配方案的负载不平衡度更新全部任务处理器的负载信息素:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
一种基于zookeeper实现负载均衡的系统,包括:
模块A:为采集模块,用于获取任务处理器负载信息素;
模块B:为任务管理模块,用于调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;
模块C:为任务处理模块,逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。
所述模块C,每一待执行任务分配给一最大分配概率的任务处理器后还包括更新任务处理器的负载信息素的方法,所述更新任务处理器的负载信息素的方法被进一步配置为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数。
所述模块C被进一步配置为包括用于获取最大分配概率的任务处理器的统计单元,所述统计单元包括建立子单元及概率计算子单元,
建立子单元,用于建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
概率计算子单元,用于计算最大分配概率的任务处理器:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
所述系统还包括监听模块,
所述监听模块用于在输出最优的任务分配方案之后,将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
本发明的有益效果为:
一、所述基于zookeeper实现负载均衡的方法在任务分配给处理器工作时,随着任务数量的不断增加,仍然可以保持良好的性能与效率,而且采取全局负载信息素更新的策略,使得最终的任务分配方案更优更可靠。由用户发起任务请求,任务管理模块轮询找出新的处于任务就绪队列的任务,并为任务处理模块提供待执行任务。由任务处理模块对所有任务处理器进行统一管理,分配,计算负载不均衡度大小,实现输出最优的任务分配方案。采用该方式可以灵活的对任务进行扩展,任务处理模块对所有任务的处理支持周期性任务和单次任务。
二、所述基于zookeeper实现负载均衡的系统,任务管理模块可以以单机或多机的方式部署,任务处理模块可以分布式集群方式部署,可以减少系统受到攻击,避免系统出现单点故障的问题。
附图说明
图1为本发明zookeeper系统整体的系统架构图;
图2为本发明zookeeper系统中zookeeper目录结构;
图3为本发明一种基于zookeeper实现负载均衡的方法的流程图;
图4为本发明一种基于zookeeper实现负载均衡的方法又一实施方式流程图;
图5为本发明一种基于zookeeper实现负载均衡的系统的结构框图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
Zookeeper提供了java和C两条API,用户可以根据业务需求选择具体的API方便的进行开发,系统在整体上主要实现两层结构,一层是任务的添加、修改和删除,另一层是任务的获取及处理,zookeeper系统整体的系统架构图如图1、图2所示,图2中所示zookeeper目录结构设计如下:
1)/Task目录用于设定任务。其子目录为永久目录,具体表现为目录名代表任务编号,内容为业务数据。
2)/Owner目录用于标识正在处理的任务。其子目录为临时目录,具体表现为目录名代表正在处理的任务编号,内容为执行该任务的事件处理器信息。
3)/Client目录表明在线的任务处理服务器。其子目录为临时目录,具体表现为目录名代表在线的事件处理器服务器IP地址,内容可为该服务器负载情况。
本发明的实施方式中公开一种基于zookeeper实现负载均衡的方法,参阅图3所示,包括如下步骤:
S100:获取任务处理器负载信息素;
具体的,所述任务处理器负载信息素根据蚁群算法中信息素的定义,任务处理器是根据所分配的任务执行相应处理操作的设备,将zookeeper的/Client下子目录中的任务处理器对应的负载信息素根据如下公式进行初始化以获取任务处理器负载信息素:
Load(i)=|Uti(i)-Uti(i).avg|
其中,Load(i)表示任务处理器i的负载信息素,Uti(i)表示i的利用率,Uti(i).avg表示i的平均利用率。
S200:调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;
在步骤S200中,用户发起任务请求,将新的任务插入建立的任务数据库中,在这一过程中,将任务信息包括任务编号与任务信息存储在任务数据库中,任务管理器读取数据库中新的任务信息,并根据如下公式计算各项任务的时间松弛度大小:
DORa=CompleteTime-(SelfTime+CurrentSystemTime)
其中DORa表示任务a松弛度,CompleteTime表示完成时间,SelfTime表示任务a执行时间,CurrentSystemTime表示系统当前时间。
依照时间松弛度大小将任务存入任务就绪队列,存入任务就绪队列的任务优选的依照时间松弛度从小到大的顺序排列,或者也可以依照时间松弛度从大到小的顺序排列。
将任务就绪队列中的任务依据looseness函数完成可执行周期任务的选择,其过程为:输入任务就绪队列,并标记其中的任务为执行状态,按时间松弛度大小输出相应的待执行任务。
S300:逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。载不均衡度是当前任务处理器利用率与整个处理器集合的平均利用率的差值的绝对值。该值越小,表明任务处理器负载分布越均匀,系统的整体性能越高。
在步骤S300中,依据distribute函数操作,输出最优的任务分配方案。Distribute函数对给予的任务按照最大分配概率进行任务处理器预分配,对每种预分配方案得出的负载不均衡度进行比较,取最优作为实际任务分配方案。参阅图4所示,其具体的执行过程如下:
S301:向任务处理器中输入待执行任务的任务信息Map<tasknum,taskmsg>与各任务处理器信息Map<servernum,servermsg>,建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
任务处理器选择表示例
S302:选择时间松弛度最小的待执行任务,从任务处理器选择表中选择最大分配概率的任务处理器进行部署,所述最大分配概率的任务处理器采用下述方式取得:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
S303:每一待执行任务分配给最大分配概率的任务处理器后更新任务处理器的负载信息素,所述更新任务处理器的负载信息素的方法为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数;
S304:计算每一任务分配方案的负载不均衡度,该方法为:
其中,servernum表示总的任务处理器数。
在步骤S300中,循环执行步骤S302、S303、S304为每一待执行任务分配一最大分配概率的任务处理器,直至所有待执行任务均分配一任务分配方案,接着执行步骤S305。
S305:比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。
上述实施方式所述的基于zookeeper实现负载均衡的方法,在一改进的实施方式中,在输出最优的任务分配方案之后还包括:
S400:将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
上述实施方式所述的基于zookeeper实现负载均衡的方法,在一改进的实施方式中,在输出最优的任务分配方案之后还包括:
S500:依据最优任务分配方案的负载不平衡度更新全部任务处理器的负载信息素:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,H表示在最优任务分配方案下的负载不平衡度,步骤S500可以在步骤S400之前执行,也可以在步骤S400之后执行。
上述步骤的执行将会依据任务请求的情况循环执行,直至发出关闭命令为止。
上述的每一待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案,也可以描述为包括以下步骤:
步骤A:初始化m个任务处理器负载信息素,根据式(1)计算所有任务处理器i(i=1,2,...,m)的初始负载信息素Load(i);
Load(i)=|Uti(i)-Uti(i).avg| 式(1)
步骤B:在n个任务中,根据所选的第一个任务i在满足式(2)的情况下,按照式(3)计算可执行该任务的处理器j(处理器j满足式(2))的任务分配概率pij,选择其中最大概率的处理器完成对要执行的任务的的部署,选择下一个任务继续执行上述操作,直至任务全部执行完,得到一种分配方案;
Ti<Sj 式(2)
步骤C:对所分配的任务处理器按照式(4)进行负载信息素Load’(i)更新(i为参与分配任务的处理器),并根据式(5)计算该方案的负载不均衡度H;
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
步骤D:更换所选的第一个任务转至步骤B,直至不同的n种方案处理完毕;
步骤E:比较n中方案的负载不均衡度大小,即比较H(i)的大小(i=1,2,...,n),选择最小不均衡度的方案作为最优的任务分配方案。
步骤F:根据式(6)更新全部任务处理器的负载信息素Load’(i)(i=1,2,...,m)
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
所述步骤B中,获取最大分配概率的任务处理器,包括如下步骤;
建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
计算最大分配概率的任务处理器:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
每一待执行任务分配给一最大分配概率的任务处理器后还包括所述步骤C更新任务处理器的负载信息素,所述更新任务处理器的负载信息素的方法为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数。
在输出最优的任务分配方案之后还包括:
将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
在输出最优的任务分配方案之后还包括,所述步骤F中,更新全部任务处理器的负载信息素:
依据最优任务分配方案的负载不平衡度更新全部任务处理器的负载信息素:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
上述描述的的基于zookeeper实现负载均衡的方法,由用户发起任务请求,任务管理模块轮询找出新的处于任务就绪队列的任务,并为任务处理模块提供待执行任务。由任务处理模块对所有任务处理器进行统一管理、分配、计算负载不均衡度大小,实现输出最优的任务分配方案。采用该方式可以灵活的对任务进行扩展,任务处理模块对所有任务的处理支持周期性任务和单次任务。
本发明的一实施方式中还公开一种基于zookeeper实现负载均衡的系统,上述实施方式所述的基于zookeeper实现负载均衡的系统是基于zookeeper实现负载均衡的方法相对应的系统实施例,基于zookeeper实现负载均衡的方法中提到的相关技术细节在本实施方式中依然有效,为了减少重复这里不再赘述。参阅图5所示,所述系统包括:
模块A:为采集模块100,用于获取任务处理器负载信息素;
模块B:为任务管理模块200,用于调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;
模块C:为任务处理模块300,逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。
上述实施方式所述的基于zookeeper实现负载均衡的系统,在一改进的实施方式中,所述任务处理模块被进一步配置为,每一待执行任务分配给一最大分配概率的任务处理器后还包括更新任务处理器的负载信息素,所述更新任务处理器的负载信息素的方法为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数。
如上述实施方式所述的基于zookeeper实现负载均衡的系统,所述任务处理模块被进一步配置为包括用于获取最大分配概率的任务处理器的统计单元,所述统计单元包括建立子单元及概率计算子单元,
建立子单元,用于建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
概率计算子单元,用于计算最大分配概率的任务处理器:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
所述的基于zookeeper实现负载均衡的系统,所述系统还包括监听模块,所述监听模块用于在输出最优的任务分配方案之后,将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
所述的基于zookeeper实现负载均衡的系统,所述系统还包括更新模块,所述更新模块用于在输出最优的任务分配方案之后,依据最优任务分配方案的负载不平衡度更新全部任务处理器的负载信息素。
所述基于zookeeper实现负载均衡的系统,任务管理模块可以以单机或多机的方式部署,任务处理模块可以分布式集群方式部署,可以减少系统受到攻击,避免系统出现单点故障的问题。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于zookeeper实现负载均衡的方法,其特征在于,包括如下步骤:
S100:获取任务处理器负载信息素;
S200:调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;
S300:逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。
2.根据权利要求1所述的基于zookeeper实现负载均衡的方法,其特征在于:每一待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案,包括以下步骤:
步骤A:初始化m个任务处理器负载信息素,根据式(1)计算所有任务处理器i(i=1,2,...,m)的初始负载信息素Load(i);
Load(i)=|Uti(i)-Uti(i).avg| 式(1)
步骤B:在n个任务中,根据所选的第一个任务i在满足式(2)的情况下,按照式(3)计算可执行该任务的处理器j(处理器j满足式(2))的任务分配概率pij,选择其中最大概率的处理器完成对要执行的任务的的部署,选择下一个任务继续执行上述操作,直至任务全部执行完,得到一种分配方案;
Ti<Sj 式(2)
步骤C:对所分配的任务处理器按照式(4)进行负载信息素Load’(i)更新(i为参与分配任务的处理器),并根据式(5)计算该方案的负载不均衡度H;
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
步骤D:更换所选的第一个任务转至步骤B,直至不同的n种方案处理完毕;
步骤E:比较n中方案的负载不均衡度大小,即比较H(i)的大小(i=1,2,...,n),选择最小不均衡度的方案作为最优的任务分配方案。
步骤F:根据式(6)更新全部任务处理器的负载信息素Load’(i)(i=1,2,...,m)
3.根据权利要求2所述的基于zookeeper实现负载均衡的方法,其特征在于,所述步骤B中,获取最大分配概率的任务处理器,包括如下步骤;
建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
计算最大分配概率的任务处理器:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
4.根据权利要求2所述的基于zookeeper实现负载均衡的方法,其特征在于:每一待执行任务分配给一最大分配概率的任务处理器后还包括所述步骤C更新任务处理器的负载信息素,所述更新任务处理器的负载信息素的方法为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数。
5.根据权利要求1-4任一所述的基于zookeeper实现负载均衡的方法,其特征在于:在输出最优的任务分配方案之后还包括:
将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
6.根据权利要求1-4任一所述的基于zookeeper实现负载均衡的方法,其特征在于:在输出最优的任务分配方案之后还包括,所述步骤F中,更新全部任务处理器的负载信息素:
依据最优任务分配方案的负载不平衡度更新全部任务处理器的负载信息素:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
7.一种基于zookeeper实现负载均衡的系统,其特征在于,包括:
模块A:为采集模块,用于获取任务处理器负载信息素;
模块B:为任务管理模块,用于调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;
模块C:为任务处理模块,逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。
8.根据权利要求7所述的基于zookeeper实现负载均衡的系统,其特征在于:所述模块C,每一待执行任务分配给一最大分配概率的任务处理器后还包括更新任务处理器的负载信息素的方法,所述更新任务处理器的负载信息素的方法被进一步配置为:
Load'(i)=(1-ρ)Load(i)+ρΔLoad(i)
其中,Load'(i)表示更新的负载信息素,i遍历所分配的任务处理器编号,p表示信息素挥发系数介于0和1,△Load(i)表示信息素增量,H表示所分配任务处理器的负载不均衡度,disnum表示所分配的任务处理器数。
9.根据权利要求7所述的基于zookeeper实现负载均衡的系统,其特征在于:所述模块C被进一步配置为包括用于获取最大分配概率的任务处理器的统计单元,所述统计单元包括建立子单元及概率计算子单元,
建立子单元,用于建立满足条件Ti<Sj的任务处理器选择表,其中Ti表示任务i所需的资源,Sj表示任务处理器j当前持有的资源;
概率计算子单元,用于计算最大分配概率的任务处理器:
其中pij表示任务i分配到任务处理器j的概率,a表示信息素启发因子,b表示期望启发因子,A表示任务处理器选择表中对应的任务处理器集合,n表示任务需求资源与任务处理器持有资源的欧氏距离的倒数。
10.根据权利要求7-9任一所述的基于zookeeper实现负载均衡的系统,其特征在于:所述系统还包括监听模块,
所述监听模块用于在输出最优的任务分配方案之后,将未完成任务插入到任务就绪队列,将已完成任务依照任务的时间松弛度大小插入等待队列,所述等待队列等待下一个任务周期插入到任务就绪队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611038251.4A CN106776008A (zh) | 2016-11-23 | 2016-11-23 | 一种基于zookeeper实现负载均衡的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611038251.4A CN106776008A (zh) | 2016-11-23 | 2016-11-23 | 一种基于zookeeper实现负载均衡的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106776008A true CN106776008A (zh) | 2017-05-31 |
Family
ID=58974891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611038251.4A Pending CN106776008A (zh) | 2016-11-23 | 2016-11-23 | 一种基于zookeeper实现负载均衡的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776008A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107741882A (zh) * | 2017-11-22 | 2018-02-27 | 阿里巴巴集团控股有限公司 | 分配任务的方法及装置和电子设备 |
CN108415765A (zh) * | 2018-02-28 | 2018-08-17 | 百度在线网络技术(北京)有限公司 | 任务调度方法、装置及智能终端 |
CN109146212A (zh) * | 2017-06-16 | 2019-01-04 | 佛山科学技术学院 | 众包系统中的大规模同构任务分配方法 |
CN110119316A (zh) * | 2019-05-17 | 2019-08-13 | 中国石油大学(华东) | 一种基于松弛度与蚁群系统的关联任务调度策略 |
CN110390464A (zh) * | 2019-06-14 | 2019-10-29 | 平安科技(深圳)有限公司 | 任务分配方法、装置、计算机设备及可读存储介质 |
CN111045807A (zh) * | 2019-12-17 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 基于zookeeper任务处理的方法、装置、计算机设备及存储介质 |
WO2020124524A1 (zh) * | 2018-12-21 | 2020-06-25 | 深圳鲲云信息科技有限公司 | 一种资源平台独享资源的方法、装置及电子设备 |
CN112905326A (zh) * | 2021-02-18 | 2021-06-04 | 上海哔哩哔哩科技有限公司 | 任务处理方法及装置 |
CN113434310A (zh) * | 2021-06-23 | 2021-09-24 | 未鲲(上海)科技服务有限公司 | 多线程任务分配方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970609A (zh) * | 2014-04-24 | 2014-08-06 | 南京信息工程大学 | 一种基于改进蚁群算法的云数据中心任务调度方法 |
CN104202434A (zh) * | 2014-09-28 | 2014-12-10 | 北京奇虎科技有限公司 | 节点访问方法和装置 |
CN104915557A (zh) * | 2015-06-04 | 2015-09-16 | 中山大学 | 一种基于双目标蚁群算法的云任务分配方法 |
US9195510B2 (en) * | 2011-04-04 | 2015-11-24 | Dell Products L.P. | Information handling system application decentralized workload management |
-
2016
- 2016-11-23 CN CN201611038251.4A patent/CN106776008A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195510B2 (en) * | 2011-04-04 | 2015-11-24 | Dell Products L.P. | Information handling system application decentralized workload management |
CN103970609A (zh) * | 2014-04-24 | 2014-08-06 | 南京信息工程大学 | 一种基于改进蚁群算法的云数据中心任务调度方法 |
CN104202434A (zh) * | 2014-09-28 | 2014-12-10 | 北京奇虎科技有限公司 | 节点访问方法和装置 |
CN104915557A (zh) * | 2015-06-04 | 2015-09-16 | 中山大学 | 一种基于双目标蚁群算法的云任务分配方法 |
Non-Patent Citations (1)
Title |
---|
靳琳: "云计算数据中心构建中负载均衡的研究", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109146212A (zh) * | 2017-06-16 | 2019-01-04 | 佛山科学技术学院 | 众包系统中的大规模同构任务分配方法 |
CN109146212B (zh) * | 2017-06-16 | 2022-03-25 | 佛山科学技术学院 | 众包系统中的大规模同构任务分配方法 |
CN107741882A (zh) * | 2017-11-22 | 2018-02-27 | 阿里巴巴集团控股有限公司 | 分配任务的方法及装置和电子设备 |
CN107741882B (zh) * | 2017-11-22 | 2021-08-20 | 创新先进技术有限公司 | 分配任务的方法及装置和电子设备 |
CN108415765A (zh) * | 2018-02-28 | 2018-08-17 | 百度在线网络技术(北京)有限公司 | 任务调度方法、装置及智能终端 |
WO2020124524A1 (zh) * | 2018-12-21 | 2020-06-25 | 深圳鲲云信息科技有限公司 | 一种资源平台独享资源的方法、装置及电子设备 |
CN110119316A (zh) * | 2019-05-17 | 2019-08-13 | 中国石油大学(华东) | 一种基于松弛度与蚁群系统的关联任务调度策略 |
CN110390464A (zh) * | 2019-06-14 | 2019-10-29 | 平安科技(深圳)有限公司 | 任务分配方法、装置、计算机设备及可读存储介质 |
CN110390464B (zh) * | 2019-06-14 | 2023-09-22 | 平安科技(深圳)有限公司 | 任务分配方法、装置、计算机设备及可读存储介质 |
CN111045807A (zh) * | 2019-12-17 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 基于zookeeper任务处理的方法、装置、计算机设备及存储介质 |
CN111045807B (zh) * | 2019-12-17 | 2024-05-14 | 深圳前海环融联易信息科技服务有限公司 | 基于zookeeper任务处理的方法、装置、计算机设备及存储介质 |
CN112905326A (zh) * | 2021-02-18 | 2021-06-04 | 上海哔哩哔哩科技有限公司 | 任务处理方法及装置 |
CN113434310A (zh) * | 2021-06-23 | 2021-09-24 | 未鲲(上海)科技服务有限公司 | 多线程任务分配方法、装置、设备及存储介质 |
CN113434310B (zh) * | 2021-06-23 | 2024-03-22 | 深圳博瑞晶芯科技有限公司 | 多线程任务分配方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776008A (zh) | 一种基于zookeeper实现负载均衡的方法及系统 | |
CN105049268B (zh) | 分布式计算资源分配系统和任务处理方法 | |
CN108345501A (zh) | 一种分布式资源调度方法和系统 | |
KR20170029263A (ko) | 부하 분산 장치 및 방법 | |
CN104391918B (zh) | 基于对等部署的分布式数据库查询优先级管理的实现方法 | |
US9218210B2 (en) | Distributed processing system | |
CN107168779A (zh) | 一种任务管理方法及系统 | |
CN106557471A (zh) | 任务调度方法及装置 | |
CN109343942A (zh) | 基于边缘计算网络的任务调度方法 | |
Mahato et al. | On scheduling transactions in a grid processing system considering load through ant colony optimization | |
CN108810115A (zh) | 一种适用于分布式数据库的负载均衡方法、装置及服务器 | |
CN112288423A (zh) | 一种分布式框架的聚合支付方法和系统 | |
CN114610474A (zh) | 一种异构超算环境下多策略的作业调度方法及系统 | |
US8161485B2 (en) | Scheduling jobs in a plurality of queues and dividing jobs into high and normal priority and calculating a queue selection reference value | |
CN107203560A (zh) | 数据库、多数据库操作事务一致性保证方法及系统 | |
CN110162397A (zh) | 资源分配方法、装置及系统 | |
CN108829519A (zh) | 基于云平台的任务调度方法、云平台及计算机可读存储介质 | |
CN103595654A (zh) | 基于多核CPU的HQoS实现方法、装置及网络设备 | |
CN104410511B (zh) | 一种服务器管理方法及系统 | |
CN109508232A (zh) | 一种任务调度管理的方法、装置及电子设备 | |
WO2013039796A2 (en) | Scale-out system to acquire event data | |
CN107168805A (zh) | 一种基于虚拟机的资源调度方法 | |
CN110532060A (zh) | 一种混合网络环境数据采集方法及系统 | |
CN107025134A (zh) | 数据库服务系统及兼容多种数据库的方法 | |
CN104009904B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |
|
RJ01 | Rejection of invention patent application after publication |