本发明涉及云计算技术领域,特别涉及一种动态容错弹性调度方法。
背景技术
云计算已经成为主流的分布式计算模式,用于按需配置计算资源以满足动态应用程序的工作负载。在虚拟资源上运行应用程序,特别是虚拟机(vm),是一种高效的解决方案,可以提高经济效益和可扩展性。在实践中,许多应用都面临着数据不断增长和计算复杂度高的问题,例如天文学、金融交易和物理学等。云计算可以有效地支持这些科学应用对高计算性能的需求。有报告称,对于由10000个特别可靠的服务器组成的云(平均无故障时间为30年),每天会出现一次故障。此外,大约5%的磁盘驱动器损坏,服务器每年至少崩溃两次,故障率为4%。更糟糕的是,为了降低生产成本,数据中心通常会使用价格较低的商品硬件,导致云的故障概率增加。因此,在云中提供较强的容错能力是至关重要的,特别是针对实时任务处理的应用。
技术实现要素:
本发明的目的是提供一种动态容错弹性调度方法,实现云计算的可靠性和资源优化。
为达到上述目的,本发明一方面实施例提出了一种动态容错弹性调度方法,包括:估计任务运行时长;根据所述任务的弹性时间情况,确定所述任务的调度类型;根据所述任务的调度类型,在虚拟机列表中选择执行所述任务的虚拟机并进行调度;其中,所述任务包括主任务与备份任务。
进一步地,所述虚拟机列表包括至少一种类型的虚拟机。
进一步地,在虚拟机列表中选择执行任务的虚拟机并进行调度之后,还包括:通过分析任务的时间约束以及考察虚拟机列表确定执行备份任务的虚拟机类型。
进一步地,所述调度类型包括容错调度和/或拓展调度;其中,所述容错调度包括:非容错、弱容错和强容错;所述拓展调度包括备份和重新提交。
进一步地,所述的动态容错弹性调度方法还包括:当所述主任务的调度类型为所述弱容错或所述强容错中任一类型时,将资源分配给主任务,并更新所述虚拟机列表中每个虚拟机的下一个可用时间。
进一步地,所述的动态容错弹性调度方法还包括:当所述主任务的调度类型为拓展调度时,在所述虚拟机列表中确定能够执行任务的虚拟机,当虚拟机列表中的虚拟机无法满足任务的调度约束时,创建一个新的虚拟机完成备份任务的调度,之后更新虚拟机列表中每个虚拟机的下一个可用时间。
进一步地,拒绝无法调度的备份任务。
在本发明实施例中,提出了一种动态容错弹性调度方法,扩展了容错模型,并将重叠机制应用到容错模型中,有效地实现容错与节能的均衡。云计算的可靠性和资源优化,通过综合使用备份和重新提交策略来处理任务执行的不确定性问题,动态容错弹性调度方法可以为云提供较高性能。
附图说明
图1为实现本发明实施例的系统的框架图;
图2为本发明实施例中非容错的结构示意图;
图3为本发明实施例中弱容错的结构示意图;
图4为本发明实施例中强容错的结构示意图;
图5为本发明实施例中决策树的结构示意图;
图6为本发明实施例中重新提交模式非有效容错的结构示意图;
图7为本发明实施例三中重新提交时的结构示意图;
图8为本发明实施例四中重新提交时的结构示意图;
图9为本发明实施例中
图10为本发明实施例中重叠时间的结构示意图;
图11为本发明实施例中bb重叠约束示意图;以及
图12为本发明实施例动态容错弹性调度方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在附图中示出了根据本发明实施例的层结构示意图。这些图并非是按比例绘制的,其中为了清楚的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状以及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
以下将参照附图更详细地描述本发明。在各个附图中,相同的元件采用类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。
在下文中描述了本发明的许多特定的细节,例如器件的结构、材料、尺寸、处理工艺和技术,以便更清楚地理解本发明。但正如本领域的技术人员能够理解的那样,可以不按照这些特定的细节来实现本发明。除非在下文中特别指出,半导体器件中的各个部分可以由本领域的技术人员公知的材料构成。
下面对容错调度、相关技术与技术构思进行介绍。
需要说明的是,容错调度是将任务映射到计算实例,并确保即使在硬件和软件故障的情况下,任务也可以在截止期之前完成。到目前为止,两种基本的调度方法被用于分布式系统中以实现容错、备份和重新提交。备份的思想是将任务的多个备份分配给不同的计算实例。然而,与传统的分布式系统不同的是,云具有一些独特的特性,这增加了调度的灵活性以及复杂性。其主要面临着三个方面的挑战:(1)主机崩溃会导致多个计算实例故障;(2)任务的实际运行时间波动较大;(3)重新提交可能会导致系统可靠性的降低,而备份则面临资源浪费。因此,本申请提出了一种动态容错弹性调度方法,可以策略性地和动态地在传统的重新提交和备份策略之间进行选择,以达到在低资源成本的基础上实现容错。
相关技术中,将两个基本技术广泛应用于重新提交和复制的问题。其一为重新提交,重新提交的主要方法是在发生故障时将任务重置为初始状态,并在其他正常服务器上重新执行,例如如果计算单位即服务器失败,那么分配给它的任务将重新安排给其他正常服务器。然而,重新提交可能无法有效保证任务的截止期,对于具有严格截止期限制的任务该方法可能不可用。应当理解的是,保证任务的截止期即为满足任务的时间约束,保证在任务的截止期完成调度任务即为满足任务的调度约束。
另一方面,备份技术可以同时满足容错和截止期限制。对于备份技术而言,需要多个副本来实现容错。多数备份设计都是基于主-备模型(简称pb)。在pb模型中,任务有两个副本,主副本和备份副本,这两个副本分派在两个不同的计算实例上。但是,过度消耗资源是备份技术的瓶颈。为了减少备份的额外资源消耗,重叠机制被提出来。通过采用重叠技术,各个副本能够在相同计算实例的相同时隙中重叠。当前主要有两种重叠方案:主-主备份重叠(简称pb重叠)和备-备备份重叠(简称bb重叠)。但是,bb重叠不适合动态调度,因为它本质上是静态的。另外一些实例研究,并没有考虑到任务运行时的波动性,这可能导致模型和生产环境之间的偏差。还有一些研究的目标是通过资源优化来提高系统的性能,而没有考虑不确定性对容错的影响。
基于此,发明人提出了一种动态容错弹性调度方法。
为了实现本发明实施例提出的动态容错弹性调度方法,发明人做了如下准备。
首先,发明人提供了实现本发明实施例的系统总体架构,如图1所示,数据中心由一组主机组成,每个主机可以提供多个计算实例(即虚拟机)。用户发送的任务流在任务队列中排队并等待被分发到数据中心的计算实例之中。监视器提供系统性能状态。任务调度器根据性能监视器的反馈安排任务。在系统中,我们对任务调度器、性能监控器和数据中心的通信采用星型拓扑结构。因此,不失一般性地,通信时延可以忽略。
其中,假设在数据中心有一个物理主机集合,
进一步地,一般来讲,运行时间不仅与任务的大小有关,而且与系统性能有关。在云中,软件和硬件的性能都随工作负载动态变化,所以很难估计单个任务的执行时间。因此,在之前的研究中主要采用了任务运行时的静态估计,以简化问题复杂性。但是,这个估计值和实际时间之间的差异显著影响任务调度的质量。因此,发明人提出了一种有效地对于任务
要素1:静态处理能力
要素2:运行时间波动
要素3:运行时间估计域
发明人将任务运行时间估计值的下界和上界分别定义为
要素4:发明人提出
进一步地,对于计算机系统,故障的平均间隔为75分钟。然而,云中任务的平均执行时间不超过3分钟。因此,可以假定当主机失败时,运行在它上的任务将在另一个主机失败之前通过相应的备份(或重新提交)副本成功完成。此外,还假设故障机制在系统中可用,如故障信号和验收测试。如果主机失败,则可以检测到它。其中,需要假设所有主机之间的故障是独立的。
应当注意的是,故障模型还可通过将主机分成多个组来处理多个主机故障,为了简洁,在本发明实施例中不再赘述。
下面对资源分配和调度策略进行分析。
需要说明的是,容错的关键是保证任务和资源的映射,资源分配满足容错约束。因为一个主机的故障将导致其上所有虚拟机的故障,在采用复制方法时,一个任务的主版本和副备份应该分配给不同的主机进行容错。对于提交的方法,如果由于主机故障的初始任务被终止,重新提交一个应该安排到无故障的主机上。为了在时间约束下容纳更多的任务,需要分析调度策略、任务分配时的约束和重新复制应用。在不失一般性的前提下,假设总共设有n个活动vm。为了便于调度策略的分析,首先介绍以下三个定义:
定义1:最早开始时间
结合任务运行时间,最早完成时间上界和下界可以推到导如下:
定义2:最迟开始时间
然而,根据以前的分析,在调度之前获得任务实际运行时间是不现实的。因此,发明人定义最迟开始的时间的下界和上界,如下式所示:
定义3:弹性时间
由于任务运行时间的不确定性,发明人定义弹性时间
弹性时间通常可以用来测量任务的可靠性。因此,有如下三个与容错相关的调度案例。
案例1:非容错,如图2所示。
对于一个任务而言,将其调度到底k个虚拟机上,如果可以预估到其不能按期完成,则属于非容错。
具体地,从弹性时间的上界和下界公式可以看出,
案例2:弱容错,如图3所示。
对于一个任务而言,将其调度到第k个虚拟机上,如果其可以按期完成,也可能无法按期完成,则属于弱容错。
具体地,
案例3:强容错,如图4所示。
对于一个任务而言,将其调度到第k个虚拟机上,如果其始终能按期完成,则属于强容错。
具体地,当
由于虚拟机的异构处理能力和任务的异构性,调度策略应该是多种多样的。
当任务
下面详细描述弱容错和强容错的有效调度策略。
实施例一:当任务
在这种情况下,根据弱容错的定义,任务
对于云,可能有多个虚拟机属于
进一步地,可采用决策树方法确定阈值
对于一个任务,如果在任务完成之前进行调度和完成,那么该任务的效用被定义为任务的实际运行时间,即
当
实施例二:当任务
在这种情况下,任务
当
如果
基于此,为了确保容错,对容错调度策略进行拓展分析。
实施例三:采用重新提交时的任务调度分析。
由于任务的运行时间波动,重新提交模式会有多种形式,将这些形式抽象为两类。
类别1:
如图7所示,其中,箭头表示就绪时间
因此,如果
类别2:
如图8所示,如果
在一个云中,可能有多个vm对,他们对于任务
实施例三:采用备份时的任务调度分析。
在强容错的情况下,备份方式可以保证绝对容错。因此,进一步的问题是通过优化调度以实现最小的资源消耗。为了便于分析,进行如下定义:
定义4:重叠时间
如图10所示,
当任务的主备份任务分布在不用的计算实例上时,副备份任务可以彼此重叠。在云计算中,bb重叠的基本前提是
当
当
由于
假设
当
基于此,本发明实施例提出了一种动态容错弹性调度方法。
图12为本发明实施例的动态容错弹性调度方法的流程图。如图12所示,本发明实施例的动态容错弹性调度方法,包括以下步骤:
s101:估计任务运行时长。
s102:根据任务的弹性时间情况,确定任务的容错调度和/或拓展调度类型。
s103:根据所述任务的调度类型,在虚拟机列表中选择执行任务的虚拟机并进行调度。
其中,所述任务包括主任务与备份任务。
进一步地,虚拟机列表包括至少一种类型的虚拟机。
应当理解的是,在虚拟机列表中选择执行主任务的虚拟机并进行调度之后,当主任务的调度类型为备份时,备份副本通过虚拟机列表确定备份副本的虚拟机类型,以使备份任务尽可能晚的执行。
其中,在本发明实施例中,为了保留足够的松弛时间进行备份,主任务采用主任务调度采用越早越好的调度原理(asap原理),为了节省系统资源,备份任务采用备份任务采用越迟越好的调度原则(alap原则)。
根据本发明的一个实施例,当主任务完成时,取消备份任务。
根据本发明的一个实施例,在确定主任务的调度策略之后,还包括:当调度策略为弱容错或强容错中任一类型时,调度器将资源分配给主任务,并更新虚拟机列表中每个虚拟机的下一个可用时间。
根据本发明的一个实施例,当调度策略为弱容错时,则不需要将资源分配到备份任务。
在调度策略为复制和重新提交时,在备份的虚拟机列表中确定能够执行任务的虚拟机,当虚拟机列表中的当前虚拟机均无法满足任务的调度约束时,创建一个新的虚拟机完成备份任务的调度,然后再更新虚拟机列表中每个虚拟机的下一个可用时间。
应当理解的是,调度器最终拒绝无法调度的备份任务。
综上所述,在本发明实施例中,提出了一种动态容错弹性调度方法,扩展了容错模型,并将重叠机制应用到容错模型中,有效地实现均衡。云之间的可靠性和资源优化之间,通过综合使用复制和重新提交策略来处理任务执行的不确定性问题,动态容错弹性调度方法可以提高云计算的可靠性。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
在以上的描述中,对于各层的构图、刻蚀等技术细节并没有做出详细的说明。但是本领域技术人员应当理解,可以通过现有技术中的各种手段,来形成所需形状的层、区域等。另外,为了形成同一结构,本领域技术人员还可以设计出与以上描述的方法并不完全相同的方法。
以上参照本发明的实施例对本发明予以了说明。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。本发明的范围由所附权利要求及其等价物限定。不脱离本发明的范围,本领域技术人员可以做出多种替换和修改,这些替换和修改都应落在本发明的范围之内。
尽管已经详细描述了本发明的实施方式,但是应该理解的是,在不偏离本发明的精神和范围的情况下,可以对本发明的实施方式做出各种改变、替换和变更。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。