分布式工作流执行的制作方法

文档序号:6424259阅读:129来源:国知局
专利名称:分布式工作流执行的制作方法
技术领域
本发明涉及进程管理,尤其涉及分布式工作流执行。
背景技术
工作流系统表示进程管理技术的应用。工作流是定义进程或过程的操作方面的有组织的互相关任务集合。具体而言,工作流可定义任务如何结构化、负责实体以及任务的相对排序等。因此,工作流方便进程的自动化设计、控制和监视。一种公知工作流是企业工作流,该企业工作流使业务进程自动化,以使得文档、信息和/或任务被传递至各个人以便根据程序规则来行动。例如,个人可以按顺序执行某一指定工作,并且随后在完成时其他人的工作可以启动。实际上,工作的传递基于先前任务的完成来自动化和控制。作为示例,贷款评估或批准进程可被表示为工作流。还能够在计算机系统及相关联的功能、而不是单独的人类相关任务的上下文中采用工作流。作为示例,可采用被称为构建系统(build system)的专用工作流系统来方便程序开发或构建。构建系统使得能够如同构建一样脚本化并执行各种各样的程序开发任务,包括将源代码编译成二进制代码、测试和开发,等等。虽然很容易从命令提示中调用对单个文件的开发操作,但类似地对通常是具有复杂依赖性的大量文件发起这些操作的困难却呈指数地增加。构建系统被设计成通过使开发者能够描述并且随后数次发起对各自具有特定功能的分立代码单元的一系列调用的执行来帮助该情形。例如,构建系统可允许在对一个或多个组件源文件作出改变时快速重新编译程序。工作流和构建尤其在大小和复杂性方面持续增长。工作流执行时间取决于工作流的大小和复杂性。因此,工作流执行时间持续增加。

发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更详细描述的序言。简言之,本公开通常涉及优化工作流执行。工作流可被自动调度以跨多个自治计算实体来执行。具体而言,可以根据计算成本、通信成本以及其它因素,将工作流任务编组成集合以在多个自治计算实体上执行。在工作流显式地指定任务和项目依赖性的情况下, 可以利用依赖性来进行精细编组。此外,这些依赖性还可以用来将重新执行限于受与例如多个自治计算实体中的一个或多个等相关联的失败影响的工作流部分。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。


图1是工作流系统的框图。图2示出可以结合到工作流中的示例性转移图。图3是工作流系统的主-从配置的框图。图4是利用云系统/服务的工作流系统的框图。图5是资源推荐系统的框图。图6是工作流调度方法的流程图。图7是本地工作流执行方法的流程图。图8是工作流失败恢复方法的流程图。图9是资源推荐方法的流程图。图10是示出用于本公开各方面的合适操作环境的示意性框图。
具体实施例方式以下细节一般涉及跨多个自治计算实体(例如计算机、虚拟机...)的工作流执行。工作流的大小和复杂性在增长。因此,工作流执行时间持续增加。这会带来问题,至少因为例如添加功能或解决缺陷的工作流修改变得成本越来越高。通过跨多个自治计算实体并发地执行工作流,执行时间可以显著降低,从而减小修改花费等。可以考虑许多因素以自动地确定最优分布。例如,可以计入计算成本和通信成本。 更具体而言,可以在单个计算实体上编组任务与划分任务以跨多个计算实体执行之间达到平衡。此外,与具有隐式或隐藏和/或粗糙的依赖性的工作流不同,可以通过利用显式且精确指定的工作流依赖性来细粒化(编组和/或划分。还可以利用工作流依赖性以处理分布式系统的副产品,即失败。与要求工作流从开始重新执行不同,可以只重新调度工作流中包括取决于失败计算的任务的部分。此外,可以使用相同或不同工作流的先前运行的状态信息来进一步减小需要被执行以从失败中恢复或者以其它方式执行/重新执行工作流并返回一致状态的工作量。现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标号来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等效和替换的方案。首先参考图1,示出了工作流系统100。工作流系统100包括工作流引擎110,该工作流引擎110通常用于执行包括定义进程或过程的互相关任务和项目集合的工作流120。 任务描述要采取的动作(例如,复制、删除、调用、重写……),并且进一步定义其自身之间的依赖性、输入和输出。项目可以是任务输入和/或输出(例如,文件、文档、特性、文字、可执行...)。例如,任务可消耗一个或多个项目作为输入并任选地产生一个或多个项目作为输出。或者,任务可以在不接收一个或多个项目作为输入的情况下产生一个或多个项目作为输出。此外,工作流引擎110包括被配置成调度工作流120跨自治计算实体140执行(自治计算实体1-自治计算实体N,其中N是大于1的整数)(例如基于处理器的机器、计算机、 虚拟机...)(在此也被称为计算实体140)的调度组件130。在许多自治计算实体140可用的情况下,可以并发地进行执行。结果,工作流能够比使用单个自治计算实体140或一组串行执行的自治计算实体140的其它可能方式更快地执行。调度组件130包括编组组件132和分配组件134,以相对于多个自治计算实体140 最优且自动地调度工作流执行。编组组件132可以根据一个或多个因素来相对多个自治计算实体140的每一个来标识任务集合。这些因素尤其可以包括计算成本和通信成本等等, 其中计算成本和通信成本分别是指就时间和/或其它方面而言,在特定计算实体140上执行任务以及向自治计算实体140发送数据的成本。相应地,编组组件132可以尝试将计算成本和通信成本进行平衡,以减少工作流的总执行时间。换言之,可以在编组任务以在单个自治计算实体140上执行与划分任务以跨多个自治计算实体140执行之间达到平衡,以使吞吐量最大化。一旦由编组组件132标识或以其它方式确定了任务组或任务集合,分配组件134可以将任务和必要项目传递给特定自治计算实体140。计算和通信成本等可被显式地提供给编组组件132,或者可由编组组件132访问和/或确定。在一个实例中,例如,可以由工作流开发者在工作流内编码成本的至少一部分。除此之外或作为替代,可以通过可由编组组件132访问的方式和位置来存储实际或预测成本。此外,编组组件132、子组件或某个其它通信耦合的组件(未示出)可以例如基于先前交互和/或其它细节(例如处理器速度、存储器、网络连接速度、网络等待时间、负载...) 来确定或推断成本。工作流调度以及更具体的任务编组和/或划分可以得到细粒化。根据一个实施例,工作流引擎110可以相对于显式指定任务和项目两者之间的全部依赖性而不是利用隐式或隐藏依赖性或完全未指定依赖性的工作流而操作。此外,工作流引擎110可以将中间文件等存储在匿名位置(例如在工作流执行之前未知的位置),并且以这种方式施加这些依赖性的显式说明。常规系统不提供这种完全依赖性跟踪。通常,只表达任务依赖性,而完全不顾项目依赖性。结果,并发执行的机会即使有,也非常有限。然而,在此,可以利用依赖性来允许任务级上的编组和/或划分。此外,调度组件130无需限于简单地调度独立任务的并发执行。如果就执行时间等而言,从属任务被划分并类似地并发执行是成本有效的,则可以如此操作。例如,依赖性可以捕捉与关键资源或每次只由一个任务或进程使用的资源的任务交互。相应地,关键资源的可用性可以由调度组件130、尤其是编组组件132在确定如何编组或划分任务时作为因素考量,以确保并发执行工作流时产生的结果与串行执行工作流时相同。调度组件130的编组组件132和分配组件134可以附加地或替代地在确定如何分布工作流120以便执行时使用非时间或时间独立约束。一个时间独立约束可以与安全性有关。在此,各种安全要求可以影响工作流调度。例如,当开发者对构建进行签名时,这一签名可以要求在特定计算机上执行。类似地,安全策略可以要求在防火墙内执行特定任务或操作而可以允许其它在防火墙外操作。另一时间独立约束可以与执行的经济成本有关。在这种情况下,一个自治计算实体140上的执行可能在经济上比另一自治计算实体140更加昂贵。再一示例性约束可以与硬件要求有关。例如,一个或多个任务可以要求具体硬件来执行,诸如但不限于,特定处理器、处理器速度、盘、盘速度和/或存储器大小。此外,约束可以与需要执行一个或多个任务的特定系统或应用软件有关。当然,这些示例并不是穷举的, 因为还有许多其他可以计入的时间独立约束。此外,可以使用任何数量的基于时间和非时间的约束或其组合来影响调度。特定要求和/或能力可以是固定的,意味着工作流系统100无法添加或移除它们 (例如处理器、存储器、附连设备...)而其它可以被修改(例如软件)。对于可被修改的这些能力,可以将带有执行转移的指令的转移图结合到工作流。此外,可以将各种成本和/或权重与转移相关联,如同对工作流中其它任务所做的一样。因此,能力转移可以形成常规任务调度的部分,如本文所述。图2示出可以结合到工作流中的示例性转移图200。转移图200包括表示许多计算实体配置状态的多个节点以及标识与配置状态之间的转移相关联的成本的多个边。转移以及关联成本可以对应于例如安装、卸载、升级、和/或降级软件。示例性转移图200包括三个配置状态,即基本配置210、配置A 212、和配置B 214。 这些配置可以与不同软件或相同软件的不同版本等等相关联。出于本示例的目的,计算实体可以典型地始于基本配置210。此外注意,一旦将机器转移到配置B 214,则无法将其重新配置到基本配置210或者配置A 212,由此,该转移成本被设为无穷大。根据由转移图200捕捉的成本,工作流引擎110可以决定从先前以配置A212预设的计算实体开始并且以十二个单位的总成本将该计算实体转移到配置机器B 214,而不是以基本配置的计算实体为开始。然而,该决定可以取决于工作流的整体展望。例如,可能存在仍需要配置A 212的其它任务,其中以二十个单位的总成本将第一计算实体转移到配置 B 214并且在具有基本配置210的第二计算实体上安装配置A 212比首先调度需要配置A 的任务更加昂贵。根据一个实施例,上述转移状态可以作为项目和任务来捕捉,如同相对于工作流的其它部分所做的一样。然而,在此,转移任务包括副作用并且因此不是幂等的 (idempotent)。换言之,执行转移任务多次并不具有与执行任务一次相同的效果。转移任务的这一特性可以影响如何调度这些任务以便执行等等,如下所述。返回图1,调度组件130经由编组组件132和分配组件134之一或两者可以附加地控制如何向任务提供数据以进一步优化工作流执行。通过示例而非限制,数据可以通过客户机/服务器模型(例如中央协调)或对等模型的方式来访问。客户机/服务器和对等模型两者都具有折衷。数据访问的客户机/服务器模型易于使用,因为数据位于中央位置。然而,客户机/服务器模型比对等模型慢得多,并且应当小心,位于中央的数据不能由另一进程或其它实体修改。在也称为本地机模型的对等模型中,最初将必要数据复制或以其它方式发送到自治计算实体140。好处是可以快速访问数据,并且由于数据是本地的,因此无需关心由另一进程或实体的修改。然而,发送全部数据, 尤其是相当大的量,是昂贵的。例如,假设工作流任务只在输入文件的一部分(诸如头部) 上操作。在这种状况下,如果文件相当大(例如若干兆字节),则将整个文件复制到自治计算实体140可能比从中央位置访问该文件(即使考虑到与此相关联的成本)要昂贵得多。 然而,如果要处理整个输入文件,就总执行时间而言,将相当大的文件发送到自治计算实体 140可能更加廉价。此外,调度组件130可以例如通过分配组件134来调度冗余的任务执行以加速工作流执行等等。许多工作流任务是幂等的。换言之,执行任务多次具有与执行任务一次相同的效果。相应地,可以指定在两个或多个自治计算实体140上执行相同的任务或任务组,并且工作流引擎110可以选择由首先完成执行的自治计算实体140提供的结果。更具体地,假定一百台计算机可用,并且工作流引擎110确定只有六十台计算机需要执行工作流。因此, 四十台计算机可用于实际上零成本地重复计算,而且工作流引擎110可以通过调度冗余任务执行来利用一台计算机出于某种原因可能比另一计算机执行任务更快的事实。此外,调度组件130或其子组件可以在不同时间操作。更具体地,任务编组和/或分配可以在执行之前静态的进行和/或在运行时动态地进行。根据一个实施例,例如,调度可以基于运行时信息在执行之前的最后时刻发生。换言之,与预先确定在何处运行任务不同,这种确定可被延迟直到任务实际需要运行,此时尤其可以利用当前上下文信息等来调度任务。例如,如果有二十个计算实体可用并且可以确定特定计算实体非常快,则可以调度任务或任务组来在该特定计算实体上执行。调度组件130还包括失败恢复组件136。完成执行失败可以作为任意数量的硬件和/或软件问题(例如盘故障、软件崩溃/超时...)的结果而发生。典型地,只要工作流无法完成执行,整个工作流就需要重新执行。换言之,单个失败或错误无论大小或重要性都会导致常规工作流引擎中止执行并再次从起点开始。因此,失败可以向工作流的总执行时间中注入显著的延迟。此外,分布式系统中的失败机会尤其大。例如,在一千台计算机的系统中,大致百分之十或一百台计算机会因某种原因(例如崩溃、盘故障...)而失败。失败恢复组件136实现以最小工作从执行失败中恢复。这尤其可以通过使用编码在工作流中的显式依赖性信息来完成。在失败发生时,可以将特定任务或任务组的执行视为已失败,并且可以利用依赖性信息来标识受失败潜在影响并且可以被重新调度以与失败任务或任务组一起执行的从属任务。典型地,受失败影响的任务会是整个工作流的子集。相应地,可以只重新执行工作流的部分,由此限制由失败注入的延迟。根据一个实施例,可以将失败分类为过时或者换言之工作流至少一部分已改变的指示的形式。与常规系统不同,改变可以按照需要粗糙或精细地定义,并且无需是时间依赖的。此外,支持对改变的定制定义。因此,失败等可以被定义为改变。与上述失败恢复类似, 一旦检测到改变,则关注转向例如通过使用工作流依赖性将重新执行限制在受该改变影响的工作流子集来使传播该改变并返回一致状态所需的工作量最小化。工作流引擎110的执行和/或重新执行可以使用递增和细粒化方法来最小化成本。这至少是因为依赖性被精确跟踪并且输出是匿名的。换言之,工作量可以是显式且精确地编码依赖性而不是例如包括隐式或隐藏依赖性和/或粗粒依赖性,而且可以将执行输出存储到匿名位置以便至少有力地支持依赖性的显式说明。此外,作为该方法的一部分,可以利用跨相同和/或不同工作流的单个和/或多个执行运行的工作或状态来最小化需要重新执行的计算量。更具体地,可以将工作流或其部分(例如,任务与一组任务)与先前已被执行的工作流或其部分进行比较而无需考虑总上下文(例如较大工作流、开发者...)。如果工作流或部分相同,可以简单地利用执行结果而非再次启动执行。换言之,可以使用记忆来优化跨运行的工作流执行,其中任务和/或项目集合的结果被记录并且被简单地返回以供后续调用来在该任务和/或项目集合上执行而不是重新计算该结果。通过示例而非限制,考虑相同或不同软件产品的多个开发者在构建系统上下文中对特定文件(诸如“system, string”)进行编译。构建系统可以获知或以其它方式确定开发者在相同文件上执行相同动作。结果,编译输出可以跨开发者和产品共享。还可以使用各种技术来动态检测一个或多个任务和/或项目或其组是相同的使得输出可以共享。例如, 某些编码或散列(hashing)可以应用到输入并被比较。除此之外,调度组件130可以使用依赖性和先前状态信息来相对于改变或失败而进行推测性执行。通过示例而非限制,考虑如下状况,其中有两个部件“A”和“B”,并且部件 “B”取决于部件“A”。现在假设文件被改变或者相对于部件“A”发生失败。常规地,不得不重新构建部件“A”,然后重新构建部件“B”(例如编译任务重新执行)。然而,可以假设相对于部件“A”的改变或其它问题并不影响部件“B”,而且部件“B”可以用部件“A”的先前版本来构建,同时部件“A”正被重新构建(例如并发执行)。最后,可以进行检验,且如果确定相对于部件“B”没有改变,则可以利用部件“B”的推测性构建的结果。然而如果确定相对于部件“B”有改变,则不得不利用部件“A”的新版本来重新构建部件“B”。根据一个实施例,调度组件130的操作可以对工作流引擎110的用户隐藏。用户可以提供单个工作流以供本地和分布式执行,而不是要求不同工作流用于更改执行类型。此外,可以在无需用户介入的情况下自动进行调度。相应地,无论工作流被调度用于本地还是分布式执行,都可以是透明的,或者换言之,可以通过对用户明显的方式提供工作流功能。参照图3,根据一个实施例以主-从配置示出工作流系统300。上述工作流引擎 110和调度组件130可以结合到单个自治计算实体140中以便相对于充当从设备的一个或多个其它自治计算实体140充当主机或控制器。为了方便交互等,充当从设备的计算实体 140可以包括方便工作流执行等等的帮助组件310。帮助组件310包括执行组件312,其被配置成调度或以其它方式确保由工作流引擎Iio提供给帮助组件310的工作流或其部分的执行。如前所述,将计算跨计算实体拆分的情况下,失败的可能性增大。因此,帮助组件310还包括标识失败或其它不期望条件的失败检测组件314。例如,失败检测组件314可以通过例如搜索崩溃窗口或未解除 (un-dismissed)对话框、检查与已启动任务或与之关联的命令相关联的退出代码、确定超时命令是否过长、以及监视存储器使用和错误报告,来尽可能早地尝试标识或推断问题。帮助组件310还可以包括方便将计算和/或失败的结果传递给工作流引擎110的报告组件 316。可以由帮助组件310采取各种动作以方便调试。在一个实例中,报告组件316可以独立或与失败检测组件314 —起基于对失败的标识来捕捉并返回状态信息。例如,可以在失败时进行屏幕截图,可以捕捉存储器转储(dump),或者如果计算实体被虚拟化,可以捕捉整个计算实体或其状态的快照。除此之外或作为替代,帮助组件可以保持自治计算实体 140使得没有其它工作流任务、命令等可以执行直到完成调试。工作流系统300的主-从配置只是示例性的,并不旨在限制所附权利要求书的范围。还可以使用包括类似功能的其它配置或通信模型。根据一个实施例,工作流系统400可以利用如图4所示的云系统/服务410。云系统/服务410提供范围广泛的基于因特网的服务,其中资源被共享并且按照类似公共用途等需要提供给计算机或其它设备。更具体地,云系统/服务410可以提供对多个自治计算实体或计算节点的访问。计算机420包括前述工作流引擎110和调度组件130,并且可以使用由云系统和/或服务提供的自治计算实体来并行地执行工作流。工作流引擎110可以相对于包括静态分配和动态分配系统之类的不同类型或性质的云系统/服务410来操作。静态分配的云系统/服务410简单地提供对被视为适用的多个自治计算实体的访问。在这种状况下,工作流引擎110通过调度组件130来维护在多个自治计算实体上调度执行以减小最优执行的责任,如上所述。相反,动态分配的云系统/ 服务410从工作流引擎110接收执行计划,并且自身负责调度个体任务、命令等的执行。相应地,工作流引擎110还包括用于将工作流映射或换言之投射到执行计划或云系统理解的其它表示的映射组件430。此外,如果得到支持,映射组件430还可以相对于工作流调度将提示或建议结合到执行计划中。例如,可以提供计算成本和通信成本等。用户无需依赖于预先存在的云系统/服务来处理工作流。实际上,用户可以寻求构建其自身的自治计算实体的云或网络。例如,可以相对于计算资源的使用而请求同事和朋友等,以方便分布式工作流执行。然而,在这种状况下,幂等任务和带副作用的任务之间的区别可以是影响图3中调度组件130的调度的因素。更具体地,同事和朋友有可能不想允许执行带副作用的任务,诸如与安装、卸载、升级和/或降级软件相关联的那些(例如转移任务)。然而,相同的人可以允许其机器用于幂等的或者不具有任何副作用的任务,因为他们的机器中不会存在当前或持久的影响。相应地,相对于工作流调度的另一因素可以是例如指定带副作用的任务是否可以执行的约束。图5示出可以用于进一步优化工作流执行的资源推荐系统500。可以通过资源能力来描述工作流调度,或者换言之,调度需要围绕资源限制来工作。例如,如果在工作流执行期间确定计算机执行得慢,下次执行工作流时有可能利用更快的另一计算机来避免使用该计算机。沿使用先前工作流执行来优化未来运行的相同线,资源推荐系统500可以提供关于如何利用或修改资源以优化工作流执行的建议或推荐。这种功能可以包括在自治计算实体内(诸如帮助组件的一部分)或者形成更全局的组件或系统等的一部分。资源推荐系统500包括通信地耦合到建议组件520的分析器组件510。分析器组件510可以接收、检索、或以其它方式获取关于资源和工作流等的信息。基于分析器组件 510所获取的信息,建议组件520提供与可以相对于资源作出的能够改进执行的改变相关的建议或推荐。例如,建议组件520可以指示如果用更快的盘代替盘,则工作流的运行快百分之二十。此外,应该明白以上公开系统以及以下方法的不同部分可以包括或包含基于人工智能、机器学习或知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、 神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器等)。这样的组件和其它组件可以自动化执行某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。通过示例而非限制,调度组件130可以使用该技术来推断工作流编组、分配和/ 或失败。考虑到以上描述的示例性系统,参考图6-9的流程图将可以更好地理解依照所公开主题而实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其他框并发地进行。此外,并非全部所示出的方框都是实现下面所描述的方法所必需的。参照图6,示出工作流调度方法600的流程图。在附图标记610,根据一个或多个因素相对于多个自治计算实体标识工作流任务集合来执行。这些因素可以包括计算成本和通
9信成本等等,其中尤其例如就时间而言,计算成本是指在特定自治计算实体140上执行任务的成本,而通信成本与向自治计算实体140发送数据(例如项目、代码...)的成本有关。 在一个实例中,该功能可以通过在包括各因素的权重的工作流图上应用团集算法(clique algorithm)来实现以确定成本。例如,尤其可以考虑以下因素待传递的文件大小、网络等待时间、处理器速度、处理器计数、盘等待时间、盘速度、网络速度、可压缩性、处理器活动、 网络活动、执行任务的实际成本(存储器、处理器、I/O读取/写入)、显式指定任务成本、和 /或来自先前运行的历史数据。在此可以考虑的另一因素涉及关键资源,或者更具体地涉及其可用性。关键资源可以是每次能够由最多一个任务访问的一类项目。工作流依赖性可以相对于关键资源定义任务的交互。相应地,当标识用于并发执行的任务时,关键资源的可用性可被视为确保每次最多一个任务访问该资源。此外,当并发地执行工作流时,可以不保持串行执行的工作流的语义。在附图标记620,指定项目分布模型。可以根据包括客户机/服务器和对等之类的各种通信模型来分布诸如文件之类的项目。每个模型具有其优点和缺点。例如,在客户机 /服务器模型中,执行可能会慢,因为客户机需要请求数据并等待从服务器向客户机传达的响应。然而,可以限制传达的数据总量。相反,对等模型允许更快的执行,因为数据是本地的,但是即使只需要文件的一部分时最初也发送和存储整个文件。可以相对于工作流基于许多因素来选择项目分布模型,这些因素尤其包括项目大小以及网络速度和等待时间和/ 或相对于标识任务集合所使用的其它因素中的任一个。出于这种原因,可以将项目分布模型的指定与标识任务集合相结合。特别地,在决定进程中可以对每个模型的成本和益处进行加权。此外,可以相对于单个工作流使用一个以上的模型,并且在执行之前静态地和/或在工作流执行期间动态地做出指定。在附图标记630,可以向特定自治计算实体分配或以其它方式提供所标识的任务集合来执行。此外,可以向例如其中已经指定对等项目分布的适当自治计算实体发送与任务集合相关联的输入项目。图7示出可以由例如帮助组件310执行的本地工作流执行方法700。在附图标记 710,在本地计算实体上发起一个或多个所提供工作流任务的执行。在附图标记720,报告诸如当前负载和处理速度之类与本地计算实体有关的动态信息。这些信息在任务的调度分布式执行中是有用的。例如,如果任务未被分配给特定计算实体,则当前负载信息可以有助于确定是否在特定计算实体上调度任务。在730,标识并报告相对于工作流执行的失败。可以通过寻找崩溃窗口、未解除对话框以及监视存储器使用和执行日志等等来标识失败,如果失败被标识,则可以任选地通过附加信息(例如屏幕截图、存储器转储)报告失败以方便调试。在附图标记740,如果有任务执行的结果,则将其返回。在一个实施例中,例如,可以将这些结果存留到匿名位置并且通过对等通信模型任选地发送到另一计算实体作为另一任务的输入。图8示出工作流失败恢复的方法。在附图标记810,标识可能受失败影响的工作流任务集合。例如,一旦将失败与一个或多个任务隔离,则可以利用工作流依赖性确定受失败影响的任务。例如,如果任务“B”取决于任务“A”,则任务“B”受相对于任务“A”的失败的影响。类似地,如果任务“A”和“B”是独立的,相对于一个任务的失败不会影响另一个任务。在附图标记820,可以调度失败任务和受失败影响的任务集合来重新执行。此外,可以利用来自相同或不同任务流的不同的先前执行的状态信息(例如执行结果)来确保将重新执行保持在最小。换言之,可以对任务进行修剪,使得只有实际受失败影响的那些任务被重新执行。例如,取决于失败任务的任务还可能取决于一个或多个其它任务,而且可以替代地利用先前执行的结果而不是重新执行这些任务。参照图9,示出资源推荐方法900的流程图。在附图标记910,可以相对于工作流执行来标识计算限制。例如,可以确定盘返回数据相对较慢。在附图标记910,基于所标识的限制建议或推荐改变。继续以上示例,可以进行推荐以用更快的盘代替该盘。可以提供与期望在作出改变的情况下获得的改进相关的其它信息。例如,推荐可以指示如果用更快的盘代替该盘,则工作流的执行可以快百分之二十。总之,与简单地围绕计算限制来工作不同,可以呈现在实现的情况下能够改进后续工作流执行的推荐。在此所用的术语“组件”、“系统”和“引擎”及其各种形式意指与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用程序和计算机都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本可呈现不同范围的多个其它或替换示例,但已出于简明的目的而省略了。术语“云”旨在意指诸如因特网等通信网络以及底层网络基础结构。云计算一般涉及基于因特网或云的应用程序或服务,包括但不限于软件即服务(Mas)、效用计算、web 服务、平台即服务(PaM)和服务商业。尽管不限于此,但通常云服务经由web浏览器和网络连接对客户机可用,而服务被主存在一个或多个因特网可访问服务器上。“持久存储的数据”等旨在意指存储在非易失性介质上的跨应用会话存在的数据。 换言之,持久存储的数据经受应用启动和终止。相反,通常被保存在诸如存储器等易失性介质上的“瞬时数据”在应用会话中或期间创建并且在会话结束时丢弃。类似地,术语“持久存储”或其各种形式(例如,持久存储、正在持久存储、已经持久存储……)旨在意指以持久存储形式存储数据或将数据存储为持久存储数据。“工作流”是定义进程或过程的操作方面的互相关任务集合并且可消耗和/或产生一个或多个项目(例如,文件、文档、可执行代码、文字……)。可以程序地生成、观察、推理和/或修改工作流。此外,构建系统可以是工作流的一个实例,其中执行任务以生成或构建程序或文件(例如安装程序、文档...)。然而,如此处所使用的,术语“工作流”并非旨在意指程序本身,其中对各数据片段执行动作。“工作流系统”能够在许多不同的上下文中采用,包括但不限于业务/企业进程和计算机软件开发或构建。因此,术语可随上下文而变化,而所述概念、特征和/或功能保持不变。例如,在具体参考软件开发上下文时,术语“构建”可以代替此处的单词“工作流”。由此,工作流系统可被称为构建系统,工作流引擎可被称为构建引擎,而工作流可被称为构建。类似地,任务、项目、输入和输出等可理解地随上下文变化,而不以任何方式对所要求保护的主题的范围或适用的上下文提出限制。“并发执行”等指的是基本上同时而不是顺序地处理任务、工作流、命令或计算机指令的至少一部分。并发执行的一种形式包括并行处理,其中处理跨单个计算机上的两个或更多处理器或核进行。并发执行的另一种形式包括分布式处理,其中处理跨两个或更多计算机进行。此外,并发执行可涵盖并行处理和分布式处理两者,以使得处理跨多个计算机和处理器或核进行。“关键资源”等是指每次可以由最多一个处理器或任务使用的资源或项目。工作流依赖性可以指定任务和该特定类型的项目之间的交互。如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户状态的过程。可以使用推断来识别特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、 专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护主题的自动化和/或推断的动作。而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有” 或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。为了为所要求保护主题提供上下文,图10以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、 手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。参考图10,示出了示例计算机或计算设备1010(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机1010包括一个或多个处理单元或处理器1020、系统存储器1030、系统总线1040、大容量存储1050以及一个或多个接口组件1070。系统总线1040通信地耦合至少上述系统组件。然而,可以理
12解,在其最简单的形式中,计算机1010可包括耦合到系统存储器1030的一个或多个处理器 1020,该一个或多个处理器1020执行各种计算机可执行动作、指令和或组件。处理单元1020可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、 现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理单元1020还可被实现为计算设备的组合,例如DSP 和微处理器的组合、多个微处理器、多核处理器、结合一个DSP核的一个或多个微处理器、 或任何其它这种配置。计算机1010可包括各种计算机可读介质或以其他方式与其交互以便于控制计算机1010来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机 1010访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如, 固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机1010访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号” 指的是一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。系统存储器1030和大容量存储1050都是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,系统存储器1030可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机1010内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理单元1020的处理等。大容量存储1050包括相对于系统存储器1030用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储1050包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒之类的一个或多个设备。系统存储器1030和大容量存储1050可包括或其中存储有操作系统1060、一个或多个应用1062、一个或多个程序模块1064和数据1066。操作系统1060用于控制和分配计算机1010的资源。应用1062包括系统和应用软件中的一个或两者,并且可通过存储在系统存储器1030和/或大容量存储1050中的程序模块1064和数据1066来利用操作系统1060 对资源的管理以执行一个或多个动作。因此,应用程序1062可根据由此提供的逻辑来将通用计算机1010变成专用机器。所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,包括调度组件130的工作流引擎110可以是应用程序1062或应用程序1062的一部分,并且包括存储在存储器和/或大容量存储1050中的一个或多个模块1064和数据1066,其功能可以在由如图所示的一个或多个处理器或处理单元1020执行时实现。计算机1010还包括通信地耦合到总线1040并方便与计算机1010的交互的一个或多个接口组件1070。作为示例,接口组件1070可以是端口(例如,串行、并行、PCMCIA、 USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1070 可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标等定点设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、照相机、其他计算机……)来将命令和信息输入到计算机 1010中。在另一示例实现中,接口组件1070可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、IXD、等离子……)、扬声器、打印机和/或其他计算机等提供输出。此外,接口组件1070可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。
权利要求
1.一种便于高效工作流执行的方法,包括采用至少一个处理器(1020),所述至少一个处理器被配置成执行存储在存储器 (1030)中的计算机可执行指令以执行以下动作根据计算成本、通信成本和关键资源的可用性,相对于多个自治计算实体(140)的每一个标识工作流任务集合来执行。
2.如权利要求1所述的方法,其特征在于,还包括分配一个或多个所标识的工作流任务集合来执行。
3.如权利要求2所述的方法,其特征在于,还包括分配所标识的工作流任务集合的至少一个来在所述多个自治计算实体的两个或更多个上执行。
4.如权利要求2所述的方法,其特征在于,还包括根据显式工作流依赖性来发起工作流任务子集的重新执行。
5.如权利要求4所述的方法,其特征在于,还包括通过来自相同或不同工作流的先前执行的状态信息来发起重新执行。
6.如权利要求1所述的方法,其特征在于,还包括在工作流的一部分的执行期间动态地标识工作流任务集合。
7.如权利要求1所述的方法,其特征在于,还包括根据一个或多个时间独立约束来标识工作流任务集合。
8.如权利要求1所述的方法,其特征在于,根据更改所述多个自治计算实体中的至少一个的一个或多个能力的成本来标识工作流任务集合。
9.一种工作流系统(100),包括耦合到存储器(1030)的处理器(1020),所述处理器(1020)被配置成执行以下存储在所述存储器(1030)中的计算机可执行组件第一组件(132),其被配置成根据计算成本和通信成本,将从属和独立工作流任务划分成任务集合以便在两个或更多个自治计算实体(140)上并发执行,第二组件(134),其被配置成向所述两个或更多个自治计算实体(140)分配所述集合。
10.如权利要求9所述的系统,其特征在于,所述第一组件被配置成根据时间独立约束来划分工作流任务。
11.如权利要求9所述的系统,其特征在于,所述第一组件被配置成根据运行时间信息来动态地划分工作流任务的至少一部分。
12.如权利要求9所述的系统,其特征在于,所述第一组件被配置成根据在前执行信息来划分工作流任务。
13.如权利要求9所述的系统,其特征在于,所述第一组件被配置成根据更改所述自治计算实体中的至少一个的一个或多个能力的成本,来划分工作流任务。
14.如权利要求9所述的系统,其特征在于,所述第二组件被配置成向一个以上的计算实体冗余地分配至少一个集合。
15.如权利要求9所述的系统,其特征在于,还包括第三组件,其被配置成根据显式工作流依赖性来发起工作流任务子集的重新执行。
全文摘要
本发明描述了分布式工作流执行。工作流可被自动指定成跨多个自治计算实体来执行。例如,将计算成本与计算实体之间通信的成本进行平衡,以减小工作流的总执行时间。换言之,在编组任务以在单个计算实体上执行与划分任务以跨多个计算实体执行之间达到平衡。
文档编号G06F9/46GK102236578SQ20111012707
公开日2011年11月9日 申请日期2011年5月6日 优先权日2010年5月7日
发明者D·范威尔兹恩, H·J·M·梅杰, J·范格格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1