应用于物联网业务平台的任务调度系统和方法与流程

文档序号:12755981阅读:323来源:国知局
应用于物联网业务平台的任务调度系统和方法与流程
本发明涉及应用软件开发与集成技术领域,特别涉及一种应用于物联网业务平台的任务调度系统和方法。

背景技术:
物联网融合了无线传感、智能感知、识别、泛在网络与云计算等技术,被认为是信息产业领域的又一具有广阔前景的发展方向。物联网业务平台将原本相互孤立的物联网业务结合起来,提供全面的业务支持和服务,使得各种应用能够综合的利用资源与共享信息,极大的推动了物联网应用与发展。然而传统的任务处理机制往往针对任务的某一特征参数进行设计和任务处理,无法适应海量、异构的物联网任务对实时性与关键性的要求,因此如何设计一种适用于物联网业务平台的、高效合理的任务调度处理机制已经成为提升物联网业务平台处理能力的关键。

技术实现要素:
本发明目的在于提供一种应用于物联网业务平台的任务调度系统和方法,以求在综合考虑任务的截止期与价值的基础上动态的计算出任务的优先级值,合理的调度任务的执行,提升物联网业务平台的任务处理能力。本发明解决其技术问题所采用的技术方案是:本发明提出了一种适应物联网业务平台的任务调度系统,该任务调度系统是由任务接收与分配模块、第一级缓冲队列池、第二级缓冲队列池以及任务监听与调度模块协作组成。在任务监听与调度模块中,本发明提出了综合考虑任务截止期与任务价值两种特征参数的任务优先级算法IVDA(IntegratedValueDeadlineAlgorithm),解决了传统调度算法无法兼顾任务实时性与关键性的问题。方法流程:(1)任务接收与分配模块:负责根据任务价值与截止期,将任务分配到不同的第一缓冲队列中。具体规则为:按价值将任务分配到第一级缓冲队列池BufferQueueFirst中的不同队列中,相同价值的任务被分配到相同的队列中,同时将相同价值的任务根据截止期时间依次入队,截止期早的任务先入队,截止期晚的后入队。按照上述规则完成任务入队后,同一个队列中的任务,具有相同的价值等级,队列中任务的排列按照截止期早晚排序。(2)第一级缓冲队列池:将不同的物联网任务归类划分为m个价值等级,对应的建立m个一级缓冲队列BufferQueueFirst<v>(1<=v<=m),用户发送的任务请求依据任务的价值首先被存放在第一级接收队列里。我们将不同价值的任务放入不同的一级缓冲队列里,解决大量请求带来任务拥塞问题,将任务请求的压力分担到多个任务队列,降低系统处理出现瓶颈的可能性,提高平台的效率和可靠性。(3)第二级缓冲队列池:BufferQueueSecond<v>代表某个第二级缓冲队列,BufferQueueFirst<v>代表某个第一级缓冲队列,建立BufferQueueSecond<v>与BufferQueueFirst<v>一一映射关系。每个一级队列与其映射的二级队列为一组,共有m组队列,同组队列中存放的是具有相同价值等级的任务,任务监听与调度模块在将某第一级队列中的任务取出后,利用基于任务价值与截止期的优先级算法计算出优先级后,若任务的优先级值为非最大优先级时,会依据任务价值将该任务临时存储至其对应的第二级队列中,存放在第二级缓冲队列里的任务将参与下一次的优先级计算与比较。(4)任务监听与调度模块:负责实时的监听第一级、第二级缓冲队列中的任务,按照任务调度策略从队列中提取任务,调用优先级算法计算任务的优先级值,根据优先级的大小决定任务的执行与等待。任务监听与调度模块中的任务调度策略描述如下:步骤1:从缓冲队列中提取任务,对二级缓冲队列进行轮询:I.如果某二级缓冲队列里有任务,说明在上一轮轮询中,该队列的任务的优先级不是最高,取出队首任务,参与本轮优先级计算。II.如果某二级缓冲队列为空,说明在上一轮轮询中,该队列的任务的优先级最高,任务被执行。判断二级队列为空后,查询其映射关系对应的一级缓冲队列,判断其是否为空,若不为空,则取出该一级队列的队首任务。步骤2:确定任务参数取值,经过上述轮询后,从存有不同价值任务的m组队列中取出m个任务,比较这m个任务的截止期属性,这里我们依据其时间的毫秒值作为比较和计算对象,划分其截止期等级D={1,2,3,……m},按照任务价值确定其价值等级V={1,2,3,……m}。步骤3:调用综合考虑任务截止期与任务价值两种特征参数的任务优先级算法IVDA算法,将参数带入如下算法公式,计算得到相应的优先级值P(V,D)。任务的优先级P按照下式计算:当V+D≤min(m,n)+1时If(V+D)%2=0P(V,D)=(V+D-1)*(V+D-2)/2+DElseP(V,D)=(V+D-1)*(V+D-2)/2+V当V+D>min(m,n)+1时If(i+j)%2=0P(V,D)=(m*n+1)-{[(m-V+1)+(n-D+1)-1]*[(m-V+1)+(n-D+1)-2]/2+(n-D+1)}ElseP(V,D)=(m*n+1)-{[(m-V+1)+(n-D+1)-1]*[(m-V+1)+(n-D+1)-2]/2+(m-V+1)}其中V代表任务价值等级,D代任务截止期等级,m为任务价值区间数,n为截止期等级区间数。算法的调度原则是:任务的截止期越早并且价值越大,则任务的优先级越高,对应于公式中的P值越小,任务的优先级越高。步骤4:比较P(V,D)之间的值,值越小优先级越大,取优先级最大的任务task(V,D),将该任务交给执行模块去执行相应的操作,其余的任务放入的其相应的第二级缓冲队列中,以供下次轮询计算使用。有益效果:1、本发明将任务请求的压力分担到多个任务队列,降低系统处理出现瓶颈的可能性,缓解了大量请求带来任务拥塞问题,提高平台的处理效率和可靠性。2、本发明避免因为为每一个任务分配优先级值,而造成的优先级值无限膨胀以及计算量庞大等问题,有效降低物联网业务平台的系统开销。3.本发明提出综合考虑任务截止期与任务价值两种特征参数的任务优先级算法IVDA(IntegratedValueDeadlineAlgorithm),解决了传统调度算法无法兼顾任务实时性与关键性的问题,保证了任务的高效合理调度。附图说明图1是任务调度处理结构图。图2是两级缓冲队列映射关系图。图3是任务价值区间m=5时对应的优先级矩阵图。图4是任务调度策略流程图。图5是第二级缓冲队列为空时任务调度图。图6是第二级缓冲队列不为空时任务调度图。具体实施方式以下结合说明书附图对本发明创造作进一步的详细说明。1.实现任务处理机制的组成模块本发明提出了一种适应物联网业务平台的任务处理系统。如附图1所示,任务调度处理系统由任务接收与分配模块、第一级缓冲队列池、第二级缓冲队列池以及任务监听与调度模块协作组成。(1)任务接收与分配模块:负责根据任务价值与截止期,将任务分配到不同的第一缓冲队列中。具体规则:按价值将任务分配到第一级缓冲队列池BufferQueueFirst中的不同队列中,相同价值的任务被分配到相同的队列中。同时将相同价值的任务根据截止期时间依次入队,截止期早的任务先入队,截止期晚的后入队。按照上述规则完成任务入队后,同一个队列中的任务,具有相同的价值等级,队列中任务的排列按照截止期早晚排序。根据IVDA(IntegratedValueDeadlineAlgorithm)算法,任务价值相同时,截止期越早任务的优先级越高,因而同一队列中,排在队首的任务相对的其他任务具有最高的优先级,且从队首到队尾任务的优先级依次下降,也就是说同一个队列中的任务实际上已经按照任务的优先级降序排序。根据队列“先进先出”的特征,截止期早的任务先出队列,参与优先级计算与比较。综上我们将所有任务的优先级比较问题,通过任务接收与分配模块中的任务分配策略简化为只需要比较每个队列的第一个任务之间的优先级,每个队列队首任务之间优先级比较得出的最大优先级任务,必定同时是所有任务中的优先级最高的任务。每次轮询,只需要针对有限个任务,利用IVDA算法在优先级矩阵中得到其对应的位置与优先级值,便可以得到全局的最高优先级任务。(2)第一级缓冲队列池:将不同的物联网应用归类划分为m个价值等级,对应的建立m个一级缓冲队列BufferQueueFirst<v>(1<=v<=m),v代表该队列所存储任务的价值等级,用户发送的任务请求依据任务的价值首先被存放在第一级接收队列里。我们将不同价值的任务放入不同的一级缓冲队列里,解决大量请求带来任务拥塞问题,将任务请求的压力分担到多个任务队列,降低系统处理出现瓶颈的可能性,提高平台的效率和可靠性。(3)第二级缓冲队列池:如图2所示,BufferQueueSecond<v>代表某个第二级缓冲队列,BufferQueueFirst<v>代表某个第一级缓冲队列,建立BufferQueueSecond<v>与BufferQueueFirst<v>一一映射关系。每个一级队列与其映射的二级队列为一组,共有m组队列,同组队列中存放的是具有相同价值等级的任务,任务监听与调度模块在将某第一级队列中的任务取出后,利用基于任务价值与截止期的优先级算法IVDA计算出优先级,若任务的优先级值为非最大优先级时,会根据任务价值将该任务临时存储至其映射的第二级队列中,存放在第二级缓冲队列里的任务将参与下一次的优先级计算与比较。(4)任务监听与调度模块:负责实时的监听第一级、第二级缓冲队列中的任务,按照任务调度策略从队列中提取任务,调用优先级算法计算任务的优先级值,根据优先级的大小决定任务的执行与等待。2.优先级算法描述对于物联网业务平台,海量的、异构的物联网业务的涌入对平台的任务处理能力提出了挑战。大量的来自不同应用的任务请求有着不同的任务价值、不同的实时性要求,单一的依靠某一参数很难满足合理高效调度的要求。任务的截止期与任务价值是衡量任务实时性与关键性的两项重要指标,然而现有的截止期最早最优先EDF(EarliestDeadlineFirst)算法,在保证任务实时性的时,却忽视了任务的关键性对任务调度的影响。价值最高最优先HVF(HighestValueFirst)算法对任务加以区分,保证了高价值任务的优先执行,但低价值任务会因等待高价值任务的优先执行而错过截止期,最终无法执行。对此本发明提出了综合考虑任务截止期与任务价值两种特征参数的任务优先级算法IVDA(IntegratedValueDeadlineAlgorithm),解决了传统调度算法无法兼顾任务实时性与关键性的问题。算法的调度原则是:任务的截止期越早并且价值越大,则任务的优先级越高。首先,根据物联网业务平台的对任务的划分,确定任务价值等级与任务截止期等级的取值范围区间,即:任务价值m个连续区间(V1,V2),(V2,V3)…,(Vi,Vi+1),…(Vm,Vm+1)(满足V1<V2<…<Vm<Vm+1)和任务截止期n个连续区间(D1,D2),(D2,D3)…,(Dj,Dj+1),…(Dn,Dn+1)(满足D1<D2<…<Dn<Dn+1)。其中,Vi=i,i={1,2,3,……m},m为价值等级的区间个数。Dj=j,j={1,2,3,……n},n为任务截止期等级的区间个数。在每次计算优先级值时,经过对m组队列的轮询,取m个不同价值的任务,因而必对应的有m个不同的截止期时间,即每次计算优先级值时有m=n。每次轮询获取m个任务后,比较任务的截止期属性,经计算划分这个m个任务在本轮优先级计算中的相对的截止期等级D={1,2,3,……m}。每个任务具有一个优先级P,任务的优先级P与任务价值V、任务的截止期时间等级D之间的关系按照下式公式计算:当i+j≤min(m,n)+1时If(i+j)%2=0P(i,j)=(i+j-1)*(i+j-2)/2+j(1)ElseP(i,j)=(i+j-1)*(i+j-2)/2+i(2)当i+j>min(m,n)+1时If(i+j)%2=0P(i,j)=(m*n+1)-{[(m-i+1)+(n-j+1)-1]*[(m-i+1)+(n-j+1)-2]/2+(n-j+1)}(3)ElseP(i,j)=(m*n+1)-{[(m-i+1)+(n-j+1)-1]*[(m-i+1)+(n-j+1)-2]/2+(m-i+1)}(4)其中i表示V落在任务价值等级递增方向的第i个区间,j表示D落在任务截止期等级递增方向的第j个区间。P值越小,任务的优先级越高。将上述调度算法称为IVDA(IntegratedValueDeadlineAlgorithm)算法。这里假设m=5,即将不同的物联网应用归类划分为5个价值等级,依据IVDA算法公式,当m=5时,得到图3所示优先级矩阵。任务接收与分配模块中的任务分配原则,使得每次轮询得到m个任务中的最高优先级任务即是所有任务中的最高优先级任务,是以局部最优解代替全局最优解。所以这里优先级P实际上每一次轮询中,m个任务之间的相对优先级。任务的优先级值只在本轮内有效,未被执行的任务在参与下一次轮询中,将被重新计算优先级值。在下一次轮询中,新得到m个任务,在根据截止期时间比较,得到本轮截止期等级后,经过IVDA算法计算,在m×m优先级矩阵中得到新的优先级值。每一次轮询从m个任务中选取最高优先级任务,m个任务只占用m×m优先级矩阵中的m个位置,即只占用m个优先级值。避免因为为每一个任务分配优先级值,而造成的优先级值无限膨胀以及计算量庞大等问题。3.任务调度策略实施步骤任务监听与调度模块作为任务调度处理机制中的核心模块负责执行任务调度策略以及调用IVDA(IntegratedValueDeadlineAlgorithm)优先级算法以完成物联网业务平台中的任务调度。如图4是任务调度策略流程图。本发明任务监听与调度模块中的任务调度策略具体实施步骤如下:步骤1:从缓冲队列中提取任务对缓冲队列进行轮询:I.如果某二级缓冲队列里有任务,说明在上一轮轮询中,该任务的优先级不是最高,取出此队首任务,参与本轮优先级计算。II.如果某二级缓冲队列为空,说明在上一轮轮询中,该队列中的任务的优先级最高,任务被执行。判断二级队列为空后,查询其映射关系对应的一级缓冲队列,判断其是否为空,若不为空,则取出队首任务。每次轮询后,任务监听与调度模块按照上述规则从第一级缓冲队列或第二级缓冲队列中提取共m个任务。这m个任务具有不同的价值等级和截止期,根据任务接收与分配模块中的分配原则,每次轮询得到的m个队首任务,分别是各个队列中最高优先级任务,其中必定存在当前全局任务中优先级最高的任务。如图5为任务监听与调度模块初始执行的情况,此时第二级缓冲队列均为空,因而从第一级队列中取出队首任务:task1(V=1,d=8:10:01)、task2(V=2,d=8:10:13)、task3(V=3,d=8:10:06),其中V代表任务价值等级,d代表任务的截止期时间。在图6中,此时第二级缓冲队列BufferQueueSecond<2>以及BufferQueueSecond<3>中存放有上一轮调度中未被执行的任务task2(V=2,d=8:10:13)、task3(V=3,d=8:10:06),根据调度规则取出task2、task3。对于为空的第二级缓冲队列BufferQueueSecond<1>,根据映射关系从其对应的第一级缓冲队列BufferQueueFirst<1>中取出队首任务:task4(V=1,d=8:10:55)。步骤2:确定任务参数取值经过上述轮询后,从存有不同价值任务的m组队列中取出m个任务,这里我们并不以截止期时间作为参数带入优先级公式,而是比较这m个任务的截止期属性,经过如下计算过程确定任务的截止期等级:1)根据m个任务不同截止期时间,确定最早的截止期时间和最迟的截止期时间2)计算时间区间3)di(i=1,...m)代表第i个任务截止期时间,如果满足其中k=1,...,m.那么di对应任务的截止期等级D=k。按照任务价值确定其价值等级V={1,2,3,……m}。步骤3:计算任务优先级利用IVDA算法公式(1)~(4),将m个任务的截止期等级D与价值等级V分别带入优先级公式,计算得到每个任务相应的相对优先级值P(V,D)。如图5所示,根据任务价值等级区间m=3,IVDA算法公式生成对应的优先级矩阵如下:如图5所示,在任务task1(V=1,d=8:10:01)、task2(V=2,d=8:10:13)、task3(V=3,d=8:10:06)中,d代表截止期时间,根据dtask1<dtask3<dtask2,经步骤2中计算得到本轮对应的相对的截止期等级Dtask1=1,Dtask2=3,Dtask=2,以及Vtask1=1,Vtask2=2,Vtask3=3。带入IVDA公式求任务的相对优先级值:对于task1,满足V+D≤min(m,n)+1且(V+D)%2=0,带入公式(1)P(V,D)=(V+D-1)*(V+D-2)/2+D,得Ptask1=1。对于task2与task3,满足V+D>min(m,n)+1且(V+D)%2≠0,带入公式(4):P(V,D)=(m*n+1)-{[(m-V+1)+(n-D+1)-1]*[(m-V+1)+(n-D+1)-2]/2+(m-V+1)}得Ptask2=7,Ptask3=8。如图6所示的任务执行中,任务监控与调度模块依据第一级缓冲队列与第二级缓冲队列是否为空,重新提取m=3个任务,得到task2(V=2,d=8:10:13)、task3(V=3,d=8:10:06)、task4(V=1,d=8:10:55)。其中task2(V=2,d=8:10:13)、task3(V=3,d=8:10:06)为上一轮调度中未被执行的任务,因而被暂时存放至对应的第二级缓冲队列中。由dtask3<dtask2<dtask4计算得到本轮对应的相对截止期等级Dtask2=2,Dtask3=1,Dtask4=3;任务的价值等级为:Vtask2=2,Vtask3=3,Vtask4=1对于task2,task3,task4,满足V+D<=min(m,n)+1且(V+D)%2=0,带入公式(1):P(V,D)=(V+D-1)*(V+D-2)/2+D,得Ptask2=5,Ptask3=4,Ptask4=6。步骤4:决策任务执行与等待比较每次轮询中m个任务P(V,D)之间的值,值越小优先级越大,取优先级最大的任务task,将该任务交给任务处理模块去执行,其余的任务放入的其相应的第二级缓冲队列中,以供下次轮询计算使用。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1