一种基于云平台的调度方法及系统与流程

文档序号:12008396阅读:133来源:国知局
一种基于云平台的调度方法及系统与流程
本发明涉及领云平台上的任务调度技术域,尤其涉及一种基于云平台的调度方法及系统。

背景技术:
云平台的调度相对来说还处于初始发展时期,在这个领域里比较成熟的系统并不多,Amazon的弹性云计算服务(EC2:ElasticComputeCloud)在功能上也是根据要生成的应用实例的数量动态地分配或释放虚拟机,但EC2是处于基础结构级的服务,应用开发者还需要自行对虚拟机进行管理。调度器本身也没有针对行业应用,或数据的优化。Google的MapReduce系统以及Hadoop开源系统也提供了任务调度功能,但它们只是针对MapReduce应用的运行,而且运行环境需要和特定的专用文件系统进行绑定,应用所使用的数据也需要预先进行分区存放,从这个角度来说并不具有动态获取和释放服务器的功能,资源的利用效率也跟数据的存放很有关系。另外传统的集群调度程序,如Condor,PBS等也能对上千台服务器进行调度,但这些系统经常囊括了很多附属功能,从而造成系统庞大笨重,每派发一个任务需要较长时间(几秒甚至更多),任务吞吐量较低(不超过30TPS),这对于需要快速实时的用户响应情况不太合适,在处理大规模的任务请求时开销也比较大。

技术实现要素:
本发明的目的在于提出一种高效且使能耗降低的基于云平台的调度方法及系统。为达此目的,本发明采用以下技术方案:一种基于云平台的调度方法,包括:用户应用程序发送任务请求至管理器,管理器把任务请求中的任务转换成预设的格式,并将任务请求提交给高速调度器;高速调度器根据任务请求的大小计算出资源请求,并把资源请求发送给资源获取/释放器;资源获取/释放器根据资源请求的大小来获取或释放资源,若资源请求超过当前高速调度器的负载,则资源获取/释放器获取资源,并将获取的资源作为运行器分配给高速调度器;若资源请求小于当前高速调度器的负载,则资源获取/释放器释放运行器为空闲的云资源;运行器在启动时由外网服务器获得外网地址和端口,然后向高速调度器注册;高速调度器根据调度机制将所述任务请求分配给所述运行器,运行器执行并完成任务,并通过高速调度器将完成的任务提交给管理器,管理器再将其提交给用户应用程序。采用分级式的高速调度器,把资源获取和任务派发分离开,传统的资源管理器,由于把资源管理、获取和任务派发集成在一起,这样影响了任务派发的效率,也使得改进已有资源管理器上比较困难,本方法把资源的获取这一模块分离开,交给动态资源获取/释放器来负责,一旦资源获取之后,将获取的资源作为任务运行器,这样能保证任务请求在极短的时间内被分派运行。其中,调度机制为流水线调度机制:高速调度器采用轻型高效的调度机制,任务的调度采用的是基于“推”和“拉”的混合模式,高速调度器在有任务需要执行时,向所有空闲运行器发送通知,接到通知的运行器到高速调度器接取任务,执行并返回结果给高速调度器。高速调度器和运行器本身都采用自底向上的实现方法,从最简单最快捷的功能开始实现,并把高速调度器和运行器之间的交互降低到最低,在正常情况下,分派一个任务只需要交换3条信息:1、通知运行器有任务要执行;2、运行器取走任务;3、运行器返回结果。在一定情况下,还可以将多个任务打包在一起,送给运行器,或者是在运行器送结果时顺便再发送一个任务,也即Piggyback优化策略,这样每个任务平均所需消息还可以降低。其中,调度机制包含基于任务相关性的调度算法,所述任务请求与之前的任务请求具有相关性,该任务请求被分配到执行所述之前的任务请求的运行器。云平台上运行的任务通常具有相关性,也就是说有些任务的输出,会被其他任务用作输入,这对于数据密集的行业任务尤其明显,比如在医疗系统中的数据挖掘业务,数据量非常大,后续任务所需要的数据往往是前面已完成任务的输出,基于任务相关性的调度算法能够根据任务请求的相关性,把该任务请求调度到存有它所需要的数据的运行器上运行,这样可以尽可能地减少数据移动,缩短任务的执行时间,对用户来说不仅可以享受到快速的服务,还能因为数据流量和运行时间的减少而减少使用费。其中,高速调度器设置有一个全局缓存,每个所述运行器设置有一个局部缓存,所述全局缓存和局部缓存组成多级缓存。本发明采用多级数据缓存技术,在每个运行器维护一个局部缓存,记录本机运算产生的结果及路径,同时高速调度器本身维护一个全局缓存,在调度任务时根据任务所需的数据,匹配运行器,每个运行器再定期刷新全局缓存,采用全局缓存是为了维持高速调度器的高速任务吞吐量,但相对来说对内存的容量要求也比较高,可以采用不同的缓存记录替换算法,如FIFO(先进先出)、LUR(最近少用)、LFU(最不常用)等。调度机制包含以下几种调度算法:a、选择第一个可用的运行器:这种算法并不考虑任务之间的数据相关性,当新任务到达时,直接选取一个可用的运行器,并把任务分配到该运行器,在这种情况下,我们需要把任务所需的数据都传输到运行器上;b、选择缓存命中最大的运行器:把任务分配到存有任务所需数据最多的运行器上,如果该运行器忙的话,就一直等待它运算完为止,这种算法能把数据传输减小到最小,但可能会减低资源利用效率,因为运行器上所存的数据分布不一定是均匀的;c、最大运算效率:这种算法尽量最大化资源利用效率,哪怕是要多花些时间在传输上面,基本上它也是考虑下一个可用运行器,但会优先选择存有较多任务所需数据的运行器,这样不需要等待繁忙的运行器;d、混合模式:结合b和c两种调度算法,设定一个资源利用效率的阈值,如果在阈值之上,就采用调度算法b,否则采用调度算法c。其中,高速调度器之前还设置有任务均衡器,用户应用程序发送任务请求至任务均衡器,任务均衡器根据多个高速调度器的状态,均衡的分配任务请求到高速调度器,高速调度器再把其所分配到的任务请求分配到其所对应的运行器。一种基于云平台的调度系统,包括高速调度器、资源获取/释放器、运行器,该系统的工作流程为:用户应用程序发送任务请求至管理器,管理器把任务请求中的任务转换成预设的格式,并将任务请求提交给高速调度器;高速调度器根据任务请求的大小计算出资源请求,并把资源请求发送给资源获取/释放器;资源获取/释放器根据资源请求的大小来获取或释放资源,若资源请求超过当前高速调度器的负载,则资源获取/释放器获取资源,并将获取的资源作为运行器分配给高速调度器;若资源请求小于当前高速调度器的负载,则资源获取/释放器释放运行器为空闲的云资源;运行器在启动时由外网服务器获得外网地址和端口,然后向高速调度器注册;高速调度器根据调度机制将所述任务请求分配给所述运行器,运行器执行并完成任务,并通过高速调度器将完成的任务提交给管理器,管理器再将其提交给用户应用程序。其中,高速调度器的调度机制为流水线调度机制:高速调度器采用轻型高效的调度机制,任务的调度采用的是基于“推”和“拉”的混合模式,高速调度器在有任务需要执行时,向所有空闲运行器发送通知,接到通知的运行器到高速调度器接取任务,执行并返回结果给高速调度器。其中,高速调度器的调度机制包含基于任务相关性的调度算法,所述任务请求与之前的任务请求具有相关性,该任务请求被分配到执行所述之前的任务请求的运行器。调度机制还包含以下几种调度算法:a、选择第一个可用的运行器:这种算法并不考虑任务之间的数据相关性,当新任务到达时,直接选取一个可用的运行器,并把任务分配到该运行器,在这种情况下,我们需要把任务所需的数据都传输到运行器上;b、选择缓存命中最大的运行器:把任务分配到存有任务所需数据最多的运行器上,如果该运行器忙的话,就一直等待它运算完为止,这种算法能把数据传输减小到最小,但可能会减低资源利用效率,因为运行器上所存的数据分布不一定是均匀的;c、最大运算效率:这种算法尽量最大化资源利用效率,哪怕是要多花些时间在传输上面,基本上它也是考虑下一个可用运行器,但会优先选择存有较多任务所需数据的运行器,这样不需要等待繁忙的运行器;d、混合模式:结合b和c两种调度算法,设定一个资源利用效率的阈值,如果在阈值之上,就采用调度算法b,否则采用调度算法c。其中,高速调度器设置有一个全局缓存,每个所述运行器设置有一个局部缓存,所述全局缓存和局部缓存组成多级缓存。其中,系统还包括任务均衡器,任务均衡器设置在高速调度器之前,用户应用程序发送任务请求至任务均衡器,任务均衡器根据多个高速调度器的状态,均衡的分配任务请求到高速调度器,高速调度器再把其所分配到的任务请求分配到其所对应的运行器。本发明的有益效果为:一种基于云平台的调度方法,包括:用户应用程序发送任务请求至管理器,管理器把任务请求中的任务转换成预设的格式,并将任务请求提交给高速调度器;高速调度器根据任务请求的大小计算出资源请求,并把资源请求发送给资源获取/释放器;资源获取/释放器根据资源请求的大小来获取或释放资源,若资源请求超过当前高速调度器的负载,则资源获取/释放器获取资源,并将获取的资源作为运行器分配给高速调度器;若资源请求小于当前高速调度器的负载,则资源获取/释放器释放运行器为空闲的云资源;运行器在启动时由外网服务器获得外网地址和端口,然后向高速调度器注册;高速调度器根据调度机制将所述任务请求分配给所述运行器,运行器执行并完成任务,并通过高速调度器将完成的任务提交给管理器,管理器再将其提交给用户应用程序。该方法适用于在云平台上,尤其是云计算平台上高效的大规模任务的调度,资源获取/释放器能够动态地分配和释放虚拟机资源供调度器使用,高速调度器采用轻型高效的调度机制,可以达到高任务吞吐量和支持多达数百万的运行器。附图说明图1是本发明方法流程图图2是本发明方法示意图图3是本发明系统结构图具体实施方式下面将结合图1-图3并通过具体实施方式来进一步说明本发明的技术方案。一种基于云平台的调度方法,包括:用户应用程序发送任务请求至管理器,管理器把任务请求中的任务转换成预设的格式,并将任务请求提交给高速调度器;高速调度器根据任务请求的大小计算出资源请求,并把资源请求发送给资源获取/释放器;资源获取/释放器根据资源请求的大小来获取或释放资源,若资源请求超过当前高速调度器的负载,则资源获取/释放器获取资源,并将获取的资源作为运行器分配给高速调度器;若资源请求小于当前高速调度器的负载,则资源获取/释放器释放运行器为空闲的云资源;运行器在启动时由外网服务器获得外网地址和端口,然后向高速调度器注册;高速调度器根据调度机制将所述任务请求分配给所述运行器,运行器执行并完成任务,并通过高速调度器将完成的任务提交给管理器,管理器再将其提交给用户应用程序。采用分级式的高速调度器,把资源获取和任务派发分离开,传统的资源管理器,由于把资源管理、获取和任务派发集成在一起,这样影响了任务派发的效率,也使得改进已有资源管理器上比较困难,本方法把资源的获取这一模块分离开,交给动态资源获取/释放器来负责,一旦资源获取之后,将获取的资源作为任务运行器,这样能保证任务请求在极短的时间内被分派运行。高速调度器能支持大规模数量的运行器,和数以千万计的任务的执行:由于高速调度器采用轻型的注册和任务调度机制,一台高速调度器能支持数万台的运行器的注册,并将任务分配至这些运行器同时执行。调度器本身的任务队列可以支持数以千万计的任务的提交和执行。在本实施例中,调度机制为流水线调度机制:高速调度器采用轻型高效的调度机制,任务的调度采用的是基于“推”和“拉”的混合模式,高速调度器在有任务需要执行时,向所有空闲运行器发送通知,接到通知的运行器到高速调度器接取任务,执行并返回结果给高速调度器。高速调度器和运行器本身都采用自底向上的实现方法,从最简单最快捷的功能开始实现,并把高速调度器和运行器之间的交互降低到最低,在正常情况下,分派一个任务只需要交换3条信息:1、通知运行器有任务要执行;2、运行器取走任务;3、运行器返回结果。在一定情况下,还可以将多个任务打包在一起,送给运行器,或者是在运行器送结果时顺便再发送一个任务,也即Piggyback优化策略,这样每个任务平均所需消息还可以降低。在本实施例中,调度机制包含基于任务相关性的调度算法,所述任务请求与之前的任务请求具有相关性,该任务请求被分配到执行所述之前的任务请求的运行器。云平台上运行的任务通常具有相关性,也就是说有些任务的输出,会被其他任务用作输入,这对于数据密集的行业任务尤其明显,比如在医疗系统中的数据挖掘业务,数据量非常大,后续任务所需要的数据往往是前面已完成任务的输出,基于任务相关性的调度算法能够根据任务请求的相关性,把该任务请求调度到存有它所需要的数据的运行器上运行,这样可以尽可能地减少数据移动,缩短任务的执行时间,对用户来说不仅可以享受到快速的服务,还能因为数据流量和运行时间的减少而减少使用费。在本实施例中,高速调度器设置有一个全局缓存,每个所述运行器设置有一个局部缓存,所述全局缓存和局部缓存组成多级缓存。本发明采用多级数据缓存技术,在每个运行器维护一个局部缓存,记录本机运算产生的结果及路径,同时高速调度器本身维护一个全局缓存,在调度任务时根据任务所需的数据,匹配运行器,每个运行器再定期刷新全局缓存,采用全局缓存是为了维持高速调度器的高速任务吞吐量,但相对来说对内存的容量要求也比较高,可以采用不同的缓存记录替换算法,如FIFO(先进先出)、LUR(最近少用)、LFU(最不常用)等。调度机制还包含以下几种调度算法:a、选择第一个可用的运行器:这种算法并不考虑任务之间的数据相关性,当新任务到达时,直接选取一个可用的运行器,并把任务分配到该运行器,在这种情况下,我们需要把任务所需的数据都传输到运行器上;b、选择缓存命中最大的运行器:把任务分配到存有任务所需数据最多的运行器上,如果该运行器忙的话,就一直等待它运算完为止,这种算法能把数据传输减小到最小,但可能会减低资源利用效率,因为运行器上所存的数据分布不一定是均匀的;c、最大运算效率:这种算法尽量最大化资源利用效率,哪怕是要多花些时间在传输上面,基本上它也是考虑下一个可用运行器,但会优先选择存有较多任务所需数据的运行器,这样不需要等待繁忙的运行器;d、混合模式:结合b和c两种调度算法,设定一个资源利用效率的阈值,如果在阈值之上,就采用调度算法b,否则采用调度算法c。在本实施例中,高速调度器之前还设置有任务均衡器,用户应用程序发送任务请求至任务均衡器,任务均衡器根据多个高速调度器的状态,均衡的分配任务请求到高速调度器,高速调度器再把其所分配到的任务请求分配到其所对应的运行器,这样整体上系统可以具备极高的扩展性。一种基于云平台的调度系统,包括高速调度器、资源获取/释放器、运行器,该系统的工作流程为:用户应用程序发送任务请求至管理器,管理器把任务请求中的任务转换成预设的格式,并将任务请求提交给高速调度器;高速调度器根据任务请求的大小计算出资源请求,并把资源请求发送给资源获取/释放器;资源获取/释放器根据资源请求的大小来获取或释放资源,若资源请求超过当前高速调度器的负载,则资源获取/释放器获取资源,并将获取的资源作为运行器分配给高速调度器;若资源请求小于当前高速调度器的负载,则资源获取/释放器释放运行器为空闲的云资源;运行器在启动时由外网服务器获得外网地址和端口,然后向高速调度器注册;高速调度器根据调度机制将所述任务请求分配给所述运行器,运行器执行并完成任务,并通过高速调度器将完成的任务提交给管理器,管理器再将其提交给用户应用程序。在本实施例中,高速调度器的调度机制为流水线调度机制:高速调度器采用轻型高效的调度机制,任务的调度采用的是基于“推”和“拉”的混合模式,高速调度器在有任务需要执行时,向所有空闲运行器发送通知,接到通知的运行器到高速调度器接取任务,执行并返回结果给高速调度器。在本实施例中,高速调度器的调度机制包含基于任务相关性的调度算法,所述任务请求与之前的任务请求具有相关性,该任务请求被分配到执行所述之前的任务请求的运行器。调度机制还包含以下几种调度算法:a、选择第一个可用的运行器:这种算法并不考虑任务之间的数据相关性,当新任务到达时,直接选取一个可用的运行器,并把任务分配到该运行器,在这种情况下,我们需要把任务所需的数据都传输到运行器上;b、选择缓存命中最大的运行器:把任务分配到存有任务所需数据最多的运行器上,如果该运行器忙的话,就一直等待它运算完为止,这种算法能把数据传输减小到最小,但可能会减低资源利用效率,因为运行器上所存的数据分布不一定是均匀的;c、最大运算效率:这种算法尽量最大化资源利用效率,哪怕是要多花些时间在传输上面,基本上它也是考虑下一个可用运行器,但会优先选择存有较多任务所需数据的运行器,这样不需要等待繁忙的运行器;d、混合模式:结合b和c两种调度算法,设定一个资源利用效率的阈值,如果在阈值之上,就采用调度算法b,否则采用调度算法c。在本实施例中,高速调度器设置有一个全局缓存,每个所述运行器设置有一个局部缓存,所述全局缓存和局部缓存组成多级缓存。在本实施例中,系统还包括任务均衡器,任务均衡器设置在高速调度器之前,用户应用程序发送任务请求至任务均衡器,任务均衡器根据多个高速调度器的状态,均衡的分配任务请求到高速调度器,高速调度器再把其所分配到的任务请求分配到其所对应的运行器。调度对于面向行业的云平台是至关重要的。主要原因在于云平台的终端用户,如电信行业的用户,可以多达几千万甚至上亿,而每个用户每天可以访问多项业务(如音乐、游戏等),这些业务访问反映在云平台内部就是上千万级的任务请求。因此,本发明首先需要研究的就是要具有高度可扩展性的调度系统,能够处理如此大数量的任务请求,并且还要能应付突发的大规模需求,比如在春节前后,点歌业务可能会有比平时多出好几倍的业务需求。调度系统需要实现弹性调度,也就是能够根据任务请求量动态地获取或释放资源。如果任务数量巨大,当前已获取的服务器资源不足以处理这些请求,调度器就需要向资源管理器申请更多的资源,来满足这些额外的任务请求。同样,如果业务量降低(比如到了晚上,在线用户数减少),有些已获取的服务器处于空闲状态,调度器就需要释放一些相应的资源,避免资源浪费。针对电信行业的服务还具有高度的实时性,用户请求需要在短时间内得到响应。因此云平台中的调度系统还需要把任务请求高速分配到后台的成千上万台服务器上,实现很大的任务吞吐量。本发明的另一个重点是实现高效节能的调度策略。云平台中的资源利用效率非常重要,这一方面是因为能源开支,资源的浪费就是能源的浪费,另一方面是因为云平台的收费通常是基于所使用的资源来收费的,如果资源使用不均衡,存在浪费,这也会同样增加用户的支出。因此,除了实现上述的弹性调度之外,调度器还需要最大化所获取的资源利用效率,能够尽量均衡地把任务分配到每个资源上,避免资源存在低利用率的情况。以上所述仅为本发明的具体实施方式,这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1