CN112470128A - 数据流执行图的自动调整 - Google Patents

数据流执行图的自动调整 Download PDF

Info

Publication number
CN112470128A
CN112470128A CN201980048929.2A CN201980048929A CN112470128A CN 112470128 A CN112470128 A CN 112470128A CN 201980048929 A CN201980048929 A CN 201980048929A CN 112470128 A CN112470128 A CN 112470128A
Authority
CN
China
Prior art keywords
data flow
execution graph
configuration
flow execution
graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980048929.2A
Other languages
English (en)
Inventor
R·波塔拉朱
T·Y·金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN112470128A publication Critical patent/CN112470128A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本文所描述的至少一些实施例涉及数据流执行图的自动调整。这样的数据流执行图常常被用于执行一些对数据消息流的处理。数据流执行图的性能参数被监测,并且将其与服务级别目标进行比较。基于比较,自动地决定数据流执行图的配置是否应当被改变。如果决定要做出改变,则数据流执行图的配置被变更。因此,数据流执行图的配置取决于对具有服务等级目标的性能的符合来被改变(或调整),而无需明确的指令来改变数据流执行图的配置。

Description

数据流执行图的自动调整
背景技术
大型云和因特网服务供应商通常每秒生成数百万个事件。为了处理如此高的事件吞吐量,经常在事件被批量处理之前先对其进行积累。为了减少时延以及确保及时的事件处理,最近流处理系统通过将事件作为流进行处理而避免批处理。
与每个事件流一起被流传输的事件的量可能有高度的变化性(在本文中称为“时间变化性”)。例如,事件流能够包括预期事件(例如,白天期间的处理需求通常可能比晚上高等)和意外事件(例如,剧烈的股市变化等)的混合。此外,由于存在跨事件流的不同的工作量特性(在本文中称为“空间变化性”),每个事件流具有不同的资源要求。此外,在大型系统中有不可避免的故障和硬件异构性,该故障和硬件异构性使之难以确保在处理事件流方面的稳定性能。为了处理这些变化性和不确定性,流处理系统的用户(通常是系统管理员)往往为资源供应安全因素,使很多资源处于闲置或未被充分利用。
很多现有的流处理系统采用流式数据流计算模型。在此模型中,计算工作被表示为算子(operator)的有向非循环图(DAG),其也称为“数据流执行图”。尽管这样的算子可能是无状态的,但这样的算子多数情况下为有状态的,在其中它们维持可变的局部状态。每个算子沿着DAG的有向边发送和/或接收逻辑时间戳事件。在沿(多个)输入边接收事件后,如果合适的话,算子更新它的局部状态,可能地生成新事件,并且将那些新事件沿(多个)输出边发送给下游算子。没有输入边的算子被称为“源”算子,或简称为“源”。没有输出边的算子被称为“接收器(sink)”算子,或简称为“接收器”。DAG中的边没有状态,但是可以具有可配置的性质。例如,边的性质可能是触发背压(back-pressure)的队列尺寸阈值。
本文所要求保护的主题不限于解决任何缺点的实施例,或仅在诸如上文所描述的那些环境中操作的实施例。相反,此背景仅被提供用于图示示例性技术领域,在其中本文所描述的一些实施例可以被实践。
发明内容
本文所描述的至少一些实施例涉及数据流执行图的自动调整。这样的数据流执行图常常被用于针对传入数据消息(或者作为流或者按批)执行一些处理(诸如响应于查询)。根据本文所描述的原理,数据流执行图的性能参数被监测并与服务级别目标进行比较。基于比较,自动地决定数据流执行图的配置是否应被改变。如果决定要做出改变,数据流执行图的配置被变更。
因此,本文的原理取决于符合服务等级目标来自动地改变数据流执行图的配置,而非需要明确的指令来改变数据流执行图的配置。因此在维持预期的性能标准的同时,配置可以被变更而无需用户和管理员的同时关注。因此,配置可以更频繁并且准确地被变更,从而在数据流执行图遇到变化状况(诸如空间和时间变化性)时提高数据流执行图的性能,并且不给用户带来不便。
本“发明内容”被提供以简化的形式介绍概念的选集,这些概念的选集将会在下面的“具体实施方式”中进一步地描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用作帮助确定所要求保护的主题的范围。
附图说明
为了描述在其中上述记载的和发明的其他的优点和特征可以被获得的方式,以上简略描述的发明的更加具体的描述将会通过参考其在附图中说明的具体实施例被描绘。应理解这些图仅描绘发明的通常的实施例,因此不被认为是限定它的范围,通过使用附图以附加的具体性和细节对发明进行描述和解释,其中:
图1以具有多个算子和边的有向非循环图(DAG)的形式图示了示例数据流执行图,并且被提供作为无数多种数据流执行图中的仅一种示例;
图2图示了在其中本文所描述的原理可以被采用的环境,其包括控制器和相应的数据流执行图;
图3图示了根据本文所描述的原理,用于自动调整数据流执行图的性能的方法的流程图;
图4图示了可用于执行图3的方法的控制器集,并且其包括监测控制器和重新配置控制器,以及可能的其他控制器;
图5图示了在本文所描述的示例重新配置中的示例原始数据流执行图;
图6图示了根据本文所描述的原理,用于重构处理(多个)数据流的数据流执行图的方法的流程图;
图7图示了新数据流执行图,其表示图5的原始数据流执行图的经修改的版本;
图8A图示了被用于示例中的第一示例中间数据流执行图,在示例中原始数据流执行图是图5的原始数据流执行图,并且新数据流执行图是图7的新数据流执行图;
图8B图示了第二示例中间数据流执行图,其除了执行了优化以利用算子中的一些算子没有改变它们的状态这一事实之外,与图8A的该图相同;
图8C图示了第三示例中间数据流执行图,其除了执行了另一优化以利用数据流执行图是非循环的这一事实之外,与图8B的该图相同;以及
图9图示了在其中本文所描述的原理可以被采用的示例计算机系统。
具体实施方式
作为一般介绍,本文所描述的至少一些实施例涉及数据流执行图的自动调整。这样的数据流执行图常常被用于针对传入数据消息或者作为流或者按批的来执行一些处理。作为示例,这样的数据流执行图可以表示常设(standing)查询或流式查询。根据本文所描述的原理,数据流执行图的性能参数被监测,并且与服务级别目标相比较。基于比较,自动决定数据流执行图的配置是否应被改变。如果决定要做出改变,数据流执行图的配置被改变。这种监测和重新配置可以重复地和/或连续地执行,以便在图遇到改变情况时调整数据流执行图,从而实现服务级别目标。
首先,在更详细地描述数据流执行图的性能调整的概念之前,将参考图1描述数据流执行图的概念。在数据流计算模型中,计算工作被表示为算子的有向非循环图(DAG)。这样的图也称为数据流执行图。图1图示了数据流执行图100的非常简单的示例,其包括算子101至算子104。每个算子可以是可执行部件,诸如下面参考图9描述的计算系统900的可执行部件906。
尽管数据流执行图算子可以是无状态的,但这样的算子常常是有状态的,其中它们维持可变的局部状态。每个算子沿着数据流执行图的有向边发送和/或接收逻辑时间戳的数据消息。在示例数据流执行图100中,有四个有向边111至114。
在沿输入边接收数据消息后,算子执行它的功能,如果合适的话,更新它的局部状态,可能地生成新的数据消息,并且将那些新的数据消息沿着(多个)输出边发送给下游算子。没有输入边的算子被称为“源”算子,或简称为“源”。这些源算子接收由数据流执行图所接收的原始输入数据消息(或者作为数据流,或者按批)。在示例数据流执行图100中,源算子101适当地接收输入数据消息(由箭头121所表示),执行功能,生成(多个)得到的数据消息,并且沿有向边111和112发送那些得到的数据消息。源算子102适当地接收输入数据消息(由箭头122所表示),执行它的功能,生成(多个)得到的数据消息,并且沿有向边113和114发送那些得到的数据消息。
没有输出边的算子被称为“接收器”算子,或简称为“接收器”。一个或多个这些接收器算子生成数据流执行图的输出结果。在示例数据流执行图100中,接收器算子103沿有向边111和113接收数据消息,执行它的功能,并且生成得到的输出数据(由箭头123所表示)。接收器算子104沿有向边112和114接收数据消息,执行它的功能,并且生成得到的输出数据(由箭头124所表示)。
数据流执行图中的边常常没有状态,但是能够具有性质。例如,边的性质可以是触发背压的队列积压尺寸阈值。边也能够具有有用的状态。例如,边可能包括以数据被发送的形式的状态(即,各个算子之间“运行中(in-flight)”的数据)。在检查点(checkpointing)期间,边的状态也可能被设置检查点(checkpointed),以避免重放运行中的数据。
数据流执行图在任何配置中可以包括任何数目的算子和任何数目的边。数据流执行图可以如没有任何边的单一的算子一样简单。另一方面,数据流执行图可能极其复杂,包含海量算子和它们之间的边。因此,示例数据流执行图100实际上仅是无数多种可能的数据流执行图的一个简单示例数据流执行图。数据流执行图可以在单个计算系统上被操作,诸如以下参考图9所描述的计算系统900,或者可以跨多个计算系统分布。作为示例,数据流执行图可以在云计算环境中操作。
现在已经参考图1提供了对数据流执行图的介绍,关于如何使用本文所描述的原理来调整数据流执行图的更多细节将参考随后的附图来描述。例如,图2图示了在其中本文所描述的原理可以被采用的环境200。
环境200包括控制器210和数据流执行图220。数据消息211(或者作为流或者按批)被供应到数据流执行图220中。数据流执行图220对输入数据消息211执行计算工作,并且生成输出结果221。作为示例,计算工作可以是流式查询或常设查询。控制器210可以是可执行部件,诸如下面参考图9描述的可执行部件906。数据流执行图220与控制器210可以在相同的计算系统上,或者在不同的计算系统上。在一个实施例中,控制器210被特别地分配到数据流执行图220,并且不分配到其他。因此,控制器210故障的风险被限定到仅单个的数据流执行图。
图3图示了根据本文所描述的原理,用于自动调整数据流执行图的性能的方法300的流程图。方法300可以在图2的环境200内被执行。因此,将频繁参考图2的环境200来描述图3的方法300。
方法300包括监测数据流执行图的性能参数(动作301)。例如,图2的控制器210可以监测图2的数据流执行图220的性能。数据流执行图可以具有任意数目的性能参数。监测动作(动作301)可以监测性能参数中的单个性能参数,或者可以监测多个性能参数。性能参数的一个示例是时延–或者针对被提供给数据流执行图的数据消息所花费的时间的数量,其将被反映在由数据流执行图所生成的结果中。性能参数的另一示例是由数据流执行图对事件处理的吞吐量。例如,吞吐量可以由针对特别的时间单位由数据流执行图处理的输入数据消息的数目来测量(即,处理数据消息的速率)。时间单位可能或许是滚动或滑动窗口,或者可能是翻转或跳跃窗口。
在一个实施例中,方法300由单个控制器,诸如图2的控制器210执行。然而,在其他实施例中,多个控制器可以被用于执行图3的方法300。在这个意义上,图2的控制器210可以表示为多个控制器的集合。例如,监测动作301可以由单独的控制器执行。图4图示了可以被用于执行图3的方法300的控制器集400。监测控制器401可以执行对数据流执行图的一个或多个性能参数的监测。尽管只图示了一个监测控制器401,但是可以有用于监测其他性能参数的其他监测控制器。在一个实施例中,监测控制器401仅被分配到数据流执行图220,因此监测控制器401故障的风险被限定于仅数据流执行图220。
返回到图3的方法300,方法300包括将所监测的性能参数与服务级别目标进行比较(动作302)。基于比较,方法300自动决定数据流执行图的配置是否应当被改变(决策模块303)。如果基于比较,数据流执行图不应当被改变(决策块303中的“否”),则服务级别目标由数据流执行图适当地满足。因此,没有对配置做出改变,并且监测继续(动作301)。当比较结果导致没有对配置做出改变时,由动作301、动作302和回到动作301的决策块303所表示的循环可以连续地或重复地被执行。
另一方面,如果确定导致配置应当被改变的决策(决策模块303中的“是”),则除非对配置做出改变,否则有可能服务级别目标无法满足。在该情况下(决策块303中的“是”),数据流执行图的配置被改变(动作304),并且过程返回到继续监测(多个)性能参数(动作301)。由动作301、动作302、决策块303、和回到动作301的动作304所表示的循环可以连续地或重复地执行,进而连续地或重复地变更数据流执行图的配置。因此,针对落入服务级别目标内的良好性能,数据流执行图被频繁地变更(或调整)。
配置的变更(动作304)也可以由单独的控制器执行。参考图4,重新配置控制器402可以被用于执行对数据流执行图220的配置的变更。尽管仅一个重新配置控制器被图示了,但是存在可以用于监测其他性能参数的其他重新配置控制器。例如,一些重新配置控制器可以被定制以有效执行某些类型的重新配置。在一个实施例中,重新配置控制器402仅被分配到数据流执行图220,使得重新配置控制器402的故障的风险被限定于仅数据流执行图220。在一个实施例中,监测控制器401和/或重新配置控制器402也执行比较(动作302)和/或确定(决策块303)。省略号403表示在控制器集400中可能有多个监测或重新配置控制器,或其他类型的控制器。
尽管本文所描述的原理不限于对数据流执行图的配置的任何特别的类型的改变,仅作为示例,现将描述三种不同类型的配置改变。将会进一步详细讨论的配置改变包括:1)对数据流执行图本身的操作参数的改变,2)对数据流执行图的部件(算子或边)的状态或参数的改变;以及3)对数据流执行图的结构的改变。现在将按此顺序描述这些示例改变类型。
所描述的第一类型配置改变是对执行图本身的操作参数的改变。作为示例,在其中数据流执行图按批处理传入数据消息的情况下,操作参数可能包括批的大小(以数据消息的数目)。批提供了在吞吐量和时延之间的权衡。批具有减少每个消息的操作成本的好处。然而,批确实会对处理输入数据消息整体时延产生影响。如果批的大小太小,则批的数目增加,并且由于花费时间来制定批,这可能增加时延。另一方面,如果批的大小很大,尽管批的数目被减小,但每批的数据消息的数目却增加了。因此,有与等待数据消息到达以使批可以在第一位置被创建相关联的时延。这两个极端之间的某处是其中时延最小化的批的大小。在复杂的系统中,标识此批的大小是不简单的任务,而且理想的批的大小会随时间推移而变化。
例如,假设服务级别目标是每秒6000万数据消息的吞吐量,具有500毫秒的时延上界。现在,假设每30秒控制器收集时延样本,更新处理时延的移动平均值,并且如果必要执行数据流执行图配置的重新配置。
最初(在时间等于零秒处),假设在测量时延和吞吐量的同时,每批40,000条消息的保守的批大小被选择。现在假设以这个批大小的吞吐量速率以每秒5000万条数据消息被监测。这不足每秒6000万条数据消息的服务级别目标。因此,每秒6000万数据消息会压制系统在数据流执行图内触发显著的背压。因为这个背压,时延会更高,例如大约一秒。
然后,在30秒标记处开始,为解决服务级别目标中的这些不足,控制器将批大小操作参数加倍,达到每批8万条消息。假设这导致以每秒6000万条消息的更加稳定的吞吐量,并且给出大概500毫秒的稳定的时延。在60秒标记处,假设控制器尝试将批尺寸再次加倍至每批16万条消息。然而,控制器发现这将时延增加到服务级别目标之上,而吞吐量具有很小的改进。因此,在90秒标记处,控制器返回到每批8万条消息的批大小。因此,控制器针对数据流执行图选定合适的参数值,而无需除服务级别目标和数据流执行图的实际所监测的性能之外的任何信息。
第二类型的配置改变是数据流执行图的部件的状态或参数值的改变,诸如算子或边。例如,边的队列大小可以被调整,因此由该边更低频率地施加背压。作为另一示例,算子可以具有其被改变的优先级别,以便算子对处理循环具有更多的访问。
第三类型的配置改变是对数据流执行图本身的实际结构的改变。这种结构的改变可能包括添加或移除算子、或者添加或移除边、或以上的组合或多个。
这样的结构重新配置可能是困难的任务。常规地,为了执行这样的重构,整个数据流执行图必须阻止传入数据消息,同时原始数据流执行图的状态被设置检查点,新数据流执行图被实例化,并且被设置检查点的状态被映射到新数据流执行图中。只有那时传入数据消息才被阻止。这是显著的阻止操作,其本身引入了显著的时延。因此,这种类型的重新配置不能过于频繁地被进行。
然而,通过使用中间数据流执行图,可以避免在整个数据流执行图的级别上施加背压。相反,背压可以仅在算子级别上被施加,显著地减少阻止的影响,并且显著地减少与重构数据流执行图相关联的时延影响。因此,对数据流执行图的重构可以更频繁地被执行。因此,现在将描述使用中间执行图来重构数据流执行图。
在这种新的重构机制中,控制器消息与数据消息一起被供应到数据流执行图中。具体地,控制消息可以被输入到数据流执行图220的每个源算子。控制消息与数据消息的不同在于,控制消息被构成为由数据流执行图220可执行,以实际上改变数据流执行图220的配置。另一方面,数据消息并不改变数据流执行图220的配置,但是由数据流执行图220简单地处理。作为示例,控制消息还可能包含小的可执行程序,其可以由遇到控制消息的每个算子执行。此可执行程序可以是无名/匿名函数,其作为新数据流执行图的部分被执行。
在示例中,图5的数据流执行图500将被用作在将在下文描述的示例配置中的原始的或“旧的”数据流执行图。应当注意,图5的数据流执行图500类似于图1的示例数据流执行图100,其中图5的算子501至算子504与图1的算子101至算子104相同。然而,算子503和算子504被示为菱形,以象征这些算子503和算子504具有状态,而算子501和算子502没有状态,如由圆圈所表示的所象征的。在图5中,数据流执行图500的边511至边514与算子501至算子504的关系与图1数据流执行图100的边111至边114与算子101至算子104的关系相同。
数据流执行图500在本文中也将指定为本文的“示例原始数据流执行图”。图6图示了用于修改处理数据流的数据流执行图的方法600的流程图。由于方法600可以由图2的环境200中的控制器210执行,因此将参考图2的环境200来描述图6的方法600。而且,由于图5的示例原始数据流执行图500将被用作要被修改的示例数据流执行图,因此也将频繁地参考图5。
方法600确定旧的数据流执行图要被改变到的新数据流执行图(动作601)。作为示例,假设图5的示例原始数据流执行图500要被修改为图7的新数据流执行图700。应当注意,向原始数据流执行图500添加有状态的算子705、以及边715和边716,会形成新数据流执行图700。例如,如果算子501和算子502是映射算子,并且算子503和算子504是映射-简化(reduce)模型中的简化器(reducer)算子,则此修改可以被执行,在此情况中决定将简化算子的数目扩展(即,增加)一个。
图7的示例新数据流执行图700的算子501'、502'、503'和504'分别与图5的示例原始数据流执行图500的算子501、502、503和504相同。因此,算子501和501'是共同的,算子502和502'是共同的,算子503和503'是共同的,并且算子504和504'是共同的。但是,在图7中新增的主要后缀表示算子可以具有其作为重新配置的结果的改变的功能、(多个)参数和/或状态,并且仍被认为是原始数据流执行图和新数据流执行图之间的共同算子。同样,图7的示例新数据流执行图700的边511'、512'、513'和514'分别与图5的原始数据流执行图500的边511、512、513和514相同(或是共同的)。此外,新增的主要后缀表示边在重新配置期间具有改变的其(多个)参数或状态,并且仍被认为是原始数据流执行图和新数据流执行图之间的共同边。
方法600还包括基于将要被修改的原始数据流执行图以及将作为修改的结果的新数据流执行图两者,来生成中间数据流执行图(动作602)。更多的关于中间数据流执行图将分别参考示例原始数据流执行图500、示例新数据流执行图700、和相关联的图8A至图8C的的示例中间数据流执行图800A、800B和800C被描述。
现在可以说中间数据流执行图至少包括原始数据流执行图和新数据流执行图两者的共同算子,并且包括原始数据流执行图和新数据流执行图两者的共同边。例如,针对示例原始数据流执行图500和示例新数据流执行图700,在示例原始数据流执行图500和示例新数据流执行图700两者内都有共同的算子501至算子504。此外,在示例原始数据流执行图500和示例新数据流执行图700两者内都有共同的边511至边514。
方法500还包括生成不是数据流的部分的一个或多个控制消息(动作603)。这些控制消息被构造,以便当由中间数据流执行图内的算子执行时,中间数据流执行图将采用新数据流执行图的形式。作为示例,在图2的环境200中,控制器210生成控制消息。控制消息表示:新数据流执行图的拓扑、以及可能的由具体的算子执行的新功能或修改的功能、由算子或边保持的新的或修改的参数或参数值、以及状态在多个有状态的算子中如何被分配。
然后(多个)数据流与(多个)控制消息一起被流送到中间数据流执行图(动作604)。应当注意,直到新数据流执行图已经被建立,(多个)数据流的这种流送不会被推迟。作为示例,在图2的环境200中,数据消息211和控制消息被供应到数据流执行图220中,其在重新配置期间是现在的中间数据流执行图。由于(多个)控制消息被构造的方式,随着每个算子完成(多个)控制消息的执行,中间数据流执行图将采用新数据流执行图的形式。
具体地,针对中间数据流执行图的不是新数据流执行图的部分的每个算子,在算子执行(多个)控制消息中的至少一个(并且最好是所有)控制消息之后,算子被关闭,以便在关闭之后算子停止能够继续对数据流的数据消息的继续处理。这样,算子在它的输入边中的一个输入边接收控制消息,算子关闭该输入通道,以便它在该输入边上不接收数据消息。在针对该算子的所有输入边上收到所有控制消息之后,算子将不再接收数据消息。针对中间数据流执行图的不是原始数据流执行图的部分的每个算子,在算子处理(多个)控制消息中的至少一个(最好是所有)控制消息之后,该算子开始对数据流的数据消息的处理。
当中间数据流执行图内的接收器算子完成对控制消息的执行时,算子每个向控制器210报告完成。当控制器210确认数据流执行图中的所有接收器算子已经执行了控制消息时(动作605),控制器210能够知道中间数据流执行图现在已经采取新数据流执行图的形式,并且(多个)数据流被供应到该新数据流执行图并且由新数据流执行图处理。
图8A包括一个示例中间数据流执行图800A,其基于示例原始数据流执行图500和示例新数据流执行图700。具体地,中间数据流执行图800A包括原始数据流执行图500和新数据流执行图700两者的所有算子。即,中间数据流执行图800A包括针对无状态算子和有状态算子两者地算子501至504、501'至504'和705。中间数据流执行图800A还包括原始数据流执行图500和新数据流执行图700两者的边。即,中间数据流执行图800A包括边511至514、511'至514'、715和716。这样的边由实线箭头所表示。
中间数据流执行图800A还包括由虚线箭头所表示的附加边。这样的边包括捕获原始数据流执行图的(多个)有状态算子与新数据流执行图的(多个)有状态算子之间的状态依赖关系的边。例如,假设作为重新配置的部分,一些状态将从算子503被传递到新的算子705。这样,有新的边801表示此依赖。此外,假设作为重新配置的部分,一些状态将从算子504被传递到新的算子705。这样,有新的边802表示此状态依赖。
中间数据流执行图800A还包括在原始数据流执行图500与新数据流执行图700的每个共同的算子之间的新边。例如,存在从算子501到算子501'的新边811、从算子502到算子502'的新边812、从算子503到算子503'的新边813、以及从算子504到算子504'的新边814。因此,中间数据流执行图800A包括九个算子501至504、501'至504'、和705;以及十六条边511至514、511'至514'、715、716、801、802、和811至814。
最终,一旦所有算子都完成处理控制消息,中间数据流执行图800A将收缩(collapse)为新数据流执行图700。回想针对中间数据流执行图800A的不是新数据流执行图700的部分的每个算子(其包括原始算子501、502、503和504中的所有算子),该算子在执行在它的所有输入边上所接收到的控制消息后,将关闭。同样,针对中间数据流执行图800A的不是原始数据流执行图500的部分的每个算子(包括算子501'、502'、503'和504'中的所有算子),该算子在执行在它的输入边的每个输入边上所接收到的控制消息后,将开始处理数据消息。
控制消息首先被提供给算子501和502,其通过在输入通道上每个停止数据消息而响应。在算子501处理控制消息之后,控制消息沿着有向边511、512和811被传递到相应的算子503、504和501',并且其后算子501将关闭,进而还消除了有向边511、512和811。在算子502处理控制消息之后,控制消息沿着有向边513、514和812被传递到相应的算子503、504和502',并且其后算子502将关闭,进而还消除了有向边513,514和812。
在算子501'处理控制消息之后,控制消息沿着有向边511'、715和512'被传递到相应的算子503'、705和504',并且其后算子501'开始处理传入的数据消息。同样,在算子502'处理控制消息之后,控制消息沿着有向边513'、716和514'被传递到相应的算子503'、705和504',并且其后算子502'开始处理传入的数据消息。在这一点,在中间数据流执行图停止接受输入数据消息(当算子501和502接收到控制消息时)之后不久,中间数据流执行图再次接受输入数据消息。
作为处理控制消息的部分,算子503将如由控制消息指示的对它的自身的状态上执行一些转变,并且将沿有向边801将经转变的状态提供给算子705。在算子503处理控制消息之后,控制消息沿着有向边813和801被传递到相应的算子503'和705,并且其后算子503将关闭,进而也消除了有向边813和801。作为处理控制消息的部分,算子504将如控制消息所指导的对它的自身的状态执行一些转变,并且将沿有向边802将经转变的状态提供给算子705。在算子504处理控制消息之后,控制消息沿有向边802和814被传递到相应的算子705和504',并且其后算子504将关闭,进而还消除了有向边802和814。
在算子503'、705和504'各自处理控制消息之后,相应的算子其后开始处理传入的数据消息,并且向控制器210报告控制消息的处理的完成。在这一点,中间数据流执行图800A已经采用了新数据流执行图700的形式,并且数据流正在新数据流执行图700上执行。
虽然在这种情况下可能导致某一数量的背压,但是背压的数量远小于冻结世界(freeze-the-world)的方案,其中原始数据流执行图完全停止,原始数据流执行图的状态被设置检查点,新数据流执行图被生成,经设置检查点的状态被传递到新数据流执行图中的合适的算子,并且仅在这时新数据流执行图被启动。
一种优化是基于以下认识:当控制消息不改变算子的状态时(例如,如这个例子中,针对算子501、501'、502和502',因为它们是无状态的),相应的共同算子可以被收缩为一个算子,消除它们之间的相应的链接。图8B图示了示例中间数据流执行图800B,除了所描述的优化之外,其类似于图8A的数据流执行图800A。具体地,算子501和501'被收缩为算子501',并且对应的边811消失了。而且,算子502和502'被收缩为算子502',并且对应的边812消失了。因此,在中间数据流执行图800B中,现在仅有七个算子501'、502'、503、504、503'、504'和705。在中间数据流执行图800B中,有十四条边511至514、511′至514′、715、716、801、802、813和814。
如果数据流执行图是非循环图,另一优化可以被形成。在这种情况中,共同算子503和503'可以被收缩为算子503'(消除边511、513和813),并且共同算子504和504'可被收缩为算子504'(消除边512、514和814),而不会破坏非循环图的不变性。此外,这样的非循环不变性可以针对扩展和内缩通过使用散列算法作为分割方案而被维持。这种收缩使得在中间数据流执行图800C中仅剩下五个算子501'至504'和705。在中间数据流执行图800C中还有八个边511′至514′、801、802、以及715和716。
因此,本文所描述的原理提供了用于调整数据流执行图以遵从服务级别目标的机制。因此,本文的原理取决于对具有服务级别目标的性能的符合来自动改变数据流执行图的配置,而非要求明确的指令来改变数据流执行图的配置。因此,在维持预期的性能标准的同时,配置可以被变更而无需用户或管理员同时的关注。因此,随着数据流执行图遇到变化状况,配置可以更频繁且准确地被变更,从而提高数据流执行图的性能,并且不会给用户带来不便。
由于本文所描述的原理在计算系统的环境中操作,计算系统将参考图9被描述。计算系统现在采用越来越多的形式。例如,计算系统可以是手持设备、装置、膝上型计算机、台式计算机、大型计算机、分布式计算系统、数据中心、或者甚至是常规上不被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜、手表、手环等)。在此描述中和权利要求书中,术语“计算系统”被广泛地定义为包括任何具有至少一个物理的且有形的处理器和物理的且有形的存储器的设备或系统(或其组合),存储器能够具有其上的计算机可执行指令,其可以由处理器执行。存储器可采用任何形式并且可以取决于计算系统的本性和形式。计算系统可以分布在网络环境中,并且可以包括多个组成计算系统。
如图9所示,在其最基本的配置中,计算系统900通常包括至少一个硬件处理单元902和存储器904。存储器904可以是物理系统存储器,其可以是易失性、非易失性、或者两者的某种组合。术语“存储器”在本文中还可用于指代非易失性大容量存储器,诸如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。
计算系统900其上具有常常被指代为“可执行部件”的多个结构。例如,计算系统900的存储器904被图示为包括可执行部件906。术语“可执行部件”是针对结构的名称,其对于计算领域的普通技术人员普遍理解为,可以是软件、硬件或其组合的结构。例如,当以软件被实现时,本领域技术人员理解可执行部件的结构可以包括软件对象、例程、可以在计算系统上执行的方法,无论可执行部件是否存在于计算系统的堆中,或者可执行部件是否存在于计算机可读存储介质上。
在这种情况下,本领域技术人员将理解可执行部件的结构存在于计算机可读介质上,以便当由计算系统的一个或多个处理器(例如,由处理器线程)解释时,计算系统被导致执行功能。这样的结构可以由处理器直接计算机可读取(如可执行部件是二进制的情况)。备选地,结构可以被构造为可解释和/或经编译的(无论是在单个阶段中或是在多个阶段中),从而生成由处理器直接可解释的这样的二进制。当使用术语“可执行部件”时,对于可执行部件的示例结构的这样的理解充分地处在计算领域的技术人员的理解内。
术语“可执行部件”也可以被普通技术人员很好地理解为包括在硬件中被实现为专有的或近乎专有的结构,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或任何其他专用电路内。因此,术语“可执行部件”是计算领域的技术人员普遍知晓的针对结构的术语,无论是以软件、硬件、或组合实现的。在此描述中,也可以使用术语“部件”或“顶点”。如此描述中和在此情况中所使用的,此术语(无论术语是否被一个或多个修改器所修改)也旨在与术语“可执行部件”同义,或者是这样的“可执行部件”的特别的类型,并且因此还具有被计算领域的那些普通技术人员普遍知晓的结构。
在随后的描述中,将参考由一个或多个计算系统所执行的动作描述实施例。如果这样的动作以软件实现,(执行该动作的相关计算系统的)一个或多个处理器响应于具有组成可执行部件的经执行的计算机可执行指令,引导计算系统的操作。例如,这样的计算机可执行指令可以被具体化在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及对数据的操纵。
计算机可执行指令(和被操纵的数据)可以被存储在计算系统900的存储器904中。计算系统900还可以包含通信通道908,其允许计算系统900在例如网络910之上与其他计算系统通信。
尽管不是所有计算系统都需要用户界面,在一些实施例中,计算系统900包括用于与用户交互的用户界面912。用户界面912可以包括输出机构912A以及输入机构912B。本文所描述的原理不限于精确的输出机构912A或输入机构912B,因为这将取决于设备的本质。然而,输出机构912A可以包括例如扬声器、显示器、触觉输出、全息图、虚拟现实等。输入机构912B的示例可以包括例如麦克风、触摸屏、全息图、虚拟现实、相机、键盘,其他指点输入的鼠标、任何类型的传感器等。
本文所描述的实施例可以包括或利用包括计算机硬件的专用或通用计算系统,诸如,例如一个或多个处理器和系统存储器,如下面更详细地讨论的。本文所描述的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是能够由通用或专用计算系统所访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,通过示例的方式,并且不是限制,实施例可以包括至少两种明显不同种类的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备,或者其他可以被用于以计算机可执行指令或数据结构的形式存储所期望的程序代码装置的物理的和有形的存储介质,并且其可以通过通用或专用计算系统访问。
“网络”被定义为使电子数据能够实现在计算系统和/或部件和/或其他电子设备之间的运输的一个或多个数据链接。当信息在网络或另一通信连接(或者硬连线的、无线、或硬连线或无线的组合)之上被传递或被提供给计算系统时,计算系统会适当地将连接视为传输介质。传输介质可以包括网络和/或数据链接,其可以被用于以计算机可执行指令或数据结构的形式携带所期望的程序代码,并且其可以由通用或专用计算系统所访问。以上的组合也可以被包括在计算机可读介质的范围内。
此外,在达到各种计算系统部件时,以计算机可执行指令或数据结构的形式的程序代码装置可以自动地从传输介质被传递到存储介质(反之亦然)。例如,在网络或数据链接之上所接收的计算机可执行指令或数据结构可以被缓冲在网络接口部件(例如,“NIC”)内的RAM中,并且然后最终被传递到计算系统RAM和/或计算系统处的更小易失性的存储介质。因此,应当理解,可读介质可以被包括在也(或甚至主要)利用传输介质的计算系统部件中。
计算机可执行指令包括,例如指令和数据,其当在处理器上被执行时,使通用计算系统、专用计算系统、或专用处理设备来执行某个功能或某组功能。备选地或附加地,计算机可执行指令可以配置计算系统以执行某个或某组功能。计算机可执行指令可以是,例如二进制或甚至指令,其在由处理器直接执行之前经过一些翻译(诸如编译),诸如中间格式指令(诸如汇编语言、或甚至源代码)。
本领域技术人员将理解发明可以在具有多种类型的计算系统配置的网络计算环境中被实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器或可编程的消费类电子产品、网络个人计算机、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜或手表)等。发明还可以在分布式系统环境中被实践,在其中,通过网络被链接(或者通过硬连线数据链接、无线数据链接、或者通过硬连线和无线数据链接的组合)的本地和远程计算系统两者执行任务。在分布式系统环境中,程序部件可以位于本地和远程存储设备两者中。
本领域技术人员还将理解,发明可以在由一个或多个数据中心或其部分所支持的云计算环境中被实践。云计算环境可以是分布式的,尽管这不是必需的。当是分布式时,云计算环境可以在组织内国际性地分布和/或具有跨多个组织所持有的部件。
在此描述和下面的权利要求书中,“云计算”被定义为用于使按需网络能够访问可配置计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池的模型。“云计算”的定义不限于其他若干优点中的任何优点,其可以从这样的模型在被合理地部署时所获得。
例如,云计算当前在市场中被采用以便提供对可配置计算资源共享池的普遍且方便的按需访问。此外,可配置计算资源的共享池能够经由虚拟化被迅速地供应,并以较低的管理或服务供应商交互来被释放,并且然后相应地缩放。
云计算模型能够由各种特性组成,诸如按需、自助服务、广泛的网络访问、资源池、迅速弹性、经测量的服务等。云计算模型也可以采用各种应用服务模型的形式,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)、和基础架构即服务(“IaaS”)。云计算模型还可以使用诸如私有云、社区云、公共云、混合云等不同的部署模型来被部署。在此描述中和在权利要求书中,“云计算环境”是在其中云计算被采用的环境。
因此,本文所描述的原理提供了用于调整数据流执行图以便遵从服务级别目标的机制。因此,本文所描述的原理取决于符合具有服务级别目标的性能,自动地改变数据流执行图的配置,而非明确的指令来改变数据流执行图的配置。因此,在维持预期的性能标准的同时,配置可以被变更而无需用户或管理员同时的关注。因此,随着数据流执行图遇到变化状况,配置可以更频繁且准确地被变更,从而提高数据流执行图的性能,并且不会给用户带来不便。
在不脱离本发明的精神或基本特性的情况下,本发明可以以其他具体的形式来被实施。所描述的实施例在所有方面仅被认为是说明性的而不是限制性。因此。发明的范围由所附权利要求书所标示,而不是由前面的描述所标示。落入权利要求书的等价的含义和范围内的所有改变将被包含在它们的范围内。

Claims (10)

1.一种用于自动地调整数据流执行图的性能的方法,所述方法包括:
监测所述数据流执行图的性能参数;
将所监测的所述性能参数与服务级别目标进行比较;
基于所述比较,自动地确定所述数据流执行图的配置是否应当被改变;以及
如果自动确定导致所述配置应当被改变的决策,变更所述数据流执行图的所述配置。
2.根据权利要求1所述的方法,所述配置包括所述数据流执行图的结构,使得变更所述数据流执行图的所述配置导致所述数据流执行图的算子或边的添加或移除。
3.根据权利要求1所述的方法,所述配置包括所述数据流执行图的算子或边的状态,使得变更所述数据流执行图的所述配置导致所述数据流执行图的所述算子或所述边的状态的改变。
4.根据权利要求1所述的方法,所述配置包括所述数据流执行图的算子或边的参数,使得变更所述数据流执行图的所述配置导致所述数据流执行图的所述参数的改变。
5.根据权利要求1所述的方法,所述配置包括操作参数,使得如果所述自动确定导致所述配置应当被改变的确定,所述操作参数被变更。
6.根据权利要求5所述的方法,所述操作参数包括事件的批大小,所述事件被供应到所述数据流执行图中。
7.根据权利要求1所述的方法,被监测的所述性能参数包括由所述数据流执行图对事件的处理的时延。
8.根据权利要求7所述的方法,所述配置包括被供应到所述数据流执行图中的事件的批大小,使得如果所述自动确定导致所述配置应当被改变的确定,所述批大小被变更。
9.根据权利要求1所述的方法,所述方法被重复,使得所述配置被重复地变更。
10.一种计算系统,包括:
一个或多个处理器;以及
一个或多个计算机可读介质,其上存储有计算机可执行指令,所述计算机可执行指令被构造为使得当由所述一个或多个处理器执行时,使所述计算系统执行用于自动地调整数据流执行图的性能的方法,所述方法包括:
监测所述数据流执行图的性能参数;
将所监测的所述性能参数与服务级别目标进行比较;
基于所述比较,自动地决定所述数据流执行图的配置是否应当被改变;以及
如果自动确定导致所述配置应当被改变的确定,变更所述数据流执行图的所述配置。
CN201980048929.2A 2018-07-25 2019-06-20 数据流执行图的自动调整 Pending CN112470128A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/045,506 2018-07-25
US16/045,506 US10877795B2 (en) 2018-07-25 2018-07-25 Automatic tuning of a dataflow execution graph
PCT/US2019/038081 WO2020023151A1 (en) 2018-07-25 2019-06-20 Automatic tuning of a dataflow execution graph

Publications (1)

Publication Number Publication Date
CN112470128A true CN112470128A (zh) 2021-03-09

Family

ID=67138234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980048929.2A Pending CN112470128A (zh) 2018-07-25 2019-06-20 数据流执行图的自动调整

Country Status (4)

Country Link
US (1) US10877795B2 (zh)
EP (1) EP3827341A1 (zh)
CN (1) CN112470128A (zh)
WO (1) WO2020023151A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635534B2 (en) * 2009-08-12 2014-01-21 Ebay Inc. Reservation of resources and deployment of applications using an integrated development environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105210059A (zh) * 2014-04-04 2015-12-30 华为技术有限公司 一种数据处理方法及系统
US9674249B1 (en) * 2013-03-11 2017-06-06 DataTorrent, Inc. Distributed streaming platform for real-time applications
CN107870857A (zh) * 2016-09-28 2018-04-03 阿里巴巴集团控股有限公司 一种针对查询计划生成器进行测试的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2015247375B2 (en) * 2014-04-17 2020-03-26 Ab Initio Technology Llc Integrated monitoring and control of processing environment
US10191881B2 (en) 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9674249B1 (en) * 2013-03-11 2017-06-06 DataTorrent, Inc. Distributed streaming platform for real-time applications
CN105210059A (zh) * 2014-04-04 2015-12-30 华为技术有限公司 一种数据处理方法及系统
CN107870857A (zh) * 2016-09-28 2018-04-03 阿里巴巴集团控股有限公司 一种针对查询计划生成器进行测试的方法及装置

Also Published As

Publication number Publication date
US10877795B2 (en) 2020-12-29
WO2020023151A1 (en) 2020-01-30
US20200034185A1 (en) 2020-01-30
EP3827341A1 (en) 2021-06-02

Similar Documents

Publication Publication Date Title
Crankshaw et al. InferLine: latency-aware provisioning and scaling for prediction serving pipelines
JP3817541B2 (ja) プログラムに基づいた応答時間ベースの作業負荷分配技法
JP3944154B2 (ja) マルチスレッド・サーバ内のスレッド・プールを動的に調整する方法およびシステム
CN109067890B (zh) 一种基于docker容器的CDN节点边缘计算系统
US11394801B2 (en) Resiliency control engine for network service mesh systems
CN113474765A (zh) 用于任务的被管理的虚拟仓库
JP6966432B2 (ja) クラウドファイル処理方法および装置
US11620310B1 (en) Cross-organization and cross-cloud automated data pipelines
US11347550B1 (en) Autoscaling and throttling in an elastic cloud service
US11243811B1 (en) Managing freepool resources using predicted size values
WO2022084784A1 (en) Auto-scaling a query engine for enterprise-level big data workloads
US20210081250A1 (en) Intelligent resource allocation agent for cluster computing
CN112470128A (zh) 数据流执行图的自动调整
US11423031B2 (en) Standing query creation using store query
US10908922B2 (en) Dataflow controller technology for dataflow execution graph
US20190370408A1 (en) Dataflow execution graph modification using intermediate graph
US10262054B2 (en) Database and service upgrade without downtime
US20220100758A1 (en) Autoscaling external function requests
CN110214318B (zh) 多应用时间线上的流数据处理
Wang et al. Accelerating task completion in mobile offloading systems through adaptive restart
US11805067B1 (en) Dynamically generating and managing request queues for processing electronic requests via a shared processing infrastructure
US20240143364A1 (en) Intelligent snapshotting of vms for container orchestration platforms
US20240143565A1 (en) Observability loop
US11907142B2 (en) Configuring polling times for software applications
US20180293159A1 (en) Test components factorization in a build system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination