一种云操作系统的任务调度方法及装置与流程

文档序号:11917972阅读:279来源:国知局
一种云操作系统的任务调度方法及装置与流程

本发明涉及云计算应用技术领域,更具体地说,涉及一种云操作系统的任务调度方法及装置。



背景技术:

云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。目前云计算的存储及处理的数据量已远远超出了人们的想象,对应的云操作系统架构面临越来越大的挑战。

随着云操作系统中云数据中心管理平台功能的不断新增,系统处理的任务也相应的增加,如果采用传统的单节点部署模式,所有的任务都将在一个节点上执行,势必会造成任务的拥塞,执行效率低等问题,因此分布式操作系统应运而生。现有技术中利用分布式系统实现任务的处理,通常是在接收到多个任务时,将这多个任务平均分配到不同的节点上,如果这多个任务不能同时处理,则由多个任务中随机选取出可以被处理的数量的任务进行处理,但是发明人发现,如果能够同时被处理的任务均对应同一操作类型,如均为对对应计算机进行关闭,则这种单一操作的任务过多的情况占据过多节点资源,就会导致其他的用户操作一直处于等待状态。

综上所述,现有技术中用于实现任务调度的方法存在由于单一操作类型对应任务过多而将其他操作类型的任务阻塞的问题。



技术实现要素:

本发明的目的是提供一种云操作系统的任务调度方法及装置,以解决现有技术中用于实现任务调度的方法存在的由于单一操作类型对应任务过多而将其他操作类型的任务阻塞的问题。

为了实现上述目的,本发明提供如下技术方案:

一种云操作系统的任务处理方法,包括:

步骤1:接收待处理的多个第一任务;

步骤2:将所述多个第一任务中对应相同操作类型的任务划分至同一任务集;

步骤3:利用多个线程池对多个所述任务集中包含的第一任务进行处理,其中,所述线程池与所述任务集一一对应。

优选的,还包括:

接收待处理的多个第二任务,所述多个第二任务对应同一操作类型;

如果与所述第二任务对应的线程池中存在N个第一任务处理完毕,则由多个第二任务中选取出优先级最高的N个第二任务放入对应线程池中进行处理,其中,N同时小于所述第一任务的总数量及所述第二任务的总数量。

优选的,还包括:

将所述多个第一任务平均分配至对应分布式系统的每个节点上进行并行处理,并指示每个节点对分配到的所述第一任务执行所述步骤2和步骤3。

优选的,还包括:

预先设定N个分配基数,所述N个分配基数包括0至N-1,并将该N个分配基数平均分配给每个节点,其中N大于节点数量;

对应的,将所述多个第一任务平均分配至对应分布式系统的每个节点上进行并行处理,包括:

将每个所述第一任务的ID号除以N得到对应的余数,并将每个所述第一任务分配至具有与其余数相同的分配基数的节点进行处理。

优选的,还包括:

如果所述分布式系统中出现故障节点,则将所述故障节点的分配基数按照平均原则分配至该分布式系统中的其他节点,确定该故障节点当前正在处理的第一任务处理失败,并将所述故障节点未开始处理的第一任务作为新的任务等待下一次被分配。

优选的,还包括:

如果所述分布式系统中出现新增节点,则将该分布式系统中每个节点具有的分配基数按照平均原则分配至该新增节点。

一种云操作系统的任务处理装置,包括:

第一接收模块,用于接收待处理的多个第一任务;

划分模块,用于将所述多个第一任务中对应相同操作类型的任务划分至同一任务集;

处理模块,用于利用多个线程池对多个所述任务集中包含的第一任务进行处理,其中,所述线程池与所述任务集一一对应。

优选的,还包括:

第二接收模块,用于接收待处理的多个第二任务,所述多个第二任务对应同一操作类型;

选取模块,用于如果与所述第二任务对应的线程池中存在N个第一任务处理完毕,则由多个第二任务中选取出优先级最高的N个第二任务放入对应线程池中进行处理,其中,N同时小于所述第一任务的总数量及所述第二任务的总数量。

优选的,还包括:

分配模块,用于将所述多个第一任务平均分配至对应分布式系统的每个节点上进行并行处理,并指示每个节点对分配到的所述第一任务利用所述划分模块及处理模块实现对应的操作。

优选的,还包括:

预设模块,用于预先设定N个分配基数,所述N个分配基数包括0至N-1,并将该N个分配基数平均分配给每个节点,其中N大于节点数量;

所述分配模块包括:

分配单元,用于:将每个所述第一任务的ID号除以N得到对应的余数,并将每个所述第一任务分配至具有与其余数相同的分配基数的节点进行处理。

本发明提供了一种云操作系统的任务处理方法及装置,其中该方法包括:接收待处理的多个第一任务;将所述多个第一任务中对应相同操作类型的任务划分至同一任务集;利用多个线程池对多个所述任务集中包含的第一任务进行处理,其中,所述线程池与所述任务集一一对应。本申请公开的技术方案中,获取到多个第一任务时,将同一操作类型的第一任务划分至一个任务集,由此,得到多个与不同操作类型分别对应的任务集,进而利用多个线程池以一一对应的关系对其对应的任务集包含的全部第一任务进行处理,从而能够使得不同操作类型的任务能够同时得到处理,避免了现有技术中由于单一操作类型对应任务过多而降其他操作类型的任务阻塞的情况发生。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种云操作系统的任务处理方法的流程图;

图2为本发明实施例提供的一种云操作系统的任务处理装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其示出了本发明实施例提供的一种云操作系统的任务处理方法的流程图,可以包括:

S11:接收待处理的多个第一任务。

其中需要说明的是,第一任务中的“第一”和下文中的“第二”互相区分,用于表示不同批次的任务,无其他实质意义。

S12:将多个第一任务中对应相同操作类型的任务划分至同一任务集。

确定出多个第一任务中具有相同操作类型的任务,如操作类型可以包括开机、关机、创建虚拟机等,具体可以根据实际需要进行确定,将具有相同操作类型的任务划分至同一任务集,由此可以得到多个任务集,每个任务集中的任务均对应同一操作类型。

S13:利用多个线程池对多个任务集中包含的第一任务进行处理,其中,线程池与任务集一一对应。

设置多个线程池,每个线程池对应一种操作类型,也即对应一个任务集,由此,利用多个线程池同时对其对应的任务集进行处理,从而使得不同操作类型的任务能够同时得到处理。

本申请公开的技术方案中,获取到多个第一任务时,将同一操作类型的第一任务划分至一个任务集,由此,得到多个与不同操作类型分别对应的任务集,进而利用多个线程池以一一对应的关系对其对应的任务集包含的全部第一任务进行处理,从而能够使得不同操作类型的任务能够同时得到处理,避免了现有技术中由于单一操作类型对应任务过多而降其他操作类型的任务阻塞的情况发生。

另外需要说明的是,线程池的创建可以是与Spring结合的,在配置文件中配置线程池最大工作队列缓存工作数、异步工作线程池的大小、回调执行的线程池大小及任务持久化处理器等。对于不同的操作类型,可以通过配置线程池的创建策略实现,可以是ByClass也可以是ByMethod,如果配置成ByClass,标识该操作类型中的所有任务都加入该线程池中处理,如果配置成ByMethod,标识只有该操作的任务会加入相应的线程池中处理,具体来说,操作类型如对多个计算机关机,对应的操作如对任一指定的计算机关机,也即本申请中可以将同一操作类型的任务均放入同一线程池进行处理,进一步的还可以将同一操作的任务放入同一线程池(该线程池可以为操作类型对应线程池的子线程池)进行处理,具体可以根据实际需要进行设定,均在本发明的保护范围之内。

本发明实施例提供的一种云操作系统的任务处理方法,还可以包括:

接收待处理的多个第二任务,多个第二任务对应同一操作类型;

如果与第二任务对应的线程池中存在N个第一任务处理完毕,则由多个第二任务中选取出优先级最高的N个第二任务放入对应线程池中进行处理,其中,N同时小于第一任务的总数量及第二任务的总数量。

如果接收到多个第二任务,且该多个第二任务对应的操作类型对应线程池中正常处理第一任务,则判断是否存在N个第一任务处理完毕,如果是,则由第二任务中选取优先级最高的N个第二任务处理,否则,则等待直至存在处理完毕的第一任务,由此基于任务优先级确定出任务的执行顺序,能够保证优先级高的任务优先执行,提高了响应质量。另外需要说明的是,不同任务的优先级可以是请求对任务进行处理的一方预先根据实际需要进行设定的,在此不做具体限定。

本发明实施例提供的一种云操作系统的任务处理方法,还可以包括:

将所述多个第一任务平均分配至对应分布式系统的每个节点上进行并行处理,并指示每个节点对分配到的所述第一任务执行所述步骤S12和步骤S13。

其中,将第一任务平均分配至对应分布式系统的每个节点上进行并行处理,从而有效提高了任务的执行效率。另外,对于任务的分配具体可以基于预先设定的负载均衡策略实现,在此不做具体限定。

本发明实施例提供的一种云操作系统的任务处理方法,还可以包括:

预先设定N个分配基数,所述N个分配基数包括0至N-1,并将该N个分配基数平均分配给每个节点,其中N大于节点数量;

对应的,将所述多个第一任务平均分配至对应分布式系统的每个节点上进行并行处理,可以包括:

将每个所述第一任务的ID号除以N得到对应的余数,并将每个所述第一任务分配至具有与其余数相同的分配基数的节点进行处理。

其中,每个节点可以具有一个或者多个分配基数,具体来说,每个节点包含的分配基数的个数通常是基本相同的,如N为10时则是将0至9这几个分配基数平均分配给每个节点;从而将每个任务分配至具有与其余数具有相同分配基数的节点上,实现任务的平均分配,举例说明上述步骤:节点的数量为3个(分别表示为A、B、C),分配给每个节点的分配基数可以为:A=0、1、2;B=3、4、5;C=6、7、8、9。第一任务的数量为10个,ID号分别为1至10,以ID号为9进行说明,9除以10的余数为9,因此将其分配到具有分配基数9的节点C上,以此类推。

另外需要说明的是,对应可以设置有任务主体表,任务在该表中具有int自增类型的主键ID。

另外需要说明的是,将任务分配到节点上以后,该节点可以由数据库中获取需处理的数据,将该数据组装成可以执行的对象,进而将该对象分配到对应线程池中进行处理,也即实现任务的分配。

本发明实施例提供的一种云操作系统的任务处理方法,还可以包括:

如果所述分布式系统中出现故障节点,则将所述故障节点的分配基数按照平均原则分配至该分布式系统中的其他节点,确定该故障节点当前正在处理的第一任务处理失败,并将所述故障节点未开始处理的第一任务作为新的任务等待下一次被分配。

需要说明的是,将故障节点的分配基数按照平均原则分配至该分布式系统中的其他节点也即使得此次分配完成后除故障节点外每个节点包括的分配基数的个数基本相同,如节点的数量为3个(分别表示为A、B、C),分配给每个节点的分配基数可以为:A=0、1、2;B=3、4、5;C=6、7、8、9;如果故障节点为A,则将0和1分配给节点B,将2分配给节点C。通过这种分配方式保证了各节点所分配任务数量的平均性。另外,还可以记录每个任务执行的具体情况,以在任务执行成功或者执行失败时返回对应的信息,方便获知;还可以将任务取消、暂停或者定时执行等,均可以根据实际需要进行设定。其中将任务定时执行可以是与Spring的quartz结合,定时扫描数据库中定点执行的任务,将任务添加到任务池中,开始执行任务,从而实现定时执行的功能。

本发明实施例提供的一种云操作系统的任务处理方法,还可以包括:

如果所述分布式系统中出现新增节点,则将该分布式系统中每个节点具有的分配基数按照平均原则分配至该新增节点。

对于删除节点的情况可以按照上述将被删除的节点看做故障节点实现分配基数的分配;将该分布式系统中每个节点具有的分配基数按照平均原则分配至该新增节点也即分配后包括新增节点在内的每个节点包含的分配基数的个数基本相同,如节点的数量为3个(分别表示为A、B、C),分配给每个节点的分配基数可以为:A=0、1、2;B=3、4、5;C=6、7、8、9;新增了一个节点D,则将节点A的2、节点B的3及节点C的6均分配给节点D。通过这种分配方式保证了各节点所分配任务数量的平均性。

另外需要说明的是,本申请公开的上述技术方案还可以实时对任务进行备份,从而如果出现系统崩溃的情况,当系统重启时设置重新导入的机制,即扫描备份任务的数据库,查看未完成的任务并将未完成的任务再次进行分配并执行,保证了数据的一致性。还可以提供一个任务统一管理的交互界面,从而使得用户可以通过该交互节点获知每个任务的执行的具体情况,可以包括任务执行成功与否、任务执行开始时间和结束时间等详细信息。

本发明实施例还提供了一种云操作系统的任务处理装置,如图2所示,可以包括:

第一接收模块11,用于接收待处理的多个第一任务;

划分模块12,用于将多个第一任务中对应相同操作类型的任务划分至同一任务集;

处理模块13,用于利用多个线程池对多个任务集中包含的第一任务进行处理,其中,线程池与任务集一一对应。

本发明实施例提供的一种云操作系统的任务处理装置,还可以包括:

第二接收模块,用于接收待处理的多个第二任务,多个第二任务对应同一操作类型;

选取模块,用于如果与第二任务对应的线程池中存在N个第一任务处理完毕,则由多个第二任务中选取出优先级最高的N个第二任务放入对应线程池中进行处理,其中,N同时小于第一任务的总数量及第二任务的总数量。

本发明实施例提供的一种云操作系统的任务处理装置,还可以包括:

分配模块,用于将所述多个第一任务平均分配至对应分布式系统的每个节点上进行并行处理,并指示每个节点对分配到的所述第一任务利用所述划分模块及处理模块实现对应的操作。

本发明实施例提供的一种云操作系统的任务处理装置,还可以包括:

预设模块,用于预先设定N个分配基数,所述N个分配基数包括0至N-1,并将该N个分配基数平均分配给每个节点,其中N大于节点数量;

所述分配模块可以包括:

分配单元,用于:将每个所述第一任务的ID号除以N得到对应的余数,并将每个所述第一任务分配至具有与其余数相同的分配基数的节点进行处理。

本发明实施例提供的一种云操作系统的任务处理装置,还可以包括:

故障处理模块,用于:如果所述分布式系统中出现故障节点,则将所述故障节点的分配基数按照平均原则分配至该分布式系统中的其他节点,确定该故障节点当前正在处理的第一任务处理失败,并将所述故障节点未开始处理的第一任务作为新的任务等待下一次被分配。

本发明实施例提供的一种云操作系统的任务处理装置,还可以包括:

新增处理模块,用于:如果所述分布式系统中出现新增节点,则将该分布式系统中每个节点具有的分配基数按照平均原则分配至该新增节点。

本发明实施例提供的一种云操作系统的任务处理装置中相关部分的说明请参见本发明实施例提供的一种云操作系统的任务处理方法中对应部分的详细说明,在此不再赘述。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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