一种基于任务调度的负载均衡方法、系统与流程

文档序号:13421541阅读:264来源:国知局
一种基于任务调度的负载均衡方法、系统与流程

本发明涉及云计算资源调度领域,尤其涉及一种基于任务调度的负载均衡方法、系统。



背景技术:

负载均衡是在多个计算机(计算机集群)、网络连接、cpu、磁盘驱动器或其他资源中分配负载的,以达到资源使用最佳化、吞吐率最大化、响应时间最小化和同时避免过载的目的。现代企业信息化应用越来越多的采用b/s应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行变得日益重要。随着越来越多的企业实施数据集中,应用的扩展性、安全性和可靠性也越来越受企业重视。

在云计算中,任务调度是影响系统性能的关键。如何根据任务所需的资源有效地分配执行节点,使大量任务能够高效地并行执行,并且使云计算任务调度系统在整体上能够达到负载均衡,让提高整个云计算任务调度的性能变成云计算的核心。传统的任务调度系统存在许多不足,不能满足任务量日益增大的计算需求,而且存在集群内部的部分计算机的共享资源大量闲置,少数计算机系统的负载量过大等各种情况,导致各节点的共享资源不能得到充分地利用,这些问题都会严重影响系统的性能。



技术实现要素:

本发明的目的在于提出一种实现任务的动态分发和迁移,避免因争夺资源导致执行器锁死的发生,提高执行有序性和资源利用率的基于任务调度的负载均衡方法、系统。

为达此目的,本发明采用以下技术方案:

一种基于任务调度的负载均衡方法,基于云计算的资源调度,包括以下步骤:

步骤a,中心任务调度器通过负载均衡算法,按照先进先出原则将任务分派给各个执行器;

步骤b,所述执行器建立deque队列并将接收的任务存放在所述deque队列上,所述deque队列是一个输入受限的队列,所述deque队列的头部只能删除,而所述deque队列的尾部能够插入和删除;所述执行器从所述deque队列的底部插入任务和删除已完成的任务;

步骤c,所述中心任务调度器监控所有执行器的任务数量,找出任务数量最多的执行器并将其设置为victim执行器;

步骤d,每个所述执行器检测自身的任务数量是否低于预设阈值:

若是则该执行器转为thief执行器并向中心任务调度器发送协助信号,所述中心任务调度器在收到所述协助信号后,向该thief执行器发送所述victim执行器的地址;

若不是则该执行器继续完成被分派的任务;

步骤e,所述thief执行器根据接收到的所述victim执行器的地址,通过二分法截取所述victim执行器的deque队列头部的任务,并将该任务插入到自身的deque队列中。

优选地,所述步骤b中deque队列存储任务方法为:

所述deque队列为一个输入受限的双端队列,所述deque队列的底层结构为双向链表;

所述deque队列每当接收到一个任务后,建立一个任务元素甲;

当前所述双向链表的结尾为任务元素乙时,所述deque队列把所述任务元素甲加到当前双向链表的结尾,形成一个新的双向链表,则所述双向链表的结尾变为任务元素甲,所述任务元素乙变为在所述任务元素甲的前面。

优选地,所述二分法截取任务方法为:

首先,所述thief执行器根据接收到的所述victim执行器的地址找到所述victim执行器;

然后,所述thief执行器向victim执行器发送提取任务请求,所述提取任务请求为请求调度victim执行器一半的任务量;

最后,所述victim执行器根据接收到的提取任务请求,按照从头到尾的顺序将自身的deque队列中一半的任务量转送给所述thief执行器。

优选地,所述任务提取方法为:

首先,所述中心任务调度器建立等候提取队列,每当接收到协助信号则将发送该协助信号的thief执行器的地址存放于所述等候提取队列;

然后,所述victim执行器接收各个thief执行器的提取任务请求并将其反馈给所述中心任务调度器,所述中心任务调度器按照先进先出原则将可提取任务的thief执行器的地址发送给所述victim执行器,所述victim执行器根据可提取任务的thief执行器的地址转送任务给对应的thief执行器;

接着,中心任务调度器监控所有执行器的任务数量,判断当前victim执行器是否仍为任务数量最多的执行器:

若是则按照先进先出原则将下一个可提取任务的thief执行器的地址发送给当前victim执行器;

若不是则设置任务数量最多的执行器为新的victim执行器,并按照先进先出原则将下一个可提取任务的thief执行器的地址发送给新的victim执行器。

优选地,所述中心任务调度器建立执行队列和任务队列,所述执行队列存储各个执行器的地址和任务数量,所述任务队列存储待分派的任务;

所述步骤a中,所述中心任务调度器按照先进先出原则将任务队列的任务分派给各个执行器;

所述步骤c中,所述中心任务调度器实时收集每个所述执行器的任务数量并存储于所述执行队列,根据所述执行队列找出任务数量最多的执行器并将其设置为victim执行器;

所述步骤d,所述中心任务调度器在所述执行队列查找所述victim执行器的地址。

优选地,一种基于任务调度的负载均衡系统,包括中心任务调度器和多个执行器,基于云计算调度资源;

所述中心任务调度器包括:

任务分派模块,用于通过负载均衡算法,按照先进先出原则将任务分派给各个执行器;

以及监控统计模块,用于监控所有执行器的任务数量,找出任务数量最多的执行器并将其设置为victim执行器;

所述执行器包括:

任务存储模块,用于建立deque队列并将接收的任务存放在所述deque队列上,从所述deque队列的底部插入任务和删除已完成的任务;

任务量检测模块,用于检测自身的任务数量是否低于预设阈值:

若是则转为thief执行器并向中心任务调度器发送协助信号,以获取所述victim执行器的地址;

若不是则继续完成被分派的任务;

以及任务截取模块,用于根据接收到的所述victim执行器的地址,通过二分法截取所述victim执行器的deque队列头部的任务,并将该任务插入到自身的deque队列中。

优选地,所述deque队列为一个输入受限的双端队列,所述deque队列的底层结构为双向链表;

所述deque队列被配置为:

每当接收到一个任务后,建立一个任务元素甲;

当前所述双向链表的结尾为任务元素乙时,所述deque队列把所述任务元素甲加到当前双向链表的结尾,形成一个新的双向链表,则所述双向链表的结尾变为任务元素甲,所述任务元素乙变为在所述任务元素甲的前面。

优选地,所述thief执行器包括:

提取请求模块,用于向victim执行器发送提取任务请求,所述提取任务请求为请求调度victim执行器一半的任务量;

所述victim执行器包括:

任务转送模块,用于根据接收到的提取任务请求,按照从头到尾的顺序将自身的deque队列中一半的任务量转送给所述thief执行器。

优选地,所述中心任务调度器还包括:

等候调度模块,用于建立等候提取队列,每当接收到协助信号则将发送该协助信号的thief执行器的地址存放于所述等候提取队列;

以及地址发送模块,用于按照先进先出原则将可提取任务的thief执行器的地址发送给所述victim执行器,

监控统计模块还用于监控所有执行器的任务数量,判断当前victim执行器是否仍为任务数量最多的执行器:

若是则按照先进先出原则将下一个可提取任务的thief执行器的地址发送给当前victim执行器;

若不是则设置任务数量最多的执行器为新的victim执行器,并按照先进先出原则将下一个可提取任务的thief执行器的地址发送给新的victim执行器;

所述victim执行器还包括:

反馈模块,用于接收各个thief执行器的提取任务请求并将其反馈给所述中心任务调度器;

任务转送模块还用于根据可提取任务的thief执行器的地址转送任务给对应的thief执行器。

优选地,所述中心任务调度器还设有执行队列和任务队列,所述执行队列用于存储各个执行器的地址和任务数量,所述任务队列用于存储待分派的任务。

所述基于任务调度的负载均衡方法通过任务分发和任务提取等方式,使得中心任务调度器不用过分依赖原来的负载均衡方法,调度任务量较少的执行器去执行任务量最大的执行器的任务,实现了对任务的动态分发和迁移,消除各个执行器负载不均匀的现象,能够降低原来负载均衡调节的复杂度,使任务执行变得高效并行;并且每一个执行器通过deque队列保存任务和二分法提取任务,从而避免因争夺资源导致任务执行死锁的问题,获取更大的负载均衡度,大大提高了系统并行资源利用率和整体性能。

附图说明

附图对本发明做进一步说明,但附图中的内容不构成对本发明的任何限制。

图1是本发明其中一个实施例的负载均衡系统结构示意图;

图2是本发明其中一个实施例的中心任务调度器模块图;

图3是本发明其中一个实施例的任务调度交互流程图;

图4是本发明其中一个实施例的deque队列存储任务流程图。

其中:中心任务调度器1;执行器2;deque队列3;victim执行器4;thief执行器5;双向链表b1、b2;等候提取队列11;执行队列12;任务队列13。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。

本实施例的基于任务调度的负载均衡方法,基于云计算的资源调度,如图3所示,包括以下步骤:

步骤a,中心任务调度器1通过负载均衡算法,按照先进先出原则将任务分派给各个执行器2;

步骤b,所述执行器2建立deque队列3并将接收的任务存放在所述deque队列3上,所述deque队列3是一个输入受限的队列,所述deque队列3的头部只能删除,而所述deque队列3的尾部能够插入和删除;所述执行器2从所述deque队列3的底部插入任务和删除已完成的任务;

步骤c,所述中心任务调度器1监控所有执行器2的任务数量,找出任务数量最多的执行器2并将其设置为victim执行器4;

步骤d,每个所述执行器2检测自身的任务数量是否低于预设阈值:

若是则该执行器2转为thief执行器5并向中心任务调度器1发送协助信号,所述中心任务调度器1在收到所述协助信号后,向该thief执行器5发送所述victim执行器4的地址;

若不是则该执行器2继续完成被分派的任务;

步骤e,所述thief执行器5根据接收到的所述victim执行器4的地址,通过二分法截取所述victim执行器4的deque队列3头部的任务,并将该任务插入到自身的deque队列3中。

所述基于任务调度的负载均衡方法通过任务分发和任务提取等方式,使得中心任务调度器1不用过分依赖原来的负载均衡方法,调度任务量较少的执行器2去执行任务量最大的执行器2的任务,实现了对任务的动态分发和迁移,消除各个执行器2负载不均匀的现象,能够降低原来负载均衡调节的复杂度,使任务执行变得高效并行;并且每一个执行器2通过deque队列3保存任务和二分法提取任务,从而避免因争夺资源导致任务执行死锁的问题,获取更大的负载均衡度,大大提高了系统并行资源利用率和整体性能。

所述中心任务调度器1根据实际的任务情况自定义负载均衡算法来分派任务。所述deque队列3表示双端队列(double-endedqueue),所述thief执行器5表示协助执行器,victim执行器4表示任务数量最多的执行器2。

优选地,如图4所示,所述步骤b中deque队列3存储任务方法为:

所述deque队列3为一个输入受限的双端队列,所述deque队列3的底层结构为双向链表b1;所述deque队列3每当接收到一个任务后,建立一个任务元素甲;当前所述双向链表b1的结尾为任务元素乙时,所述deque队列3把所述任务元素甲加到当前双向链表b1的结尾,形成一个新的双向链表b2,则所述双向链表b2的结尾变为任务元素甲,所述任务元素乙变为在所述任务元素甲的前面。

由于deque队列3为输入受限的双端队列,deque队列3的头部只能删除,deque队列3的尾部可以插入和删除,限制新任务仅能从尾部插入,而完成的任务或被提取的任务可以从头部或尾部删除,使任务的插入和删除有序进行,便于thief执行器5提取任务;存储的有序性有效避免各个执行器2因为争夺任务资源而出现死锁的现象,从而提高系统资源利用率和系统整体性能。

优选地,所述二分法截取任务方法为:

首先,所述thief执行器5根据接收到的所述victim执行器4的地址找到所述victim执行器4;

然后,所述thief执行器5向victim执行器4发送提取任务请求,所述提取任务请求为请求调度victim执行器4一半的任务量;

最后,所述victim执行器4根据接收到的提取任务请求,按照从头到尾的顺序将自身的deque队列3中一半的任务量转送给所述thief执行器5。

由于各个执行器2的处理能力不同,处理任务的速度也有差别,从而导致系统出现负载不均衡的情况,往往一个执行器2的任务处理完毕时,另一个执行器2还有大量任务未处理,这样就会导致处理好任务的执行器2资源浪费。因此,增设二分法提取任务,加入阈值判断,按照地址找到任务量最大的victim执行器4,有序地截取victim执行器4的任务,从而避免资源浪费;并且每个thief执行器5均从victim执行器4的deque队列3的头部截取任务,而victim执行器4是从deque队列3的尾部插入新任务和删除已完成的任务,从而使截取动作不影响victim执行器4执行任务,避免将已完成的任务截取给thief执行器5,实现并行有序性。

优选地,所述任务提取方法为:

首先,所述中心任务调度器1建立等候提取队列11,如图2所示,每当接收到协助信号则将发送该协助信号的thief执行器5的地址存放于所述等候提取队列11;

然后,所述victim执行器4接收各个thief执行器5的提取任务请求并将其反馈给所述中心任务调度器1,所述中心任务调度器1按照先进先出原则将可提取任务的thief执行器5的地址发送给所述victim执行器4,所述victim执行器4根据可提取任务的thief执行器5的地址转送任务给对应的thief执行器5;

接着,中心任务调度器1监控所有执行器2的任务数量,判断当前victim执行器4是否仍为任务数量最多的执行器2:

若是则按照先进先出原则将下一个可提取任务的thief执行器5的地址发送给当前victim执行器4;

若不是则设置任务数量最多的执行器2为新的victim执行器4,并按照先进先出原则将下一个可提取任务的thief执行器5的地址发送给新的victim执行器4。

为避免多个thief执行器5发生争夺截取victim执行器4任务而导致锁死情况,由中心任务调度器1调度各个thief执行器5截取任务:每当接收到协助信号则将发送该协助信号的thief执行器5的地址存放于所述等候提取队列11,从而实现各个thief执行器5按照时间先后排队等候截取任务。并且,每当一个thief执行器5截取完任务后,中心任务调度器1都重新分析各个执行器2的任务数量,以判断当前victim执行器4是否仍为任务数量最多的执行器2,以确保下一个thief执行器5的截取对象是任务量最大的执行器2,提高任务调度的准确度和有序性。

优选地,所述中心任务调度器1建立执行队列12和任务队列13,如图2所示,所述执行队列12存储各个执行器2的地址和任务数量,所述任务队列13存储待分派的任务;

所述步骤a中,所述中心任务调度器1按照先进先出原则将任务队列13的任务分派给各个执行器2;

所述步骤c中,所述中心任务调度器1实时收集每个所述执行器2的任务数量并存储于所述执行队列12,根据所述执行队列12找出任务数量最多的执行器2并将其设置为victim执行器4;

所述步骤d,所述中心任务调度器1在所述执行队列12查找所述victim执行器4的地址。

中心任务调度器1设置有执行队列12和任务队列13,所述执行队列12存储各个执行器2的地址和任务数量,便于向thief执行器5发送victim执行器4的地址;所述任务队列13存储待分派的任务,便于有序分派任务。整个任务调度过程有序而不混乱,各个执行器2清楚地执行自身任务;并通过任务提取,实现任务的迁移和分发,有效消除各个执行器2负载不均匀的现象,大大地降低负载均衡调节的复杂度,使得任务高效而有序地执行。

优选地,一种基于任务调度的负载均衡系统,包括中心任务调度器1和多个执行器2,基于云计算调度资源,如图1所示;

所述中心任务调度器1包括:

任务分派模块,用于通过负载均衡算法,按照先进先出原则将任务分派给各个执行器2;

以及监控统计模块,用于监控所有执行器2的任务数量,找出任务数量最多的执行器2并将其设置为victim执行器4;

所述执行器2包括:

任务存储模块,用于建立deque队列3并将接收的任务存放在所述deque队列3上,从所述deque队列3的底部插入任务和删除已完成的任务;

任务量检测模块,用于检测自身的任务数量是否低于预设阈值:

若是则转为thief执行器5并向中心任务调度器1发送协助信号,以获取所述victim执行器4的地址;

若不是则继续完成被分派的任务;

以及任务截取模块,用于根据接收到的所述victim执行器4的地址,通过二分法截取所述victim执行器4的deque队列3头部的任务,并将该任务插入到自身的deque队列3中。

所述基于任务调度的负载均衡系统通过任务分发和任务提取等方式,使得中心任务调度器1不用过分依赖原来的负载均衡方法,调度任务量较少的执行器2去执行任务量最大的执行器2的任务,实现了对任务的动态分发和迁移,消除各个执行器2负载不均匀的现象,能够降低原来负载均衡调节的复杂度,使任务执行变得高效并行;并且每一个执行器2通过deque队列3保存任务和二分法提取任务,从而避免因争夺资源导致任务执行死锁的问题,获取更大的负载均衡度,大大提高了系统并行资源利用率和整体性能。

优选地,如图4所示,所述deque队列3为一个输入受限的双端队列,所述deque队列3的底层结构为双向链表b1;

所述deque队列3被配置为:

每当接收到一个任务后,建立一个任务元素甲;

当前所述双向链表b1的结尾为任务元素乙时,所述deque队列3把所述任务元素甲加到当前双向链表b1的结尾,形成一个新的双向链表b2,则所述双向链表b2的结尾变为任务元素甲,所述任务元素乙变为在所述任务元素甲的前面。

由于deque队列3为输入受限的双端队列,deque队列3的头部只能删除,deque队列3的尾部可以插入和删除,限制新任务仅能从尾部插入,而完成的任务或被提取的任务可以从头部或尾部删除,使任务的插入和删除有序进行,便于thief执行器5提取任务;存储的有序性有效避免各个执行器2因为争夺任务资源而出现死锁的现象,从而提高系统资源利用率和系统整体性能。

优选地,所述thief执行器5包括:

提取请求模块,用于向victim执行器4发送提取任务请求,所述提取任务请求为请求调度victim执行器4一半的任务量;

所述victim执行器4包括:

任务转送模块,用于根据接收到的提取任务请求,按照从头到尾的顺序将自身的deque队列3中一半的任务量转送给所述thief执行器5。

增设二分法提取任务,加入阈值判断,按照地址找到任务量最大的victim执行器4,有序地截取victim执行器4的任务,从而避免资源浪费;并且每个thief执行器5均从victim执行器4的deque队列3的头部截取任务,而victim执行器4是从deque队列3的尾部插入新任务和删除已完成的任务,从而使截取动作不影响victim执行器4执行任务,避免将已完成的任务截取给thief执行器5,实现并行有序性。

优选地,如图2所示,所述中心任务调度器1还包括:

等候调度模块,用于建立等候提取队列11,每当接收到协助信号则将发送该协助信号的thief执行器5的地址存放于所述等候提取队列11;

以及地址发送模块,用于按照先进先出原则将可提取任务的thief执行器5的地址发送给所述victim执行器4,

监控统计模块还用于监控所有执行器2的任务数量,判断当前victim执行器4是否仍为任务数量最多的执行器2:

若是则按照先进先出原则将下一个可提取任务的thief执行器5的地址发送给当前victim执行器4;

若不是则设置任务数量最多的执行器2为新的victim执行器4,并按照先进先出原则将下一个可提取任务的thief执行器5的地址发送给新的victim执行器4;

所述victim执行器4还包括:

反馈模块,用于接收各个thief执行器5的提取任务请求并将其反馈给所述中心任务调度器1;

任务转送模块还用于根据可提取任务的thief执行器5的地址转送任务给对应的thief执行器5。

为避免多个thief执行器5发生争夺截取victim执行器4任务而导致锁死情况,由中心任务调度器1调度各个thief执行器5截取任务:每当接收到协助信号则将发送该协助信号的thief执行器5的地址存放于所述等候提取队列11,从而实现各个thief执行器5按照时间先后排队等候截取任务。并且,每当一个thief执行器5截取完任务后,中心任务调度器1都重新分析各个执行器2的任务数量,以判断当前victim执行器4是否仍为任务数量最多的执行器2,以确保下一个thief执行器5的截取对象是任务量最大的执行器2,提高任务调度的准确度和有序性。

优选地,如图2所示,所述中心任务调度器1还设有执行队列12和任务队列13,所述执行队列12用于存储各个执行器2的地址和任务数量,所述任务队列13用于存储待分派的任务。中心任务调度器1设置有执行队列12和任务队列13,所述执行队列12存储各个执行器2的地址和任务数量,便于向thief执行器5发送victim执行器4的地址;所述任务队列13存储待分派的任务,便于有序分派任务。整个任务调度过程有序而不混乱,各个执行器2清楚地执行自身任务;并通过任务提取,实现任务的迁移和分发,有效消除各个执行器2负载不均匀的现象,大大地降低负载均衡调节的复杂度,使得任务高效而有序地执行。

以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1