CN103150213B - 负载平衡方法和装置 - Google Patents
负载平衡方法和装置 Download PDFInfo
- Publication number
- CN103150213B CN103150213B CN201110406395.1A CN201110406395A CN103150213B CN 103150213 B CN103150213 B CN 103150213B CN 201110406395 A CN201110406395 A CN 201110406395A CN 103150213 B CN103150213 B CN 103150213B
- Authority
- CN
- China
- Prior art keywords
- task
- engine
- queue
- module
- disposal ability
- 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.)
- Expired - Fee Related
Links
Landscapes
- Processing Of Solid Wastes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
Abstract
本发明提供了一种负载平衡方法,包括:从任务队列的队首中取出一个任务;从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。本发明提供了一种负载平衡装置,包括:取任务模块,用于从任务队列的队首中取出一个任务;选择模块,用于从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;分配模块,用于将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。本发明提高了引擎的运行效率。
Description
技术领域
本发明涉及软件开发领域,具体而言,涉及一种负载平衡方法和装置。
背景技术
引擎是运行于网络中,通用的、可伸缩的,用于处理耗时耗资源的任务的框架系统。服务器通过运行引擎,向客户端提供各种服务。
在多任务系统中,用户向服务器提出多个任务请求,服务器应当以合理的机制调度合适的引擎运行相应的任务,以避免任务拥塞。
例如,现有出版流程重复性劳动多、效率低,各台设备之间没有协调和调度,更谈不上整个设备集群调度的资源优化和负载平衡,结果造成了设备和人力资源的浪费。
发明内容
本发明旨在提供一种负载平衡方法和装置,以解决任务拥塞的问题。
在本发明的实施例中,提供了一种负载平衡方法,包括:从任务队列的队首中取出一个任务;从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。
在本发明的实施例中,提供了一种负载平衡装置,包括:取任务模块,用于从任务队列的队首中取出一个任务;选择模块,用于从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;分配模块,用于将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。
本发明上述实施例的负载平衡方法和装置因为合理地调度引擎,所以克服了任务拥塞的问题,提高了引擎的运行效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明实施例的负载平衡方法的流程图;
图2示出了根据本发明优选实施例的负载平衡方法的流程图;
图3示出了根据本发明实施例的负载平衡装置的示意图;
图4示出了根据本发明优选实施例的任务调度和负载平衡的系统的示意图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
图1示出了根据本发明实施例的负载平衡方法的流程图,包括:
步骤S10,从任务队列的队首中取出一个任务;
步骤S20,从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;
步骤S30,将任务分配给所选引擎,并将所选引擎的当前处理的任务数加1。
本方法在满足给定的任务执行顺序的前提下,可以有效地利用资源,快速完成任务处理。
优选地,步骤S20包括:确定与任务的业务类型相对应的引擎;获取各个相对应的引擎当前的处理能力;确定其中空闲任务数最多的引擎。
业务类型具体的可以为文档转换执行引擎、抽图执行引擎、图像转换执行引擎等,负责处理相应的业务。本优选实施例以比较简单地方法确定了处理能力最强的引擎。
优选地,空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
优选地,本方法还包括:确定所有相对应的引擎均不具备处理能力;使任务保持等待,直到确定一个相对应的引擎空闲。例如,获取等待任务队列中的第一个任务的业务类型,寻找各执行引擎的业务类型与之匹配的引擎,如果相同则判断执行引擎正在处理的任务个数是否小于CPU内核数,如果是则说明引擎还可以处理任务,如果大于CPU内核数,则说明引擎忙,不可以处理任务。
优选地,本方法还包括:预先从客户端接收要处理的任务;将要处理的任务插入任务队列的队尾。该方法比较简单,用队列数据结构即可实现。
图2示出了根据本发明优选实施例的负载平衡方法的流程图,包括:
步骤S201,收到任务请求时,将任务存储到等待执行任务队列中。
通过循环监测等待执行任务队列中的情况,一旦发现等待任务队列中有任务,开始执行步骤S202;否则不断地监测等待执行任务队列中的任务情况。
步骤S202,监测各执行引擎的能力、负载以及处理任务情况、业务处理数目;
向各个执行引擎发送消息,获取各执行引擎的CPU内核数、CPU使用率、正在处理的任务个数以及业务类型等;
获取等待任务队列中的第一个任务的业务类型,寻找各执行引擎的业务类型与之匹配的引擎,如果相同则判断执行引擎正在处理的任务个数是否小于CPU内核数,如果是则说明引擎还可以处理任务,执行步骤S203;否则继续监测;
该执行引擎同时处理的任务数,不超过CPU的内核数量。
步骤S203,将当前符合该任务业务请求类型的空闲执行引擎存储到可用引擎队列中;
步骤S204,判断可用引擎队列中是否有引擎,如果有则在可用引擎队列中找到处理能力最强的引擎,将任务分配给引擎进行处理,并将该任务从等待任务队列中移除,存储到执行队列中,同时修改该引擎处理任务的数目,现有处理任务数目加1;否则继续执行步骤S202,直到找到可用的引擎。
具体的可以为:在可用引擎队列中,找到CPU使用率最小的引擎,也就是目前处理能力最强的引擎,将任务发给该引擎进行处理,并将该引擎正在处理任务的数目加1;
之后,针对下一个待执行的任务,再次获取各引擎的处理能力,总是把当前任务分配给处理能力最强的引擎来处理。直到所有的执行引擎都已经被当前的任务占用,服务器就不再继续把任务分配下去。未分配下去的任务处于等待执行任务队列中,直到有的引擎完成了当前的任务空闲下来,才会被分配、处理。
图3示出了根据本发明实施例的负载平衡装置的示意图,包括:
取任务模块10,用于从任务队列的队首中取出一个任务;
选择模块20,用于从与任务的业务类型相对应的引擎中选择处理能力最强的引擎;
分配模块30,用于将任务分配给所选的引擎,并将所选引擎的当前处理的任务数加1。
本装置提高了引擎的运行效率。
优选地,选择模块包括:
业务类型模块,用于确定与任务的业务类型相对应的引擎;
获取模块,用于获取各个相对应的引擎当前的处理能力;
计算模块,用于确定其中空闲任务数最多的引擎。
优选地,空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
优选地,本装置还包括:等待模块,用于当计算模块确定所有相对应的引擎均不具备处理能力时,使任务保持等待,直到计算模块确定一个相对应的引擎空闲。
优选地,本装置还包括:
通信模块,用于预先从客户端接收要处理的任务;
插入模块,用于将要处理的任务插入任务队列的队尾。
图4示出了根据本发明优选实施例的任务调度和负载平衡的系统的示意图,包括多个客户端、一个服务器和多个执行引擎。
客户端发送任务到服务器的通信模块201中;
通信模块201接收到任务后,判断其任务的合法性,如果合法则将任务传递给调度模块202;否则直接通知客户端;
调度模块202是服务器的核心,包括图3的取任务模块、选择模块和分配模块。
调度模块主要负责各执行引擎,记录各执行引擎的IP地址,CPU使用率和任务处理情况;负责管理等待、运行以及处理完毕的任务队列。
调度模块接收到任务后将任务存储到等待执行任务队列中,同时,周期性的监测等待执行任务队列,监控有任务需要处理时,它向所有的引擎发送一个消息,获取各引擎当前的处理能力。同时针对下一个任务,再次获取各引擎的处理能力,总是把当前任务分配给处理能力最强的引擎来处理。直到所有的执行引擎都已经被当前的任务占用,服务器就不再继续把任务分配下去。未分配下去的任务处于等待执行任务队列中,直到有的引擎完成了当前的任务空闲下来,才会被分配、处理。
执行引擎可以具体地分为文档转换引擎、抽图引擎以及图像转换引擎等。
执行引擎收到任务后,开始进行处理,完成后无论失败,调用回调模块203,将处理结果通知服务器;
回调模块203再将处理结果通知客户端,完成本次任务的调度和处理。
从以上的描述中可以看出,本发明可以实现分布式任务调度和负载平衡,最大限度地提高资源使用率,提高系统吞吐量。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种负载平衡方法,其特征在于,包括:
从任务队列的队首中取出一个任务;
从与所述任务的业务类型相对应的引擎中选择处理能力最强的引擎;
将所述任务分配给所选引擎,并将所选引擎的当前处理的任务数加1;
其中,从与所述任务的业务类型相对应的引擎中选择处理能力最强的引擎包括:
确定与所述任务的业务类型相对应的引擎;
获取各个所述相对应的引擎当前的处理能力;
确定其中空闲任务数最多的引擎,其中所述空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
2.根据权利要求1所述的方法,其特征在于,还包括:
确定所有所述相对应的引擎均不具备处理能力;
使所述任务保持等待,直到确定一个所述相对应的引擎空闲。
3.根据权利要求1所述的方法,其特征在于,还包括:
预先从客户端接收要处理的任务;
将要处理的任务插入所述任务队列的队尾。
4.一种负载平衡装置,其特征在于,包括:
取任务模块,用于从任务队列的队首中取出一个任务;
选择模块,用于从与所述任务的业务类型相对应的引擎中选择处理能力最强的引擎;
分配模块,用于将所述任务分配给所选的引擎,并将所选引擎的当前处理的任务数加1;
其中,所述选择模块包括:
业务类型模块,用于确定与所述任务的业务类型相对应的引擎;
获取模块,用于获取各个所述相对应的引擎当前的处理能力;
计算模块,用于确定其中空闲任务数最多的引擎,其中所述空闲任务数为引擎的最大任务处理数减去其当前处理的任务数。
5.根据权利要求4所述的装置,其特征在于,还包括:
等待模块,用于当所述计算模块确定所有所述相对应的引擎均不具备处理能力时,使所述任务保持等待,直到所述计算模块确定一个所述相对应的引擎空闲。
6.根据权利要求4所述的装置,其特征在于,还包括:
通信模块,用于预先从客户端接收要处理的任务;
插入模块,用于将要处理的任务插入所述任务队列的队尾。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110406395.1A CN103150213B (zh) | 2011-12-06 | 2011-12-06 | 负载平衡方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110406395.1A CN103150213B (zh) | 2011-12-06 | 2011-12-06 | 负载平衡方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150213A CN103150213A (zh) | 2013-06-12 |
CN103150213B true CN103150213B (zh) | 2016-06-22 |
Family
ID=48548311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110406395.1A Expired - Fee Related CN103150213B (zh) | 2011-12-06 | 2011-12-06 | 负载平衡方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150213B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183540A (zh) * | 2015-07-29 | 2015-12-23 | 青岛海尔智能家电科技有限公司 | 一种实时数据流处理的任务分配方法及系统 |
CN105260234A (zh) * | 2015-09-22 | 2016-01-20 | 浙江工商大学 | 基于独立任务列表的过程动态执行优化方法 |
CN106557471A (zh) * | 2015-09-24 | 2017-04-05 | 上海汽车集团股份有限公司 | 任务调度方法及装置 |
CN107168777B (zh) * | 2016-03-07 | 2021-04-30 | 阿里巴巴集团控股有限公司 | 分布式系统中资源的调度方法以及装置 |
CN106453497A (zh) * | 2016-09-08 | 2017-02-22 | 天津海量信息技术股份有限公司 | 一种分布式集群系统及其资源调配方法 |
CN109324816A (zh) * | 2018-09-12 | 2019-02-12 | Oppo广东移动通信有限公司 | 游戏加载方法及相关产品 |
CN109669775B (zh) * | 2018-12-10 | 2024-06-25 | 平安科技(深圳)有限公司 | 分布式任务调度方法、系统及存储介质 |
CN109697599B (zh) * | 2018-12-19 | 2022-01-04 | 成都多用科技有限公司 | 一种驱动流程的系统及方法 |
CN109656733B (zh) * | 2018-12-27 | 2021-03-12 | 厦门商集网络科技有限责任公司 | 智能调度多ocr识别引擎的方法及设备 |
CN110428840B (zh) * | 2019-07-19 | 2024-09-24 | 平安科技(深圳)有限公司 | 语音识别系统中的负载均衡实现方法、装置以及计算机设备 |
CN113127179A (zh) * | 2019-12-30 | 2021-07-16 | 中兴通讯股份有限公司 | 资源调度方法、装置、电子设备及计算机可读介质 |
CN111290862A (zh) * | 2020-01-21 | 2020-06-16 | 深圳前海环融联易信息科技服务有限公司 | 消息处理方法、装置、计算机设备及存储介质 |
CN113282390A (zh) * | 2021-05-20 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 任务调度方法、装置、电子设备及可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026425A (en) * | 1996-07-30 | 2000-02-15 | Nippon Telegraph And Telephone Corporation | Non-uniform system load balance method and apparatus for updating threshold of tasks according to estimated load fluctuation |
CN101533417B (zh) * | 2009-04-28 | 2012-04-18 | 阿里巴巴集团控股有限公司 | 一种实现etl调度的方法及系统 |
CN101694709B (zh) * | 2009-09-27 | 2012-03-28 | 华中科技大学 | 一种面向服务的分布式工作流管理系统 |
CN102056333A (zh) * | 2009-11-05 | 2011-05-11 | 中国移动通信集团河南有限公司 | Wap网关及其业务处理方法和wap代理服务器 |
CN102033777B (zh) * | 2010-09-17 | 2013-03-20 | 中国资源卫星应用中心 | 基于ice的分布式作业调度引擎 |
-
2011
- 2011-12-06 CN CN201110406395.1A patent/CN103150213B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103150213A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150213B (zh) | 负载平衡方法和装置 | |
EP3669494B1 (en) | Dynamic allocation of edge computing resources in edge computing centers | |
CN110290180B (zh) | 分布式任务调度方法、装置、计算机设备和存储介质 | |
CN110351384B (zh) | 大数据平台资源管理方法、装置、设备及可读存储介质 | |
CN112486648A (zh) | 任务调度方法、装置、系统、电子设备和存储介质 | |
GB2532834A (en) | A method and system for scalable job processing | |
WO2013107012A1 (zh) | 分布式计算任务处理系统和任务处理方法 | |
US20230342191A1 (en) | Task Scheduling Method and System | |
CN112087503A (zh) | 集群任务调度方法、系统、计算机和计算机可读存储介质 | |
CN100385402C (zh) | 网格环境下动态在线式任务调度系统及其调度方法 | |
CN110914805A (zh) | 用于分层任务调度的计算系统 | |
CN113032125A (zh) | 作业调度方法、装置、计算机系统和计算机可读存储介质 | |
Sharma et al. | A Dynamic optimization algorithm for task scheduling in cloud computing with resource utilization | |
WO2020108337A1 (zh) | 一种cpu资源调度方法及电子设备 | |
CN107025134B (zh) | 数据库服务系统及兼容多种数据库的方法 | |
Parikh et al. | Double level priority based optimization algorithm for task scheduling in cloud computing | |
JP4862056B2 (ja) | 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 | |
Huang et al. | Multi-resource packing for job scheduling in virtual machine based cloud environment | |
CN105474173B (zh) | 用于减少功率消耗的并行的网络应用调度 | |
CN110175078B (zh) | 业务处理方法及装置 | |
CN115964152A (zh) | Gpu资源调度方法、设备和存储介质 | |
Mishra et al. | A memory-aware dynamic job scheduling model in Grid computing | |
CN114489978A (zh) | 资源调度方法、装置、设备及存储介质 | |
CN113204434B (zh) | 基于k8s的计划任务执行方法、装置及计算机设备 | |
Lokhande et al. | Grid computing scheduling jobs based on priority using backfilling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160622 Termination date: 20191206 |