负载平衡方法和装置的制作方法

文档序号:6440552阅读:143来源:国知局
专利名称:负载平衡方法和装置的制作方法
技术领域
本发明涉及软件开发领域,具体而言,涉及一种负载平衡方法和装置。
背景技术
引擎是运行于网络中,通用的、可伸缩的,用于处理耗时耗资源的任务的框架系统。服务器通过运行引擎,向客户端提供各种服务。
在多任务系统中,用户向服务器提出多个任务请求,服务器应当以合理的机制调度合适的引擎运行相应的任务,以避免任务拥塞。
例如,现有出版流程重复性劳动多、效率低,各台设备之间没有协调和调度,更谈不上整个设备集群调度的资源优化和负载平衡,结果造成了设备和人力资源的浪费。发明内容
本发明旨在提供一种负载平衡方法和装置,以解决任务拥塞的问题。
在本发明的实施例中,提供了一种负载平衡方法,包括:从任务队列的队首中取出一个任务;从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;将任务分配给所选引擎,并将所选引擎的当前处理的任务数加I。
在本发明的实施例中,提供了一种负载平衡装置,包括:取任务模块,用于从任务队列的队首中取出一个任务;选择模块,用于从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;分配模块,用于将任务分配给所选引擎,并将所选引擎的当前处理的任务数加I。
本发明上述实施例的负载平衡方法和装置因为合理地调度引擎,所以克服了任务拥塞的问题,提高了引擎的运行效率。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明实施例的负载平衡方法的流程图2示出了根据本发明优选实施例的负载平衡方法的流程图3示出了根据本发明实施例的负载平衡装置的示意图4示出了根据本发明优选实施例的任务调度和负载平衡的系统的示意图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
图1示出了根据本发明实施例的负载平衡方法的流程图,包括:
步骤S10,从任务队列的队首中取出一个任务;
步骤S20,从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;
步骤S30,将任务分配给所选引擎,并将所选引擎的当前处理的任务数加I。
本方法在满足给定的任务执行顺序的前提下,可以有效地利用资源,快速完成任务处理。
优选地,步骤S20包括:确定与任务的业务类型相对应的引擎;获取各个相对应的引擎当前的处理能力;确定其中空闲任务数最多的引擎。
业务类型具体的可以为文档转换执行引擎、抽图执行引擎、图像转换执行引擎等,负责处理相应的业务。本优选实施例以比较简单地方法确定了处理能力最强的引擎。
优选地,空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
优选地,本方法还包括:确定所有相对应的引擎均不具备处理能力;使任务保持等待,直到确定一个相对应的引擎空闲。例如,获取等待任务队列中的第一个任务的业务类型,寻找各执行引擎的业务类型与之匹配的引擎,如果相同则判断执行引擎正在处理的任务个数是否小于CPU内核数,如果是则说明引擎还可以处理任务,如果大于CPU内核数,则说明引擎忙,不可以处理任务。
优选地,本方法还包括:预先从客户端接收要处理的任务;将要处理的任务插入任务队列的队尾。该方法比较简单,用队列数据结构即可实现。
图2示出了根据本发明优选实施例的负载平衡方法的流程图,包括:
步骤S201,收到任务请求时,将任务存储到等待执行任务队列中。
通过循环监测等待执行任务队列中的情况,一旦发现等待任务队列中有任务,开始执行步骤S202 ;否则不断地监测等待执行任务队列中的任务情况。
步骤S202,监测各执行引擎的能力、负载以及处理任务情况、业务处理数目;
向各个执行引擎发送消息,获取各执行引擎的CPU内核数、CPU使用率、正在处理的任务个数以及业务类型等;
获取等待任务队列中的第一个任务的业务类型,寻找各执行引擎的业务类型与之匹配的引擎,如果相同则判断执行引擎正在处理的任务个数是否小于CPU内核数,如果是则说明引擎还可以处理任务,执行步骤S203 ;否则继续监测;
该执行引擎同时处理的任务数,不超过CPU的内核数量。
步骤S203,将当前符合该任务业务请求类型的空闲执行引擎存储到可用引擎队列中;
步骤S204,判断可用引擎队列中是否有引擎,如果有则在可用引擎队列中找到处理能力最强的引擎,将任务分配给引擎进行处理,并将该任务从等待任务队列中移除,存储到执行队列中,同时修改该引擎处理任务的数目,现有处理任务数目加I ;否则继续执行步骤S202,直到找到可用的引擎。
具体的可以为:在可用引擎队列中,找到CPU使用率最小的引擎,也就是目前处理能力最强的引擎,将任务发给该引擎进行处理,并将该引擎正在处理任务的数目加I;
之后,针对下一个待执行的任务,再次获取各引擎的处理能力,总是把当前任务分配给处理能力最强的引擎来处理。直到所有的执行引擎都已经被当前的任务占用,服务器就不再继续把任务分配下去。未分配下去的任务处于等待执行任务队列中,直到有的引擎完成了当前的任务空闲下来,才会被分配、处理。
图3示出了根据本发明实施例的负载平衡装置的示意图,包括:
取任务模块10,用于从任务队列的队首中取出一个任务;
选择模块20,用于从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;
分配模块30,用于将任务分配给所选的引擎,并将所选引擎的当前处理的任务数加I。
本装置提高了引擎的运行效率。
优选地,选择模块包括:
业务类型模块,用于确定与任务的业务类型相对应的引擎;
获取模块,用于获取各个相对应的引擎当前的处理能力;
计算模块,用于确定其中空闲任务数最多的引擎。
优选地,空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
优选地,本装置还包括:等待模块,用于当计算模块确定所有相对应的引擎均不具备处理能力时,使任务保持等待,直到计算模块确定一个相对应的引擎空闲。
优选地,本装置还包括:
通信模块,用于预先从客户端接收要处理的任务;
插入模块,用于将要处理的任务插入任务队列的队尾。
图4示出了根据本发明优选实施例的任务调度和负载平衡的系统的示意图,包括多个客户端、一个服务器和多个执行引擎。
客户端发送任务到服务器的通信模块201中;
通信模块201接收到任务后,判断其任务的合法性,如果合法则将任务传递给调度模块202 ;否则直接通知客户端;
调度模块202是服务器的核心,包括图3的取任务模块、选择模块和分配模块。
调度模块主要负责各执行引擎,记录各执行引擎的IP地址,CPU使用率和任务处理情况;负责管理等待、运行以及处理完毕的任务队列。
调度模块接收到任务后将任务存储到等待执行任务队列中,同时,周期性的监测等待执行任务队列,监控有任务需要处理时,它向所有的引擎发送一个消息,获取各引擎当前的处理能力。同时针对下一个任务,再次获取各引擎的处理能力,总是把当前任务分配给处理能力最强的引擎来处理。直到所有的执行引擎都已经被当前的任务占用,服务器就不再继续把任务分配下去。未分配下去的任务处于等待执行任务队列中,直到有的引擎完成了当前的任务空闲下来,才会被分配、处理。
执行引擎可以具体地分为文档转换引擎、抽图引擎以及图像转换引擎等。
执行引擎收到任务后,开始进行处理,完成后无论失败,调用回调模块203,将处理结果通知服务器;
回调模块203再将处理结果通知客户端,完成本次任务的调度和处理。
从以上的描述中可以看出,本发明可以实现分布式任务调度和负载平衡,最大限度地提高资源使用率,提高系统吞吐量。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种负载平衡方法,其特征在于,包括: 从任务队列的队首中取出一个任务; 从与所述任务的业务类型相对应的引擎中选择处理能力最强的引擎; 将所述任务分配给所选引擎,并将所选引擎的当前处理的任务数加I。
2.根据权利要求1所述的方法,其特征在于,从与所述任务的业务类型相对应的引擎中选择处理能力最强的引擎包括: 确定与所述任务的业务类型相对应的引擎; 获取各个所述相对应的引擎当前的处理能力; 确定其中空闲任务数最多的引擎。
3.根据权利要求2所述的方法,其特征在于,所述空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
4.根据权利要求1所述的方法,其特征在于,还包括: 确定所有所述相对应的引擎均不具备处理能力; 使所述任务保持等待,直到确定一个所述相对应的引擎空闲。
5.根据权利要求1所述的方法,其特征在于,还包括: 预先从客户端接收要处理的任务; 将要处理的任务插入所述任务队列的队尾。
6.一种负载平衡装置,其特征在于,包括: 取任务模块,用于从任务队列的队首中取出一个任务; 选择模块,用于从与所述任务的业务类型相对应的引擎中选择处理能力最强的引擎; 分配模块,用于将所述任务分配给所选的引擎,并将所选引擎的当前处理的任务数加1
7.根据权利要求6所述的装置,其特征在于,所述选择模块包括: 业务类型模块,用于确定与所述任务的业务类型相对应的引擎; 获取模块,用于获取各个所述相对应的引擎当前的处理能力; 计算模块,用于确定其中空闲任务数最多的引擎。
8.根据权利要求7所述的装置,其特征在于,所述空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
9.根据权利要求6所述的装置,其特征在于,还包括: 等待模块,用于当所述计算模块确定所有所述相对应的引擎均不具备处理能力时,使所述任务保持等待,直到所述计算模块确定一个所述相对应的引擎空闲。
10.根据权利要求6所述的装置,其特征在于,还包括: 通信模块,用于预先从客户端接收要处理的任务; 插入模块,用于将要处理的任务插入所述任务队列的队尾。
全文摘要
本发明提供了一种负载平衡方法,包括从任务队列的队首中取出一个任务;从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。本发明提供了一种负载平衡装置,包括取任务模块,用于从任务队列的队首中取出一个任务;选择模块,用于从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;分配模块,用于将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。本发明提高了引擎的运行效率。
文档编号G06F9/50GK103150213SQ20111040639
公开日2013年6月12日 申请日期2011年12月6日 优先权日2011年12月6日
发明者周萍萍 申请人:北大方正集团有限公司, 北京北大方正电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1