一种基于zookeeper实现负载均衡的方法及系统技术方案

技术编号:15541206 阅读:156 留言:0更新日期:2017-06-05 10:43
本发明专利技术所述的一种基于zookeeper实现负载均衡的方法及系统,包括如下步骤:获取任务处理器负载信息素;调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。采用该方式可以灵活的对任务进行扩展,任务处理模块对所有任务的处理支持周期性任务和单次任务。

Method and system for realizing load balance based on zookeeper

One of the zookeeper implementation and system load balance based method comprises the following steps: acquiring the task processor load information; call user initiated task request, gets the task information of the task request and stored in a task ready queue, task queue thread will according to the time sequence of the relaxation task in in order to output a mission; to perform tasks assigned to each processor task a maximum allocation probability, and calculate the load distribution scheme of each task is not balanced, the task allocation scheme of load balanced task allocation scheme and output optimal size. With this method, the task can be flexibly extended, and the task processing module supports periodic tasks and single tasks for all tasks.

【技术实现步骤摘要】
一种基于zookeeper实现负载均衡的方法及系统
本专利技术涉及计算机
,尤其涉及一种基于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被进一步配置为包括用于获取最大分配概率的任务处理器的统计单元,所述统计单元包括建立子单元及概率计本文档来自技高网
...
一种基于zookeeper实现负载均衡的方法及系统

【技术保护点】
一种基于zookeeper实现负载均衡的方法,其特征在于,包括如下步骤:S100:获取任务处理器负载信息素;S200:调用用户发起的任务请求,获取所述任务请求的任务信息并存入任务就绪队列,将任务就绪队列依照任务的时间松弛度从小到大的顺序依序输出待执行任务;S300:逐个将待执行任务分配给一最大分配概率的任务处理器,并计算每一任务分配方案的负载不均衡度,比较各任务分配方案的负载不均衡度大小并输出最优的任务分配方案。

【技术特征摘要】
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)表示更新的负载信息...

【专利技术属性】
技术研发人员:王琦刘坤朋郑杭练军
申请(专利权)人:福建六壬网安股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1