CN109981710B - 一种面向物联网流计算的负载均衡和容错方法 - Google Patents
一种面向物联网流计算的负载均衡和容错方法 Download PDFInfo
- Publication number
- CN109981710B CN109981710B CN201711456506.3A CN201711456506A CN109981710B CN 109981710 B CN109981710 B CN 109981710B CN 201711456506 A CN201711456506 A CN 201711456506A CN 109981710 B CN109981710 B CN 109981710B
- Authority
- CN
- China
- Prior art keywords
- task
- current
- node
- tasks
- calculation processing
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例公开了一种面向物联网流计算的负载均衡和容错方法和任务领取节点,对任务池中当前任务领取节点标识对应的任务信息进行加锁,将任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;计算当前的负载冗余时间;若当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对任务池中N个满足第一预设条件的任务进行加锁,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;若当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对任务池中与任务集合S中任务标识对应的任务加锁,修改任务池中与任务集合S中的任务标识对应任务的任务信息。
Description
技术领域
本发明涉及物联网领域,尤其涉及一种面向物联网流计算的负载均衡和容错方法、任务领取节点和计算机可读存储介质。
背景技术
随着物联网的发展,人们对物联网数据的实时计算产生了大量需求,因此基于物联网流计算的应用也越来越多。不同于传统互联网应用的后台大数据流计算(通常任务明确、单任务消耗大,多个节点处理单一任务),物联网流计算具有任务多、任务差异大,单个任务消耗小的特点,多个任务通常会在单个节点上进行计算。因此数据处理中心为了应对大量的物联网流计算任务需要将大量的任务分配到多个计算节点中进行处理,设计相应的负载均衡和容错方法。
传统的负载均衡方法主要是基于调度来进行,有基于负载的调度,也有基于轮询的调度,调度算法可以运行在任务提交的客户端也可以运行在负载均衡节点。为了避免负载均衡节点产生的单节点故障对系统的影响,基于客户端的调度越来越多被采用。
在物联网流计算系统中,对于负载的定义发生了新的变化。传统的负载定义,一般是看机器的CPU和内存性能。而在物联网流计算系统中,负载的定义则加入了新的要素,即需要满足在给定时间间隔内计算完流入数据。由于各种物联网流计算任务的差异性,以及数据处理平台并无法预知数据流入的吞吐特征,通常这个准则的度量在实际系统中是很难进行预先估计的。如果按照传统的调度方法进行基于负载的调度,为了保证业务稳定,在预估负载特征时,很可能会给运算节点留出比较大的冗余不然会引起过载。而基于轮询的调度方法,更是可能由于任务的差异巨大,而导致计算节点负载的巨大变化。
传统的服务容错方式,主要是建立服务注册和发现中心,通过故障服务隔离,来避免单个节点故障导致的服务问题。而在流计算的容错问题上,由于物联网流计算的计算服务是有状态的,无法简单进行故障隔离达到容错的目的,还需要对相应的服务进行恢复,这种有状态的节点服务恢复通常采用故障监测+备份恢复的机制,即利用故障监测节点与各个服务节点建立心跳信息或者主动轮询各个服务节点,在发现故障后从备份副本中创建新的服务。
虽然现有的调度技术能够一定程度上对于物联网流计算的负载均衡进行帮助,但是会造成资源预留的巨大冗余,同时调度复杂度会随着计算服务的节点数而增长。例如,当采用中心节点时,需要心跳收集每个计算服务节点的当前负载状态,并预估新任务的负载;而为了降低对中心节点的依赖性,当采用客户端负载均衡时,则每个客户端都需要收集每个计算服务节点的当前负载状态,并预估新任务的负载。
发明内容
为解决上述技术问题,本发明实施例提供一种面向物联网流计算的负载均衡和容错方法、任务领取节点和计算机可读存储介质,既避免了流计算负载预估不准确而导致的冗余问题,又避免了计算复杂度随计算服务数量增长的问题。
本发明的技术方案是这样实现的:
本发明实施例提供一种负载均衡和容错方法,包括:
对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;
计算当前任务领取节点当前的负载冗余时间;
若所述当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;
若所述当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。
进一步地,所述负载冗余时间为:在当前任务领取节点的计算处理列表中任务的最大流计算间隔内,所述计算处理列表各个任务归一化负载冗余的最小值;
所述第一预设时间为所述负载冗余时间的减函数;
所述N为所述负载冗余时间任务数的乐观估计,所述M为小于N的整数。
进一步地,所述对所述任务池中N个满足第一预设条件的任务进行加锁,包括:
访问所述任务池,从所述任务池中读取N个满足第一预设条件的任务,对所述任务池中N个满足第一预设条件的任务进行加锁,所述满足第一预设条件的任务包括:状态为空闲状态且计算节点为空的任务,或者更新时间大于第二预设时间的任务。
进一步地,所述将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新,包括:
通过预估负载在读取的N个任务中选择M个个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
计算处理后将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间;
将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
进一步地,所述选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息,包括:
从所述当前任务领取节点对应的计算处理列表中选取任务集合S,其中,所述任务集合S根据当前任务领取节点每次加入任务后的负载冗余时间的减少量进行选取;
在所述任务池中查找与所述任务集合S中任务标识对应的任务,对所述任务池中与所述任务集合S中任务标识对应的任务加锁;
修改所述任务池中与所述任务集合S中的任务标识对应任务的任务状态为空闲状态,修改所述任务池中与所述任务集合S中的任务标识对应任务的更新时间为当前时间,修改所述任务池中与所述任务集合S中的任务标识对应任务的计算节点为空;
对所述任务池中与所述任务集合S中任务标识对应的任务解锁。
进一步地,所述方法还包括:
若所述当前的负载冗余时间小于所述第一门限值,将当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
将计算处理后当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将计算处理后当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将计算处理后当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间,将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
本发明实施例还提供一种任务领取节点,所述任务领取节点包括:处理器,用于:
对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;
计算当前任务领取节点当前的负载冗余时间;
若所述当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;
若所述当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。
进一步地,所述负载冗余时间为:在当前任务领取节点的计算处理列表中任务的最大流计算间隔内,所述计算处理列表各个任务归一化负载冗余的最小值;所述第一预设时间为所述负载冗余时间的减函数;所述N为所述负载冗余时间任务数的乐观估计,所述M为小于N的整数。
进一步地,所述处理器,具体用于访问所述任务池,从所述任务池中读取N个满足第一预设条件的任务,对所述任务池中N个满足第一预设条件的任务进行加锁,所述满足第一预设条件的任务包括:状态为空闲状态且计算节点为空的任务,或者更新时间大于第二预设时间的任务。
进一步地,所述处理器,具体用于:
通过预估负载在读取的N个任务中选择M个个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
计算处理后将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间;将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
进一步地,所述处理器,具体用于:
从所述当前任务领取节点对应的计算处理列表中选取任务集合S,其中,所述任务集合S根据当前任务领取节点每次加入任务后的负载冗余时间的减少量进行选取;
在所述任务池中查找与所述任务集合S中任务标识对应的任务,对所述任务池中与所述任务集合S中任务标识对应的任务加锁;
修改所述任务池中与所述任务集合S中的任务标识对应任务的任务状态为空闲状态,修改所述任务池中与所述任务集合S中的任务标识对应任务的更新时间为当前时间,修改所述任务池中与所述任务集合S中的任务标识对应任务的计算节点为空;对所述任务池中与所述任务集合S中任务标识对应的任务解锁。
进一步地,所述处理器,还用于:
若所述当前的负载冗余时间小于所述第一门限值,将当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
将计算处理后当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将计算处理后当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将计算处理后当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间,将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时实现如上任一项所述的面向物联网流计算的负载均衡和容错方法。
本发明实施例还提供一种任务领取节点,所述任务领取节点包括:处理器和存储器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于运行所述计算机程序时执行如上任一项所述面向物联网流计算的负载均衡和容错方法的步骤。
本发明实施例提供了一种面向物联网流计算的负载均衡和容错方法、任务领取节点和计算机可读存储介质,对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;计算当前任务领取节点当前的负载冗余时间;若所述当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;若所述当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。本发明实施例提供的面向物联网流计算的负载均衡和容错方法、任务领取节点和计算机可读存储介质,基于任务池可以分布式地利用计算服务的贪婪领取和任务释放机制进行任务的有效负载均衡,既避免了流计算负载预估不准确而导致的冗余问题,又避免了计算复杂度随计算服务数量增长的问题,同时又巧妙的实现了容错的问题,不需要依赖故障监测节点。
附图说明
图1为本发明实施例提供的面向物联网流计算的负载均衡和容错方法流程示意图一;
图2为本发明实施例提供的面向物联网流计算的负载均衡和容错方法流程示意图二;
图3为本发明实施例提供的任务领取节点的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供一种面向物联网流计算的负载均衡和容错方法,如图1所示,该方法可以包括:
步骤101、对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁。
具体的,本发明实施例提供的面向物联网流计算的负载均衡和容错方法的执行主体为任务领取节点,即任务领取节点对任务池中当前任务领取节点标识对应的任务信息进行加锁,这里,加锁的目的防止其他节点对任务信息进行修改,加锁后只允许实施加锁的节点对任务信息进行修改,而其他节点无法对任务信息进行修改;解锁后,其他节点可以对任务信息进行修改。
其中,当前任务领取节点标识具体可以为当前任务领取节点id。
需要说明的是,本发明实施例提供的方法是每个计算任务领取节点以T1为周期进行步骤101、步骤102、步骤103以及步骤104的操作,也可以理解为步骤101、步骤102、步骤103以及步骤10是在T1周期内进行的。
步骤102、计算当前任务领取节点当前的负载冗余时间。
其中,所述负载冗余时间T2为:在当前任务领取节点的计算处理列表中任务的最大流计算间隔内,所述计算处理列表各个任务归一化负载冗余的最小值。
示例性的,第i个任务的归一化负载冗余Gi为计算处理列表中所有任务的最大流计算间隔内最小值,Gi=(任务i的流计算间隔-完成任务i的计算时间)/(任务i流计算间隔)。
可选的,当计算处理列表中任务的流计算间隔与当前节点的周期计算时间间隔差不多时,T2的计算可以近似为:(节点的周期计算时间间隔-周期计算时间间隔内完成计算任务的时间)/(节点的周期计算时间间隔)。
步骤103、若当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新。
需要说明的是,系统中可以部署多个任务发布节点和计算任务领取节点,每个计算任务领取节点可以具有不同的第一门限值W,门限W的设置取决于当前节点的负载偏好,工程人员可以根据节点的硬件稳定性设置W,W越大节点的满工作负载越小。
其中,第一预设时间T3为冗余时间T2的减函数,可以设置为max(0,T1-T2)+rand(X),其中,随机项的值X可以自由设定,原则上远小于T1。
这里,数值N的选取为当前负载冗余时间T2任务数的乐观估计,可以根据T2除以历史负载冗余时间减少量与领取任务数比例的均值+乐观偏移量来进行估计,乐观偏移量可以为大于等于0的较小整数。在读取前N个空闲任务时,可以根据偏好对计算参数或者流计算间隔进行排序或者过滤。例如选取流计算间隔最小的前N个空闲任务。
其中,所述满足第一预设条件的任务包括:状态为空闲状态且计算节点为空的任务,或者更新时间大于第二预设时间的任务。
这里,第二预设时间T4的选择为大于T1的整数,可以等于2倍的T1。
具体的,任务领取节点访问任务池,从所述任务池中读取N个满足第一预设条件的任务,对所述任务池中N个满足第一预设条件的任务进行加锁,通过预估负载在读取的N个任务中选择M个个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;计算处理后将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间;将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
步骤104、若当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。
其中,任务集合S的选取,可以根据当前节点每次加入任务后的T2减少量,选取减少量最接近W-T2的任务集合。
具体的,当前任务领取节点从自身对应的计算处理列表中选取任务集合S,其中,所述任务集合S根据当前任务领取节点每次加入任务后的负载冗余时间的减少量进行选取;在所述任务池中查找与所述任务集合S中任务标识对应的任务,对所述任务池中与所述任务集合S中任务标识对应的任务加锁;修改所述任务池中与所述任务集合S中的任务标识对应任务的任务状态为空闲状态,修改所述任务池中与所述任务集合S中的任务标识对应任务的更新时间为当前时间,修改所述任务池中与所述任务集合S中的任务标识对应任务的计算节点为空;对所述任务池中与所述任务集合S中任务标识对应的任务解锁。
可选的,若所述当前的负载冗余时间小于所述第一门限值,将当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
将计算处理后当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将计算处理后当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将计算处理后当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时。
进一步地,任务发布节点在任务池中创建流计算任务,获取任务池中当前任务领取节点标识对应的任务信息,所述任务信息包括:任务状态,任务领取节点标识,计算参数、更新时间。
具体的,每个任务发布节点在任务池中创建新的流计算任务,并指明任务id,流计算间隔,计算类型,状态,任务领取节点id,计算参数,更新时间等信息。
示例性的,如图2所示,每个计算任务领取节点以T1为周期,进行下列操作:
获取任务池中的任务领取节点id为本节点id的任务信息,对该任务信息加锁,更新任务的更新时间为当前时间,释放锁,即解锁任务信息。
计算当前的负载冗余时间T2,若T2>门限W,在等待时间T3后,访问任务池,并从任务池中读取前N个状态为空闲状态且计算节点为空的任务,或者从任务池中读取前N个更新时间大于T4的任务,并对任务加锁,通过预估负载在读取的N个任务中选择M个加入本节点对应的计算处理列表中,然后对计算处理列表中的任务按流计算间隔升序排列后进行计算处理,并更新任务信息,即更新任务状态为处理状态,更新任务领取节点id为当前节点标识,更新时间为当前时间;释放锁。
若T2<门限W,对本节点对应的计算处理列表中按流计算间隔升序排列后进行计算处理,并更新任务信息,即更新状态为处理状态,更新任务领取节点id为当前节点标识,更新时间为当前时间;释放锁。
若T2<0,则从计算处理列表中选取任务集合S,根据S中的任务id找到任务池中的对应任务,并加锁,更新任务池中的该集合任务信息,更新状态为空闲状态,更新时间为当前时间,更新计算节点为空,释放锁。
本发明实施例提供的方法,计算节点的任务领取和释放机制;在计算节点任务领取过程中,为了提高任务领取的有效性,减少任务领取和更新过程中加锁导致的延时,设计的任务领取处理过程,如等待时间T3的设置,及采用了过滤窗口和领取窗口分段设置,及过滤窗口加锁大小限制N等。
本发明实施例提供的方法相比调度方式实现负载均衡,无需保证充分的冗余空间,减少了冗余空间的浪费,回避了流计算负载预估的复杂性和不确定性问题,而采用可以先领取后释放的方式,允许对流计算任务负载进行实际后评估。
本发明实施例提供的方法,实现复杂度不会随着计算处理节点数目的增长而增长,也不依赖于中心调度节点,避免单点故障的问题。
本发明实施例提供的方法,还可以简单实现容错机制。相比单独故障监测节点实现故障容错,本发明实施例提供的方法,不需要设立单独的故障监测节点,故障计算节点会自动释放出计算任务,被其他非故障计算节点领取,自动实现容错。本发明实施例提供的方法,还设计了任务领取的算法,减少了任务领取的冲突概率,可以提高大量服务节点时的任务领取的效率。
本发明实施例还提供一种任务领取节点,所述任务领取节点包括:处理器,用于:
对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;
计算当前任务领取节点当前的负载冗余时间;
若所述当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;
若所述当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。
进一步地,所述负载冗余时间为:在当前任务领取节点的计算处理列表中任务的最大流计算间隔内,所述计算处理列表各个任务归一化负载冗余的最小值;所述第一预设时间为所述负载冗余时间的减函数;所述N为所述负载冗余时间任务数的乐观估计,所述M为小于N的整数。
进一步地,所述处理器,具体用于访问所述任务池,从所述任务池中读取N个满足第一预设条件的任务,对所述任务池中N个满足第一预设条件的任务进行加锁,所述满足第一预设条件的任务包括:状态为空闲状态且计算节点为空的任务,或者更新时间大于第二预设时间的任务。
进一步地,所述处理器,具体用于:
通过预估负载在读取的N个任务中选择M个个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
计算处理后将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间;
将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
进一步地,所述处理器,具体用于:
从所述当前任务领取节点对应的计算处理列表中选取任务集合S,其中,所述任务集合S根据当前任务领取节点每次加入任务后的负载冗余时间的减少量进行选取;
在所述任务池中查找与所述任务集合S中任务标识对应的任务,对所述任务池中与所述任务集合S中任务标识对应的任务加锁;
修改所述任务池中与所述任务集合S中的任务标识对应任务的任务状态为空闲状态,修改所述任务池中与所述任务集合S中的任务标识对应任务的更新时间为当前时间,修改所述任务池中与所述任务集合S中的任务标识对应任务的计算节点为空;
对所述任务池中与所述任务集合S中任务标识对应的任务解锁。
进一步地,所述处理器,还用于:
若所述当前的负载冗余时间小于所述第一门限值,将当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
将计算处理后当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将计算处理后当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将计算处理后当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间,将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
具体的,本发明实施例提供的任务领取节点的理解可以参考上述方法实施例的说明,本发明实施例在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时实现如上任一项所述的面向物联网流计算的负载均衡和容错方法。
以上计算机可读存储介质实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本发明计算机可读存储介质实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解。
本发明实施例还提供一种任务领取节点20,如图3所示,所述任务领取节点20包括:处理器201和存储器202;其中,
所述存储器202,用于存储能够在所述处理器上运行的计算机程序;
所述处理器201,用于运行所述计算机程序时执行如上任一项所述面向物联网流计算的负载均衡和容错方法的步骤。
以上任务领取节点实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本发明任务领取节点实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种面向物联网流计算的负载均衡和容错方法,其特征在于,包括:
对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;
计算当前任务领取节点当前的负载冗余时间;
所述负载冗余时间为:在所述当前任务领取节点的计算处理列表中任务的最大流计算间隔内,所述计算处理列表各个任务归一化负载冗余的最小值;
第i个任务的归一化负载冗余Gi=(任务i的流计算间隔-完成任务i的计算时间)/(任务i流计算间隔);
若所述当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;
若所述当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。
2.根据权利要求1所述的方法,其特征在于,所述第一预设时间为所述负载冗余时间的减函数;
所述N为所述负载冗余时间任务数的乐观估计,所述M为小于N的整数。
3.根据权利要求1或2所述的方法,其特征在于,所述对所述任务池中N个满足第一预设条件的任务进行加锁,包括:
访问所述任务池,从所述任务池中读取N个满足第一预设条件的任务,对所述任务池中N个满足第一预设条件的任务进行加锁,所述满足第一预设条件的任务包括:状态为空闲状态且计算节点为空的任务,或者更新时间大于第二预设时间的任务。
4.根据权利要求1或2所述的方法,其特征在于,所述将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新,包括:
通过预估负载在读取的N个任务中选择M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
计算处理后将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间;
将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
5.根据权利要求1或2所述的方法,其特征在于,所述选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息,包括:
从所述当前任务领取节点对应的计算处理列表中选取任务集合S,其中,所述任务集合S根据当前任务领取节点每次加入任务后的负载冗余时间的减少量进行选取;
在所述任务池中查找与所述任务集合S中任务标识对应的任务,对所述任务池中与所述任务集合S中任务标识对应的任务加锁;
修改所述任务池中与所述任务集合S中的任务标识对应任务的任务状态为空闲状态,修改所述任务池中与所述任务集合S中的任务标识对应任务的更新时间为当前时间,修改所述任务池中与所述任务集合S中的任务标识对应任务的计算节点为空;
对所述任务池中与所述任务集合S中任务标识对应的任务解锁。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述当前的负载冗余时间小于所述第一门限值,将当前任务领取节点对应的计算处理列表中任务按流计算间隔升序排列后进行计算处理;
将计算处理后当前任务领取节点对应的计算处理列表中任务的任务状态更新为处理状态,将计算处理后当前任务领取节点对应的计算处理列表中任务领取节点标识更新为当前节点标识,将计算处理后当前任务领取节点对应的计算处理列表中任务的更新时间修改为当前时间,将更新任务信息后当前任务领取节点对应的计算处理列表中任务进行解锁。
7.一种任务领取节点,其特征在于,所述任务领取节点包括:处理器,用于:
对任务池中当前任务领取节点标识对应的任务信息进行加锁,将所述任务信息中的更新时间修改为当前时间,对修改后的任务信息进行解锁;
计算当前任务领取节点当前的负载冗余时间;
所述负载冗余时间为:在所述当前任务领取节点的计算处理列表中任务的最大流计算间隔内,所述计算处理列表各个任务归一化负载冗余的最小值;
第i个任务的归一化负载冗余Gi=(任务i的流计算间隔-完成任务i的计算时间)/(任务i流计算间隔);
若所述当前的负载冗余时间大于第一门限值,在等待第一预设时间后,对所述任务池中N个满足第一预设条件的任务进行加锁,将N个任务中的M个任务加入当前任务领取节点对应的计算处理列表中,将加入M个任务后的当前任务领取节点对应的计算处理列表中任务的任务信息进行更新;
若所述当前的负载冗余时间小于0,选取当前任务领取节点对应的计算处理列表中的任务集合S,对所述任务池中与所述任务集合S中任务标识对应的任务加锁,修改所述任务池中与所述任务集合S中的任务标识对应任务的任务信息。
8.根据权利要求7所述的任务领取节点,其特征在于,
所述第一预设时间为所述负载冗余时间的减函数;
所述N为所述负载冗余时间任务数的乐观估计,所述M为小于N的整数。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至6任一项所述的面向物联网流计算的负载均衡和容错方法。
10.一种任务领取节点,其特征在于,所述任务领取节点包括:处理器和存储器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于运行所述计算机程序时执行权利要求1至6任一项所述面向物联网流计算的负载均衡和容错方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711456506.3A CN109981710B (zh) | 2017-12-28 | 2017-12-28 | 一种面向物联网流计算的负载均衡和容错方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711456506.3A CN109981710B (zh) | 2017-12-28 | 2017-12-28 | 一种面向物联网流计算的负载均衡和容错方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109981710A CN109981710A (zh) | 2019-07-05 |
CN109981710B true CN109981710B (zh) | 2021-10-29 |
Family
ID=67074349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711456506.3A Active CN109981710B (zh) | 2017-12-28 | 2017-12-28 | 一种面向物联网流计算的负载均衡和容错方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109981710B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104917825A (zh) * | 2015-05-20 | 2015-09-16 | 中国科学院信息工程研究所 | 一种面向实时流计算平台的负载均衡方法 |
EP3005659A1 (en) * | 2013-05-28 | 2016-04-13 | Convida Wireless, LLC | Load balancing in the internet of things |
CN105610992A (zh) * | 2016-03-31 | 2016-05-25 | 浪潮通信信息系统有限公司 | 一种分布式流计算系统任务分配负载均衡方法 |
CN107391719A (zh) * | 2017-07-31 | 2017-11-24 | 南京邮电大学 | 一种云环境中分布式流数据处理方法及系统 |
-
2017
- 2017-12-28 CN CN201711456506.3A patent/CN109981710B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3005659A1 (en) * | 2013-05-28 | 2016-04-13 | Convida Wireless, LLC | Load balancing in the internet of things |
CN104917825A (zh) * | 2015-05-20 | 2015-09-16 | 中国科学院信息工程研究所 | 一种面向实时流计算平台的负载均衡方法 |
CN105610992A (zh) * | 2016-03-31 | 2016-05-25 | 浪潮通信信息系统有限公司 | 一种分布式流计算系统任务分配负载均衡方法 |
CN107391719A (zh) * | 2017-07-31 | 2017-11-24 | 南京邮电大学 | 一种云环境中分布式流数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109981710A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mahmud et al. | Latency-aware application module management for fog computing environments | |
Nawab et al. | Dpaxos: Managing data closer to users for low-latency and mobile applications | |
CN108733509B (zh) | 用于在集群系统中备份和恢复数据的方法和系统 | |
US10140142B2 (en) | Grouping and placement of virtual machines based on similarity and correlation of functional relations | |
US10129176B2 (en) | Automated failure recovery of subsystems in a management system | |
US8930757B2 (en) | Operations management apparatus, operations management method and program | |
CN105871603B (zh) | 一种基于内存数据网格的实时流式数据处理失效恢复系统及方法 | |
Kamburugamuve et al. | Survey of distributed stream processing for large stream sources | |
US9164806B2 (en) | Processing pattern framework for dispatching and executing tasks in a distributed computing grid | |
US8533731B2 (en) | Apparatus and method for distrubuting complex events based on correlations therebetween | |
US20070206611A1 (en) | Effective high availability cluster management and effective state propagation for failure recovery in high availability clusters | |
WO2012166106A1 (en) | Estimating a performance parameter of a job having map and reduce tasks after a failure | |
CN111147596B (zh) | Prometheus集群部署方法、装置、设备及介质 | |
CN111737021A (zh) | 并行任务的处理方法、装置、电子设备及存储介质 | |
CN109981710B (zh) | 一种面向物联网流计算的负载均衡和容错方法 | |
Ali et al. | Probabilistic normed load monitoring in large scale distributed systems using mobile agents | |
WO2009079191A2 (en) | Decoupling static program data and execution data | |
Deng et al. | Cloud computing based high-performance platform in enabling scalable services in power system | |
CN116319280A (zh) | 一种基于kubernetes分布式锁选举主备节点的方法 | |
Eng et al. | An Estimation-Based Dynamic Load Balancing Algorithm for Efficient Load Distribution and Balancing in Heterogeneous Grid Computing Environment | |
Stahl et al. | Dynamic fault-tolerance and mobility provisioning for services on mobile cloud platforms | |
Beaumont et al. | Analysis of dynamic scheduling strategies for matrix multiplication on heterogeneous platforms | |
CN113190344B (zh) | 一种面向软件定义卫星的神经网络动态重构部署的方法以及装置 | |
CN115480893B (zh) | 异构化节点间的应用迁移方法、系统及集群 | |
US20230289169A1 (en) | Cross-organization continuous update of edge-side event detection models in warehouse environments via federated learning |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |