一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于对算子节点进行扩缩容调整的方法、装置及系统与流程

2021-11-10 03:27:00 来源:中国专利 TAG:


1.本说明书实施例涉及大数据计算技术领域,具体地,涉及用于对算子节点进行扩缩容调整的方法、装置及系统。


背景技术:

2.在目前的流计算系统中,在任务提交运行时会根据默认设置的参数或者用户经验所调配的参数来进行资源分配,然后按照所分配的资源来执行任务计算,直至任务完成或任务停止。
3.对于流计算的任务来说,不同时间段的任务流量会存在变化,比如,任务是统计每天中市内交通的运载量,在一天中的早晚高峰时间段内的运载量明显会高于其他时间段,从而早晚高峰时间段的流数据高于其他时间段。在这种情况下,由于任务流量实时变化,始终利用最初分配的资源进行任务计算,在任务流量较小时,仅需部分资源来执行,这样导致资源浪费,而在任务流量较大时,即使使用分配的所有资源来执行任务,也会导致负载压力大且吞吐能力下降。基于此,针对流计算的任务,需要根据实时流量来调整资源以匹配当前的任务流量。
4.目前的一种资源调整方式,在流计算的任务执行过程中,当任务流量变化时,需要进行相应的扩缩容处理,此时,可以触发一次checkpoint,完成一次任务状态的快照。然后停止任务,根据当前的任务流量来重新分配并发算子等资源,在重新分配完成后重启任务以继续运行。


技术实现要素:

5.鉴于上述,本说明书实施例提供了用于对算子节点进行扩缩容调整的方法、装置及系统。在本说明书实施例提供的技术方案中,通过构造算子节点拓扑图以及在算子接待你拓扑图的各个算子节点之间传输调整标识信息,无需停止任务,从而避免了任务停止后重启需要从上一个checkpoint重复消费一段数据所导致的整体任务流程延迟的问题,且仅算子节点拓扑图所涉及的各个算子节点便能实现扩缩容调整,从而降低了对任务的影响。
6.根据本说明书实施例的一个方面,提供了一种用于对算子节点进行扩缩容调整的方法,包括:响应于根据实时数据流所确定出的待调整并发算子节点,控制节点根据所述待调整并发算子节点的上下游算子节点构造针对所述待调整并发算子节点的算子节点拓扑图;所述控制节点向所述算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使所述有调整的各个算子节点更新连接,其中,所述各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息;所述控制节点向所述算子节点拓扑图中的源算子节点发送调整标识信息;在所述各个算子节点处,根据该算子节点与上下游算子节点的连接来获取所述调整标识信息,以基于所述调整标识信息进行算子节点的状态调整;以及所述控制节点响应于从所述算子节点拓扑图中的尾算子节点接收所述调整标识信息,向所述各个算子节点发送调整完成信
息,以通知所述各个算子节点经过所述扩缩容调整的算子节点拓扑图完成。
7.根据本说明书实施例的另一方面,还提供一种用于对算子节点进行扩缩容调整的方法,由控制节点来执行,所述方法包括:响应于根据实时数据流所确定出的待调整并发算子节点,根据所述待调整并发算子节点的上下游算子节点构造针对所述待调整并发算子节点的算子节点拓扑图;向所述算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使所述有调整的各个算子节点更新连接,其中,所述各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息;向所述算子节点拓扑图中的源算子节点发送调整标识信息,以使所述各个算子节点根据该算子节点与上下游算子节点的连接来获取所述调整标识信息,以基于所述调整标识信息进行算子节点的状态调整;以及响应于从所述算子节点拓扑图中的尾算子节点接收所述调整标识信息,向所述各个算子节点发送调整完成信息,以通知所述各个算子节点经过所述扩缩容调整的算子节点拓扑图完成。
8.根据本说明书实施例的另一方面,还提供一种用于对算子节点进行扩缩容调整的装置,所述装置应用于控制节点,所述装置包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现:响应于根据实时数据流所确定出的待调整并发算子节点,根据所述待调整并发算子节点的上下游算子节点构造针对所述待调整并发算子节点的算子节点拓扑图;向所述算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使所述有调整的各个算子节点更新连接,其中,所述各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息;向所述算子节点拓扑图中的源算子节点发送调整标识信息,以使所述各个算子节点根据该算子节点与上下游算子节点的连接来获取所述调整标识信息,以基于所述调整标识信息进行算子节点的状态调整;以及响应于从所述算子节点拓扑图中的尾算子节点接收所述调整标识信息,向所述各个算子节点发送调整完成信息,以通知所述各个算子节点经过所述扩缩容调整的算子节点拓扑图完成。
9.根据本说明书实施例的另一方面,还提供一种用于对算子节点进行扩缩容调整的系统,所述系统包括控制节点以及由所述控制节点构造出的算子节点拓扑图所包括的多个算子节点,所述控制节点,用于响应于根据实时数据流所确定出的待调整并发算子节点,根据所述待调整并发算子节点的上下游算子节点构造针对所述待调整并发算子节点的算子节点拓扑图;向所述算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使所述有调整的各个算子节点更新连接,其中,所述各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息;各个算子节点,用于根据该算子节点与上下游算子节点的连接来获取所述调整标识信息,以基于所述调整标识信息进行算子节点的状态调整;所述控制节点,还用于响应于从所述算子节点拓扑图中的尾算子节点接收所述调整标识信息,向所述各个算子节点发送调整完成信息,以通知所述各个算子节点经过所述扩缩容调整的算子节点拓扑图完成。
10.根据本说明书实施例的另一方面,还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的用于对算子节点进行扩缩容调整的方法。
11.根据本说明书实施例的另一方面,还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上任一所述的用于对算子节点进行扩缩容调整的方法。
附图说明
12.通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
13.图1示出了根据本说明书实施例的用于对算子进行扩缩容调整的系统的一个示例的方框图。
14.图2示出了根据本说明书实施例的用于对算子进行扩缩容调整的方法的一个示例的流程图。
15.图3示出了根据本说明书实施例的构造算子节点拓扑图的一个示例的流程图。
16.图4示出了根据本说明书实施例的包括待调整并发算子节点的流水线子图的一个示例的示意图。
17.图5a示出了根据本说明书实施例的控制节点构造算子节点拓扑图的一个示例的示意图。
18.图5b示出了根据本说明书实施例的调整标识信息在算子节点拓扑图中的传输路径的一个示例的示意图。
19.图5c示出了根据本说明书实施例的算子节点拓扑图中的尾算子节点向控制节点反馈调整标识信息的一个示例的示意图。
20.图5d示出了根据本说明书实施例的控制节点向算子节点拓扑图中的各个算子节点发送调整完成信息的一个示例的示意图。
21.图5e示出了根据本说明书实施例的控制节点清除待删除算子节点后形成的算子节点拓扑图的一个示例的示意图。
22.图6示出了根据本说明书实施例的热迁移的一个示例的示意图。
23.图7示出了根据本说明书实施例的有状态算子节点扩容时进行状态键组重新分配的一个示例的流程图。
24.图8示出了根据本说明书实施例的有状态算子节点扩容时进行状态键组重新分配的一个示例的示意图。
25.图9示出了根据本说明书实施例的用于对算子节点进行扩缩容调整的方法的一个示例的流程图。
26.图10示出了根据本说明书实施例的用于对算子节点进行扩缩容调整的装置的一个示例的方框图。
27.图11示出了本说明书实施例的用于实现对算子节点进行扩缩容调整方法的电子设备的方框图。
具体实施方式
28.以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求
书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
29.如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
30.在目前的流计算系统中,在任务提交运行时会根据默认设置的参数或者用户经验所调配的参数来进行资源分配,然后按照所分配的资源来执行任务计算,直至任务完成或任务停止。
31.对于流计算的任务来说,不同时间段的任务流量会存在变化,比如,任务是统计每天中市内交通的运载量,在一天中的早晚高峰时间段内的运载量明显会高于其他时间段,从而早晚高峰时间段的流数据高于其他时间段。在这种情况下,由于任务流量实时变化,始终利用最初分配的资源进行任务计算,在任务流量较小时,仅需部分资源来执行,这样导致资源浪费,而在任务流量较大时,即使使用分配的所有资源来执行任务,也会导致负载压力大且吞吐能力下降。基于此,针对流计算的任务,需要根据实时流量来调整资源以匹配当前的任务流量。
32.目前的一种资源调整方式,在流计算的任务执行过程中,当任务流量变化时,需要进行相应的扩缩容处理,此时,可以触发一次checkpoint,完成一次任务状态的快照。然后停止任务,根据当前的任务流量来重新分配并发算子等资源,在重新分配完成后重启任务以继续运行。然而,在这种资源调整方式中,需要将整个任务停止后才能进行资源调整,而任务的整体停止导致的影响面较大,会影响该任务的所有算子节点,此外,还会影响任务的吞吐量和稳定性。
33.鉴于上述,本说明书实施例提供了用于对算子进行扩缩容调整的方法、装置及系统。在该方法中,控制节点响应于根据实时数据流所确定出的待调整并发算子节点,根据待调整并发算子节点的上下游算子节点构造针对待调整并发算子节点的算子节点拓扑图;控制节点向算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使有调整的各个算子节点更新连接,其中,各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息;控制节点向算子节点拓扑图中的源算子节点发送调整标识信息;在各个算子节点处,根据该算子节点与上下游算子节点的连接来获取调整标识信息,以基于调整标识信息进行算子节点的状态调整;以及控制节点响应于从算子节点拓扑图中的尾算子节点接收调整标识信息,向各个算子节点发送调整完成信息,以通知各个算子节点经过扩缩容调整的算子节点拓扑图完成。通过构造算子节点拓扑图以及在算子接待你拓扑图的各个算子节点之间传输调整标识信息,无需停止任务,从而避免了任务停止后重启需要从上一个checkpoint重复消费一段数据所导致的整体任务流程延迟的问题,且仅算子节点拓扑图所涉及的各个算子节点便能实现扩缩容调整,从而降低了对任务的影响。
34.下面结合附图对本说明书实施例提供的用于对算子进行扩缩容调整的方法、装置及系统进行详细说明。
35.图1示出了根据本说明书实施例的用于对算子进行扩缩容调整的系统100的一个示例的方框图。
36.如图1所示,系统100可以包括至少一个控制节点110和多个算子节点120,各个控制节点110与各个算子节点120通信连接。
37.控制节点110可以用于协调和管理各个算子节点120的运行,比如,为任务分配算子节点等资源,管理checkpoint以及控制任务在各个算子节点之间的执行路径等。在系统100包括一个控制节点110时,该控制节点110在系统110中执行上述操作;在系统100包括多个控制节点110时,该多个控制节点110中的一个控制节点110作为主控制节点,用来在系统110中执行上述操作,其他控制节点110作为备用控制节点。在主控制节点故障时,备用控制节点升级成为主控制节点继续支持系统100的正常运行,避免系统100因为主控制节点故障而停工,提高了系统100的高可用性。
38.算子节点120可以是用于执行任务的工作节点,各个算子节点120之间可以并行执行,每个算子节点120可以并行执行多个任务。在一个示例中,每个算子节点120可以具有多个任务槽,每个任务槽表示算子节点120中的一组资源,例如,算子节点120具有4个任务槽,则每个任务槽分配有该算子节点的25%的内存资源。每个任务槽可以运行一个或多个线程,则每个任务槽可以并行执行多个任务。
39.在一个示例中,该系统100可以应用在flink的框架结构中。在flink的框架下,任务客户端可以接受用户的程序代码,然后创建数据流,再将数据流和任务提交给控制节点110,这样,控制节点110可以获取到任务以及任务的数据流。之后,控制节点110分配任务给各个算子节点120,由各个算子节点120具体执行。
40.在本说明书实施例中,控制节点110在获取到任务后,可以根据任务从多个算子节点120中确定用于执行该任务的算子节点。控制节点110再部署用于执行该任务的各个算子节点120的执行顺序,以构成由各个算子节点120构成的pipeline,该pipeline用于完整执行任务。
41.系统100中的控制节点110可以执行本说明书实施例的相关操作,各个算子节点120也可以执行本说明书实施例的相关操作。
42.图2示出了根据本说明书实施例的用于对算子进行扩缩容调整的方法的一个示例200的流程图。
43.如图2所示,在210,响应于根据实时数据流所确定出的待调整并发算子节点,控制节点根据待调整并发算子节点的上下游算子节点构造针对待调整并发算子节点的算子节点拓扑图。
44.在本说明书实施例中,在任务执行过程中,任务的数据流实时提交给用于执行该任务的各个算子节点120形成的pipeline进行处理。数据流的流量可以实时变化,在数据流的流量变化时,由于pipeline的结构不变会影响pipeline中的并发算子节点的数据处理量。在数据流的流量减少时,并发算子节点的数据处理量减少,在并发算子节点的数据处理能力远远超过数据流的流量时,会导致算子节点的资源浪费。在数据流的流量增加时,并发算子节点的数据处理量增加,会导致并发算子节点的负载压力增加,吞吐量降低。基于此,
可以根据数据流的实时变化来判断pipeline中的并发算子节点是否需要调整,该调整包括扩容调整和缩容调整,待进行扩容调整和/或缩容调整的并发算子节点可以确定为待调整并发算子节点。在用于执行完整任务的pipeline中,待调整并发算子节点可以是一个或多个。
45.在本说明书实施例中,并发算子节点可以是运行在pipeline中的一个阶段的算子节点,并发算子节点可以包括一个或多个算子节点。并发算子节点中的多个算子节点可以并行执行,该并行执行的多个算子节点处于pipeline中的同一个阶段。
46.在一个示例中,可以根据实时的数据流与并发算子节点的数据处理能力来判断是否将该并发算子节点确定为待调整并发算子节点。具体地,在数据流的流量减少的情况下,当实时的数据流可以由并发算子节点中的部分算子节点来处理时,则表示可以对该并发算子节点进行缩容调整,以减少至与实时数据流匹配的部分算子节点来处理数据流,此时可以将该并发算子节点确定为待调整并发算子节点。
47.在数据流的流量增加的情况下,当并发算子节点负责压力增加且吞吐量降低,则表示可以对该并发算子节点进行扩容调整,在并发算子节点中增加一定数量的算子节点,以应对处理增加的数据流,此时可以将该并发算子节点确定为待调整并发算子节点。
48.在确定出待调整并发算子节点后,在待调整并发算子节点的调整是扩容调整时,控制节点可以新增算子节点,所新增的算子节点作为待调整并发算子节点中的算子节点,与待调整并发算子节点中的其他算子节点并行执行。然后,控制节点在新增的算子节点中发起一个新的进程,以用于该新增的算子节点执行后续的相关操作。在待调整并发算子节点的调整是缩容调整时,待调整并发算子节点中存在待删除的算子节点,则控制节点可以标记该待删除的算子节点。
49.在确定出待调整并发算子节点后,控制节点可以根据用于执行完整任务的pipeline来确定待调整并发算子节点的上下游算子节点,上下游算子节点可以包括上游算子节点和/或下游算子节点。例如,待调整并发算子节点是pipeline中的源并发算子节点时,可以确定给出该待调整并发算子节点的下游算子节点;待调整并发算子节点是pipeline中的尾并发算子节点时,可以确定给出该待调整并发算子节点的上游算子节点;待调整并发算子节点是pipeline中的中间阶段的并发算子节点时,可以确定出该待调整并发算子节点的上游算子节点和下游算子节点。
50.待调整并发算子节点是扩缩容调整中受影响的算子节点,相应地,待调整并发算子节点的上下游算子节点也是扩缩容调整中受影响的算子节点。例如,当待调整并发算子节点进行缩容调整时,会删除部分算子节点,而该部分算子节点连接的上下游算子节点也需要删除与该部分算子节点之间的连接。又例如,当待调整并发算子节点进行扩容调整时,需要在并发算子节点中增加算子节点,相应地,也需要增加该算子节点与上下游算子节点之间的连接。
51.受影响的待调整并发算子节点和该待调整并发算子节点的上下游算子节点可以构成构造针对待调整并发算子节点的算子节点拓扑图,即,算子节点拓扑图中的各个算子节点都是在此次扩缩容调整中需要进行相应调整的受影响的算子节点。算子节点拓扑图中所包括的算子节点可以是用于完整执行任务的整个pipeline中的部分算子节点,这样,针对待调整并发算子节点的扩缩容调整仅需对算子节点拓扑图中的部分算子节点进行调整,
而不会影响其他算子节点,从而减小了运行任务的影响。
52.图3示出了根据本说明书实施例的构造算子节点拓扑图的一个示例300的流程图。
53.如图3所示,在211,响应于根据实时数据流所确定出的待调整并发算子节点,控制节点可以确定待调整并发算子节点的上游算子节点和/或下游算子节点。
54.在待调整并发算子节点没有上游算子节点时,则可以仅确定出待调整并发算子节点的下游算子节点。例如,待调整并发算子节点是起始算子节点,则可以仅确定出待调整并发算子节点的下游算子节点。在待调整并发算子节点没有下游算子节点时,则可以仅确定出待调整并发算子节点的上游算子节点。例如,待调整并发算子节点是结束算子节点,则可以仅确定出待调整并发算子节点的上游算子节点。在待调整并发算子节点有上游算子节点和下游算子节点时,可以同时确定出待调整并发算子节点的上游算子节点和下游算子节点。
55.在本说明书实施例中,起始算子节点可以是pipeline中最开始执行任务的算子节点,因此,在pipeline中,起始算子节点没有上游算子节点,起始算子节点执行任务的数据流可以从控制节点处获取。结束算子节点可以是pipeline中最后执行任务的算子节点,因此,在pipeline中,结束算子节点没有下游算子节点,结束算子节点可以直接输出该任务的结果。
56.在确定出待调整并发算子节点的上下游算子节点(包括:上游算子节点和/或下游算子节点)后,待调整并发算子节点和上下游算子节点可以是用于构成算子节点拓扑图的算子节点。
57.在212,控制节点根据待调整并发算子节点、上游算子节点和/或下游算子节点之间的连接关系可以确定第一起始算子节点和第一结束算子节点。
58.在待调整并发算子节点、上游算子节点和/或下游算子节点中各个算子节点之间的连接关系是由用于执行任务的所有算子节点所构成的pipeline确定的,由此,可以根据用于执行完整任务的pipeline来确定待调整并发算子节点、上游算子节点和/或下游算子节点中各个算子节点之间连接关系,该各个算子节点按照连接关系可以连接成一个流水线子图,该流水线子图可以是pipeline中的一部分,从而流水线子图的执行过程是整个任务执行过程中的一部分。
59.在得到流水线子图后,可以将流水线子图中的起始算子节点确定为第一起始算子节点,将流水线子图中的结束算子节点确定为第一结束算子节点。
60.图4示出了根据本说明书实施例的包括待调整并发算子节点的流水线子图的一个示例的示意图。如图4所示,待调整并发算子节点包括并发算子节点b和c。并发算子节点b的调整是扩容调整,即,从原本的一个算子节点b1扩展到两个算子节点b1和b2构成的并发算子节点。并发算子节点c的调整是缩容调整,即,从并发的两个算子节点c1和c2缩容至一个算子节点c1。并发算子节点b的上游算子节点包括算子节点a1和a2,下游算子节点包括算子节点c1和c2。并发算子节点c的上游算子节点包括算子节点b1和b2,下游算子节点包括算子节点d1。由此,算子节点a1、a2、b1、b2、c1、c2和d1是构成算子节点拓扑图的算子节点,从而由算子节点a1、a2、b1、b2、c1、c2和d1按照连接关系所构成的流水线子图如图4所示,其中,图4中实线和虚线都表示算子节点之间的连接,实线表示调整前后不变的连接,虚线表示在扩缩容调整过程中需要调整的连接,这里的调整可以包括连接增加和删除。在图4所示的流
水线子图中,算子节点a1和a2是起始算子节点,则可以将算子节点a1和a2确定为第一起始算子节点;算子节点d1是结束算子节点,则可以将算子节点d1确定为第一结束算子节点。
61.在213,控制节点可以确定源算子节点。
62.源算子节点可以是所确定出的待调整并发算子节点、上游算子节点和下游算子节点中的起始算子节点,即,源算子节点可以是所确定出的待调整并发算子节点、上游算子节点和下游算子节点中按照pipeline的执行顺序最先接收到数据流进行处理的算子节点。
63.确定源算子节点的一种方式中,控制节点可以根据第一起始算子节点来确定源算子节点。具体地,在待调整并发算子节点不存在上游算子节点时,控制节点可以将第一起始算子节点直接确定为源算子节点。
64.确定源算子节点的另一种方式中,控制节点可以根据第一起始算子节点、待调整并发算子节点以及上游算子节点来确定源算子节点。
65.具体地,控制节点可以将上游算子节点中除待调整并发算子节点以外的其他算子节点确定为第二起始算子节点,即,可以用以下公式表示为:v
2s
=v
upstream

v
changed
,其中,v
2s
表示为第二起始算子节点,v
upstream
表示上游算子节点,v
changed
表示待调整并发算子节点,v
upstream

v
changed
表示上游算子节点中除待调整并发算子节点以外的其他算子节点。
66.然后,控制节点可以将第一起始算子节点和第二起始算子节点合并确定为源算子节点。即,可以用以下公式表示为:v
source
=v
1s
∪v
2s
,其中,v
1s
表示为第一起始算子节点,v
source
表示源算子节点,v
1s
∪v
2s
表示第一起始算子节点和第二起始算子节点合并。
67.以图4为例,在图4所示的用于构造算子节点拓扑图的各个算子节点中,第一起始算子节点包括算子节点a1和a2,则v
1s
={a1、a2};待调整并发算子节点包括并发算子节点b和c,则v
changed
={b1、b2、c1、c2};并发算子节点b的上游算子节点包括算子节点a1和a2,并发算子节点c的上游算子节点包括算子节点b1和b2,则v
upstream
={a1、a2、b1、b2}。则上游算子节点中除待调整并发算子节点以外的其他算子节点包括{a1、a2},即,可以确定第二起始算子节点包括{a1、a2},v
2s
=v
upstream

v
changed
={a1、a2},将第一起始算子节点和第二起始算子节点合并所得到的源算子节点包括算子节点a1和a2,即,v
source
=v
1s
∪v
2s
={a1、a2}。
68.在214,控制节点可以确定尾算子节点。
69.尾算子节点可以是所确定出的待调整并发算子节点、上游算子节点和下游算子节点中的结束算子节点,即,尾算子节点可以是所确定出的待调整并发算子节点、上游算子节点和下游算子节点中按照pipeline的执行顺序最后接收到数据流进行处理的算子节点。
70.确定尾算子节点的一种方式中,控制节点可以根据第一结束算子节点来确定尾算子节点。具体地,在待调整并发算子节点不存在下游算子节点时,控制节点可以将第一结束算子节点直接确定为尾算子节点。
71.确定尾算子节点的另一种方式中,控制节点根据第一结束算子节点、待调整并发算子节点以及下游算子节点来确定尾算子节点。
72.具体地,控制节点可以将下游算子节点中除待调整并发算子节点以外的其他算子节点确定为第二结束算子节点,即,可以用以下公式表示为:v
2e
=v
downstream

v
changed
,其中,v
2e
表示为第二结束算子节点,v
downstream
表示下游算子节点,v
changed
表示待调整并发算子节点,v
downstream

v
changed
表示下游算子节点中除待调整并发算子节点以外的其他算子节点。
73.然后,控制节点可以将第一结束算子节点和第二结束算子节点合并确定为尾算子
节点。即,可以用以下公式表示为:v
sink
=v
1e
∪v
2e
,其中,v
1e
表示为第一结束算子节点,v
sink
表示尾算子节点,v
1e
∪v
2r
表示第一结束算子节点和第二结束算子节点合并。
74.以图4为例,在图4所示的用于构造算子节点拓扑图的各个算子节点中,第一结束算子节点包括算子节点d1,则v
1e
={d1};待调整并发算子节点包括并发算子节点b和c,则v
changed
={b1、b2、c1、c2};并发算子节点b的下游算子节点包括算子节点c1和c2,并发算子节点c的下游算子节点包括算子节点d1,则v
downstream
={c1、c2、d1}。则下游算子节点中除待调整并发算子节点以外的其他算子节点包括{d1},即,可以确定第二结束算子节点包括{d1},v
2e
=v
downstream

v
changed
={d1},将第一结束算子节点和第二结束算子节点合并所得到的尾算子节点包括算子节点d1,即,v
sink
=v
1r
∪v
2e
={d1}。
75.需要说明的是,213的操作和214的操作可以不限定执行顺序。可以先执行213的操作再执行214的操作,也可以先执行214的操作再执行213的操作,还可以同时执行213和214的操作。
76.在确定出源算子节点和尾算子节点后,在215,控制节点可以构造算子节点拓扑图。
77.在一种构造方式中,在待调整并发算子节点同时有上游算子节点和下游算子节点时,控制节点可以基于源算子节点、尾算子节点、待调整并发算子节点、下游算子节点和上游算子节点构造算子节点拓扑图。具体地,控制节点可以将源算子节点、尾算子节点、待调整并发算子节点、下游算子节点和上游算子节点按照pipeline的执行顺序分别排布,并将各个算子节点分别与各自的上下游算子节点之间布置连接。
78.当待调整并发算子节点中包括有新增算子节点时,控制节点可以将该新增算子节点与该新增算子节点的上下游算子节点中的调整后的算子节点拓扑图中存在的算子节点之间布置连接,其中,调整后的算子节点拓扑图中存在的算子节点可以包括调整前后都存在的算子节点和新增的算子节点,以图4为例,新增算子节点b2的上下游算子节点中的算子节点a1、a2和c1是调整前后都始终存在的算子节点,则可以分别在新增算子节点b2与算子节点a1、a2和c1之间布置连接。而当新增算子节点的上下游算子节点中存在待删除算子节点时,该待删除算子节点不会存在于调整后的算子节点拓扑图中,因此,控制节点可以在该新增算子节点与该待删除算子节点之间不布置连接。
79.当待调整并发算子节点中包括有待删除算子节点时,控制节点可以将该待删除算子节点与该待删除算子节点的上下游算子节点中的调整前的算子节点拓扑图中存在的算子节点之间布置连接,而当该待删除算子节点的上下游算子节点中存在新增算子节点时,控制节点可以在该删除算子节点与该新增算子节点之间不布置连接。以图4为例,待删除算子节点c2的上下游算子节点中的算子节点b1和d1是调整前的算子节点拓扑图中存在的算子节点,则控制节点可以在待删除算子节点c2与算子节点b1和d1之间布置连接。而算子节点b2是待删除算子节点c2的上下游算子节点中的新增算子节点,则控制节点可以在算子节点b2与待删除算子节点c2之间不布置连接。
80.在另一种构造方式中,在待调整并发算子节点不存在上游算子节点时,则控制节点可以基于源算子节点、尾算子节点、待调整并发算子节点和下游算子节点构造算子节点拓扑图。在另一种构造方式中,在待调整并发算子节点不存在下游算子节点时,则控制节点可以基于源算子节点、尾算子节点、待调整并发算子节点和上游算子节点构造算子节点拓
扑图。
81.图5a示出了根据本说明书实施例的控制节点构造算子节点拓扑图的一个示例的示意图。如图5a所示,m表示控制节点,图5a中用于构造算子节点拓扑图的算子节点是上述图4所示的示例中的待调整并发算子节点以及上下游算子节点,控制节点所构造出的针对待调整并发算子节点的算子节点拓扑图如图5a所示。图5a中的连接线表示两个算子节点之间的连接,相互连接的两个算子节点之间可以通信。在图5a中,实线的连接线可以表示扩缩容调整完成后的算子节点拓扑图中存在的连接,虚线的连接线可以表示待删除的连接,该待删除的连接存在于调整前的拓扑图中,而在调整后的算子节点拓扑图中则不存在。
82.通过构造出算子节点拓扑图,控制节点可以将需要调整的并发算子节点确定出,用来构造算子节点拓扑图,在后续的扩缩容调整中仅需对算子节点拓扑图进行操作,减少了扩缩容调整的影响面,从而降低对执行任务的影响。
83.回到图2,在控制节点构造出针对待调整并发算子节点的算子节点拓扑图后,控制节点可以确定算子节点拓扑图中各个算子节点在算子节点拓扑图中的位置,各个算子节点在算子节点拓扑图中所连接的上下游算子节点等信息。
84.在220,控制节点可以向算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使有调整的各个算子节点更新连接。
85.在本说明书实施例中,在进行扩缩容调整前已存在的算子节点按照形成的pipeline来执行任务,因此,调整前已存在的各个算子节点可以确定自身的上下游算子节点,并与上下游算子节点之间建立有通信连接。在控制节点所构造的算子节点拓扑图中,根据扩缩容调整的需求存在新增的算子节点和/或待删除的算子节点,从而算子节点拓扑图相比于调整前的算子节点构成的拓扑图有更新。
86.控制节点可以仅向算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,有调整的算子节点可以包括新增的算子节点、待删除的算子节点、通信连接有增加或者减少的调整前后始终存在的算子节点等。
87.有调整的各个算子节点的图状态更新信息是该算子节点在扩缩容调整前后存在变化的信息,图状态更新信息可以包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息。
88.上下游算子节点调整信息可以包括上下游算子节点中存在新增的算子节点和/或待删除的算子节点,在进行扩容调整时,可以存在新增的算子节点,在进行缩容调整时,可以存在待删除的算子节点。在算子节点的图状态更新信息中,算子节点的上下游算子节点更新信息可以表征上下游算子节点中新增和/或待删除的算子节点。
89.算子节点的连接调整信息可以表示该算子节点需要调整的与其他算子节点的连接信息。在一个示例中,针对扩容调整,连接调整信息可以包括新增的算子节点和上下游算子节点中除待删除的算子节点以外的其他各个算子节点之间新增的连接,该其他各个算子节点是调整前后始终都存在的算子节点。以图5a中新增的算子节点b2为例,在新增的算子节点b2的上下游算子节点中,算子节点c2是待删除的算子节点,则除该算子节点c2以外的其他算子节点包括算子节点a1、a2和c1,该算子节点a1、a2和c1是调整前后始终存在的算子节点,则连接调整信息可以包括新增的算子节点b2分别与算子节点a1、a2和c1之间的新增连接,而新增的算子节点b2不会与待删除的算子节点c2之间建立连接。
90.针对缩容调整,连接调整信息可以包括待删除的算子节点和上下游算子节点中除新增的算子节点以外的其他各个算子节点之间待删除的连接,该其他各个算子节点包括调整前已存在的算子节点。以图5a中待删除的算子节点c2为例,在待删除的算子节点c2的上下游算子节点中,算子节点b2是新增的算子节点,算子节点b1和d1是调整前已存在的算子节点。从而,连接调整信息可以包括待删除的算子节点c2分别与算子节点b1和d1之间的连接待删除。
91.在所构造的算子节点拓扑图中的各个算子节点接收到控制节点发送的图状态信息后,各个算子节点可以确定自身在所构造的算子节点拓扑图中连接的上下游算子节点,以及是否存在需要删除的连接。各个算子节点根据所接收到的图状态更新信息来更新与各自的上下游算子节点的连接,更新连接的方式包括新增连接以及标记待删除的连接。在各个算子节点更新连接后,可以形成按序的子pipeline,该子pipeline可以是上述用于执行整个任务的pipeline的其中一部分。
92.接着,在230,控制节点可以向算子节点拓扑图中的源算子节点发送调整标识信息。调整标识信息可以按照算子节点拓扑图构成的pipeline依次传输,直至到达算子节点拓扑图中的尾算子节点。
93.在240,在各个算子节点处,根据该算子节点所接收到的图状态信息来获取调整标识信息,以基于调整标识信息进行算子节点的状态调整。
94.在本说明书实施例中,调整标识信息可以是携带指定标识的信息,该指定标识用于在各个算子节点中区分调整前后的状态。当算子节点接收到调整标识信息时,表示该算子节点可以进行调整,针对调整标识信息之前的数据流,该算子节点可以按照调整前的方式进行处理,而对于调整表示信息之后的数据流,该算子节点可以按照调整后的方式进行处理。当算子节点发出调整标识信息时,可以表示该算子节点已完成调整;当算子节点从上游算子节点接收到调整标识信息时,表示该算子节点可以确定该上游算子节点已完成调整,从而该算子节点可以从该上游算子节点接收该上游算子节点按照调整后的方式处理的数据流。
95.图5b示出了根据本说明书实施例的调整标识信息在算子节点拓扑图中的传输路径的一个示例的示意图。如图5b所示,各个算子节点之间连接所示的箭头即为调整标识信息的传输方向。控制节点将调整标识信息分别发送给源算子节点a1和a2,源算子节点a1和a2在调整完成后分别再发送给算子节点b1和b2,比如,当算子节点b1接收到源算子节点a1发送的调整标识信息,该算子节点b1可以确定该源算子节点a1已完成调整。新增的算子节点b2完成调整后再将调整标识信息发送给算子节点c1,算子节点b1完成调整后再将调整标识信息发送给算子节点c1和待删除的算子节点c2,算子节点c1和待删除的算子节点c2在各自完成调整后分别再将调整标识信息发送给尾算子节点d1。
96.在一个示例中,针对算子节点拓扑图,当存在缩容调整时,待调整并发算子节点中存在待删除的算子节点。在调整标识信息在算子节点拓扑图的传递过程中,在待删除的算子节点处,可以从该算子节点连接的上游算子节点接收调整标识信息,此时,该待删除的算子节点可以确定该上游算子节点已完成调整,从而该待删除的算子节点可以断开与该上游算子节点之间的连接。该待删除的算子节点在完成调整后,可以继续将调整标识信息发送给连接的下游算子节点。
97.在下游算子节点处,在接收到该待删除的算子节点发送的调整标识信息后,该下游算子节点可以确定该待删除的算子节点已完成调整,从而该下游算子节点可以断开与该待删除的算子节点之间的连接。
98.在每个算子节点处,需要收集齐该算子节点连接的所有上游算子节点发送的调整标识信息后,才可以在本地进行调整,在自身调整完成后可以向下游算子节点发送调整标识信息。
99.在本说明书实施例中,调整标识信息可以传递至算子节点拓扑图中的尾算子节点处。尾算子节点根据所连接的上游算子节点,可以从每个上游算子节点接收调整标识信息,在尾算子节点收集齐所连接的所有上游算子节点发送的调整标识信息时,可以将收集齐的调整标识信息反馈给控制节点。图5c示出了根据本说明书实施例的算子节点拓扑图中的尾算子节点向控制节点反馈调整标识信息的一个示例的示意图。
100.在250,控制节点响应于从算子节点拓扑图中的尾算子节点接收调整标识信息,向各个算子节点发送调整完成信息,以通知各个算子节点经过扩缩容调整的算子节点拓扑图完成。
101.当控制节点从算子节点拓扑图中的尾算子节点接收调整标识信息时,表示调整标识信息已在算子节点拓扑图中按照子pipeline的顺序依次传递完成,算子节点拓扑图中的各个算子节点也各自完成调整。算子节点拓扑图中的所有算子节点都完成调整,则可以确定针对整个算子节点拓扑图的调整完成。从而,当控制节点从算子节点拓扑图中的尾算子节点接收调整标识信息时,可以确定针对整个算子节点拓扑图的调整完成。
102.在控制节点可以确定针对整个算子节点拓扑图的调整完成时,控制节点可以向各个算子节点发送调整完成信息,其中,调整完成信息用于表示针对算子节点拓扑图的扩缩容调整已完成。图5d示出了根据本说明书实施例的控制节点向算子节点拓扑图中的各个算子节点发送调整完成信息的一个示例的示意图。
103.各个算子节点接收到调整完成信息时,可以确定针对整个算子节点拓扑图的调整完成,从而可以按照调整后的算子节点拓扑图所表示的流水线进行数据流处理。算子节点拓扑图中的各个算子节点按照调整后的算子节点拓扑图所表示的排布方式与pipeline中的其他算子节点结合形成经过扩缩容调整后的pipeline。
104.在一个示例中,当扩缩容调整中包括缩容调整时,在算子节点拓扑图完成后,经过缩容调整的待删除算子节点与其他算子节点的连接均已断开,此时,控制节点可以将该待删除的算子节点清除,仅保留经过调整后的算子节点拓扑图中的各个算子节点。图5e示出了根据本说明书实施例的控制节点清除待删除算子节点后形成的算子节点拓扑图的一个示例的示意图。
105.通过本说明书实施例提供的上述扩缩容调整方法,可以在不需要停止任务的情况下完成扩缩容调整,降低了对任务执行的影响。此外,相比于执行整个任务的pipeline,算子节点拓扑图中的算子节点可以仅是部分pipeline中的部分算子节点,在这种情况下,仅需对算子节点拓扑图中的算子节点进行操作便能实现扩缩容调整,降低了对pipeline的影响。
106.在本说明书实施例的一个示例中,本说明书实施例提供的扩缩容方法可以应用于算子节点的热迁移操作中。热迁移是使用新增的算子节点来替换已存在的算子节点,因此,
相当于在一个并发算子节点中通过扩容操作来新增算子节点,再通过缩容操作来删除对应的算子节点。
107.图6示出了根据本说明书实施例的热迁移的一个示例的示意图。如图6所示,左图所示的状态是热迁移操作前各个算子节点构成的拓扑图。在该示例中,需要对算子节点c2进行热迁移,则控制节点可以针对并发算子节点c进行扩容操作,即,新增一个算子节点c3,新增的算子节点c3与上游算子节点b1和下游算子节点d1建立连接。控制节点还针对算子节点c2进行缩容操作,控制节点向算子节点c2发送图状态更新信息以告知算子节点c2是待删除的算子节点。此时的算子节点拓扑图如中图所示,虚线表示的连接是待删除的连接。
108.控制节点向中图所示的算子节点拓扑图发送调整标识信息,以完成针对算子节点拓扑图的调整,调整后的算子节点c2删除,算子节点c2的连接也删除,从而可以得到调整后的算子节点拓扑图,如图6中的右图所示。
109.通过采用本说明书实施例提供的扩缩容调整方式来进行热迁移,避免在热迁移过程中停止任务,在任务的执行过程中完成热迁移,降低了热迁移操作对任务的影响。
110.图7示出了根据本说明书实施例的有状态算子节点扩容时进行状态键组重新分配的一个示例700的流程图。
111.在该示例中,进行扩容调整的待调整并发算子节点可以包括有状态并发算子节点,有状态并发算子节点可以包括至少一个有状态算子节点。有状态算子节点维护有算子状态,有状态算子节点可以以状态键值(key)的形式进行存储,每个状态键值用于维护一个状态实例。在每个有状态算子节点中,状态键值可以以状态键组(key group)的形式进行存储,每个状态键组可以包括至少一个状态键值。
112.在该示例中,有状态并发算子节点可以包括扩容调整前已存在的第一有状态算子节点和新增的第二有状态算子节点。第一有状态算子节点可以是扩容调整前后始终存在的算子节点。
113.如图7所示,在710,控制节点在进行扩容调整时,可以在待调整并发算子节点中增加新的第二有状态算子节点,然后,确定待分配给各个第一有状态算子节点和各个第二有状态算子节点的第一状态键组,第一状态键组是待调整并发算子节点中的各个有状态算子节点经过调整后的键组。
114.然后,在720,当从有状态并发算子节点连接的上游算子节点接收到调整标识信息时,有状态并发算子节点中的各个有状态算子节点可以进行调整,该调整包括状态键组的重新分配。
115.在每个第一有状态算子节点处,本地存储有原始状态键组。每个第一有状态算子节点的原始状态键组是扩容调整前所具有的状态键组。状态键组的重新分配是在各个第一有状态算子节点的原始状态键组的基础上进行重新分配的。
116.在各个第一有状态算子节点处,可以将该第一有状态算子节点的原始状态键组与所确定的各个第一状态键组进行匹配,并将匹配度最高的第一状态键组确定为第二状态键组。每个第一有状态算子节点可以确定出匹配度最高的第二状态键组。匹配的方式可以是比较具有相同状态键值的数量,具有相同状态键值的数量越多,则匹配度越高,具有相同状态键值的数量越少,则匹配度越低。
117.在确定出多个第二状态键组后,每个第二状态键组对应有一个有状态算子节点。
在730,在各个第二状态键组对应的有状态算子节点处,可以获取与该第二状态键组对应匹配的原始状态键组的状态数据。在一个示例中,当第二状态键组对应的有状态算子节点的原始状态键组与该有状态算子节点的第二状态键组的匹配度最高时,该有状态算子节点可以直接从本地获取原始状态键组的状态数据。在另一个示例中,在并发算子节点所包括的各个算子节点之间可以相互访问对方的状态数据,当第二状态键组对应的有状态算子节点的原始状态键组与其他有状态算子节点的第二状态键组的匹配度最高时,该其他有状态算子节点可以访问该有状态算子节点的状态数据,从而可以从该有状态算子节点处获取对应匹配的原始状态键组的状态数据。
118.例如,第二状态键组是keygroup(1,2),该第二状态键组对应的有状态算子节点是第一有状态算子节点a1,第二有状态算子节点a2的原始状态键组是keygroup(1,2,3),且该原始状态键组与第一有状态算子节点a1的第二状态键组的匹配度最高,则第一有状态算子节点a1可以从第二有状态算子节点a2获取原始状态键组keygroup(1,2,3)对应的状态数据。
119.在一个示例中,在第二状态键组对应的有状态算子节点所获取的原始状态键组包括有除第二状态键组中的键组以外的其他状态键值时,该有状态算子节点可以将不需要的其他状态键值对应的状态数据删除,并更新状态键组,以使得所更新的状态键组与第二状态键组相同。
120.在740,针对除第二状态键组以外的其他各个第一状态键组对应的有状态算子节点,该有状态算子节点的第一状态键组没有和任何一组原始状态键值达到匹配度最高。
121.在该有状态算子节点接收到调整完成信息时,该有状态算子节点可以确定其他算子节点的扩缩容调整已完成,则该有状态算子节点从有状态并发算子节点中的其他算子节点获取所需的状态键值对应的状态数据,以形成第一状态键组。一个有状态算子节点可以从一个或多个其他算子节点中获取所需的状态键值对应的状态数据。例如,一个有状态算子节点的第一状态键组包括有多个状态键值,该有状态算子节点可以从一个有状态算子节点获取多个状态键值中的部分状态键值,然后可以从另一个有状态算子节点获取多个状态键值中的另一部分状态键值,两部分状态键值可以构成状态键值对应的状态数据。
122.在一个示例中,针对各个第二键组对应的有状态算子节点,所获取的原始状态键组可以包括该第二键组中的部分状态键值,另一部分状态键值对应的状态数据需要从有状态并发算子节点中的其他算子节点获取。则在该有状态算子节点接收到调整完成信息时,从有状态并发算子节点中的其他算子节点获取该原始状态键组中未包括的状态键值对应的状态数据,以构成该第二状态键组。
123.图8示出了根据本说明书实施例的有状态算子节点扩容时进行状态键组重新分配的一个示例800的示意图。
124.如图8所示,待调整编发算子节点a包括扩容调整前已存在的第一有状态算子节点a1和a2,以及新增的第二有状态算子节点a3。第一有状态算子节点a1的原始状态键组为keygroup a
11
,keygroup a
11
中的状态键值包括状态键值1、2和3。第一有状态算子节点a2的原始状态键组为keygroup a
21
,keygroup a
21
中的状态键值包括状态键值4、5和6。图8所示的第一阶段即为扩容调整前的阶段,各个第一有状态算子节点a1和a2保持原始状态键组。
125.在开始进行状态键组重新分配时,控制节点确定待分配给第一有状态算子节点a1
的第一状态键组为keygroup a
13
,keygroup a
13
中的状态键值包括状态键值1和2。待分配给第一有状态算子节点a2的第一状态键组为keygroup a
23
,keygroup a
23
中的状态键值包括状态键值3和4。待分配给第二有状态算子节点a3的第一状态键组为keygroup a
33
,keygroup a
33
中的状态键值包括状态键值5和6。
126.然后,当从有状态并发算子节点连接的上游算子节点接收到调整标识信息时,在各个第一有状态算子节点(即,a1和a2)处,将各个第一有状态算子节点的原始状态键组与所确定的各个第一状态键组进行匹配,并将匹配度最高的第一状态键组确定为第二状态键组。具体地,在第一有状态算子节点a1处,可以将原始状态键组keygroup a
11
分别与第一状态键组为keygroup a
13
、keygroup a
23
和keygroup a
33
进行匹配,可以确定keygroup a
11
与keygroup a
13
之间有两个状态键值相同,则keygroup a
11
与keygroup a
13
的匹配度最高,可以将keygroup a
13
确定为第二状态键组。在第一有状态算子节点a2处,可以将原始状态键组keygroup a
21
分别与第一状态键组为keygroup a
13
、keygroup a
23
和keygroup a
33
进行匹配,可以确定keygroup a
21
与keygroup a
33
之间有两个状态键值相同,则keygroup a
21
与keygroup a
33
的匹配度最高,可以将keygroup a
33
确定为第二状态键组。
127.在确定第二状态键组后,第二状态键组keygroup a
13
对应的第一有状态算子节点a1可以从本地获取原始状态键组keygroup a
11
的状态数据,并将所获取的keygroup a
11
作为keygroup a
12
。另一第二状态键组keygroup a
33
对应的第一有状态算子节点a3可以从第一有状态算子节点a2获取原始状态键组keygroup a
21
的状态数据,并将所获取的keygroup a
21
作为keygroup a
32

128.对于第一有状态算子节点a2,在第一有状态算子节点a2接收到调整完成信息时,可以从第一有状态算子节点a1和第二有状态算子节点a3获取所需的状态键值对应的状态数据,以形成第一状态键组。具体地,第一有状态算子节点a2需要状态键值3对应的状态数据和状态键值4对应的状态数据来形成状态键组keygroup a
22
。在第一有状态算子节点a1和第二有状态算子节点a3的状态调整完成后,第一有状态算子节点a2可以从第一有状态算子节点a1处获取状态键值3的状态数据,从第二有状态算子节点a3处获取状态键值4的状态数据,然后将状态键值3和状态键值4构成状态键组keygroup a
22
。此时,完成第二阶段。
129.在第三阶段,第一有状态算子节点a1可以将状态键值3的状态数据删除,以得到仅包括状态键值1和2的状态键组keygroup a
13
。第二有状态算子节点a3可以将状态键值4的状态数据删除,以得到仅包括状态键值5和6的状态键组keygroup a
33

130.通过上述状态键组重新分配的示例,并发算子节点中的各个算子节点之间可以相互查询对方的状态数据,从而可以直接从本地或其他并发算子节点中获取所需的状态数据,避免对状态数据进行拆分和合并,提高了状态键组重新分配的效率。
131.图9示出了根据本说明书实施例的用于对算子节点进行扩缩容调整的方法的一个示例900的流程图。
132.图9所示的扩缩容调整方法可以由控制节点来执行。如图9所示,在910,响应于根据实时数据流所确定出的待调整并发算子节点,根据所述待调整并发算子节点的上下游算子节点构造针对所述待调整并发算子节点的算子节点拓扑图。
133.在920,向算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使有调整的各个算子节点更新连接,其中,各个算子节点的图状态更新信息
包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息。
134.在930,向算子节点拓扑图中的源算子节点发送调整标识信息,以使各个算子节点根据该算子节点与上下游算子节点的连接来获取调整标识信息,以基于调整标识信息进行算子节点的状态调整。
135.在940,响应于从算子节点拓扑图中的尾算子节点接收调整标识信息,向各个算子节点发送调整完成信息,以通知各个算子节点经过扩缩容调整的算子节点拓扑图完成。
136.此外,控制节点还可以执行本说明书实施例中控制节点所执行的其他操作。
137.图10示出了根据本说明书实施例的用于对算子节点进行扩缩容调整的装置(以下称为扩缩容调整装置1000)的一个示例的方框图。
138.扩缩容调整装置1000可以应用于控制节点。如图10所示,扩缩容调整装置1000包括:拓扑图构造单元1010、图状态更新信息发送单元1020、调整标识信息发送单元1030和调整完成信息发送单元1040。
139.拓扑图构造单元1010,被配置为响应于根据实时数据流所确定出的待调整并发算子节点,根据待调整并发算子节点的上下游算子节点构造针对待调整并发算子节点的算子节点拓扑图。
140.图状态更新信息发送单元1020,被配置为向算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使有调整的各个算子节点更新连接,其中,各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息。
141.调整标识信息发送单元1030,被配置为向算子节点拓扑图中的源算子节点发送调整标识信息,以使各个算子节点根据该算子节点与上下游算子节点的连接来获取调整标识信息,以基于调整标识信息进行算子节点的状态调整。
142.调整完成信息发送单元1040,被配置为响应于从算子节点拓扑图中的尾算子节点接收调整标识信息,向各个算子节点发送调整完成信息,以通知各个算子节点经过扩缩容调整的算子节点拓扑图完成。
143.在一个示例中,拓扑图构造单元1010还可以被配置为:响应于根据实时数据流所确定出的待调整并发算子节点,确定待调整并发算子节点的上游算子节点和/或下游算子节点;根据待调整并发算子节点、上游算子节点和/或下游算子节点之间的连接关系确定第一起始算子节点和第一结束算子节点;根据第一起始算子节点、待调整并发算子节点以及上游算子节点,或者根据第一起始算子节点来确定源算子节点;根据第一结束算子节点、待调整并发算子节点以及下游算子节点,或者根据第一结束算子节点来确定尾算子节点;以及基于源算子节点、尾算子节点、待调整并发算子节点、上游算子节点和/或下游算子节点构造算子节点拓扑图。
144.在一个示例中,拓扑图构造单元1010还可以被配置为:将上游算子节点中除待调整并发算子节点以外的其他算子节点确定为第二起始算子节点;以及控制节点将第一起始算子节点和第二起始算子节点合并确定为源算子节点;或者,在待调整并发算子节点不存在上游算子节点时,将第一起始算子节点确定为源算子节点。
145.在一个示例中,拓扑图构造单元1010还可以被配置为:将下游算子节点中除待调整并发算子节点以外的其他算子节点确定为第二结束算子节点;以及控制节点将第一结束
算子节点和第二结束算子节点合并为尾算子节点;或者,在待调整并发算子节点不存在下游算子节点时,将第一结束算子节点确定为尾算子节点。
146.以上参照图1到图10,对根据本说明书实施例的用于对算子节点进行扩缩容调整的方法、装置及系统的实施例进行了描述。
147.本说明书实施例的用于对算子节点进行扩缩容调整的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于对算子节点进行扩缩容调整的装置例如可以利用电子设备实现。
148.图11示出了本说明书实施例的用于实现对算子节点进行扩缩容调整方法的电子设备1100的方框图。
149.如图11所示,电子设备1100可以包括至少一个处理器1110、存储器(例如,非易失性存储器)1120、内存1130和通信接口1140,并且至少一个处理器1110、存储器1120、内存1130和通信接口1140经由总线1150连接在一起。至少一个处理器1110执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
150.在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1110:响应于根据实时数据流所确定出的待调整并发算子节点,根据待调整并发算子节点的上下游算子节点构造针对待调整并发算子节点的算子节点拓扑图;向算子节点拓扑图中有调整的各个算子节点发送针对该算子节点的图状态更新信息,以使有调整的各个算子节点更新连接,其中,各个算子节点的图状态更新信息包括该算子节点的上下游算子节点调整信息以及针对该算子节点的连接调整信息;向算子节点拓扑图中的源算子节点发送调整标识信息,以使各个算子节点根据该算子节点与上下游算子节点的连接来获取调整标识信息,以基于调整标识信息进行算子节点的状态调整;以及响应于从算子节点拓扑图中的尾算子节点接收调整标识信息,向各个算子节点发送调整完成信息,以通知各个算子节点经过扩缩容调整的算子节点拓扑图完成。
151.应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1110进行本说明书的各个实施例中以上结合图1

10描述的各种操作和功能。
152.根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1

10描述的各种操作和功能。
153.具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
154.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
155.本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如java、scala、smalltalk、eiffel、jade、emerald、c 、c#、vb、net以及python等,常规程序化编程语言如c语言、visual basic 2003、perl、cobol2002、
php以及abap,动态编程语言如python、ruby和groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(saas)。
156.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd

rom、cd

r、cd

rw、dvd

rom、dvd

ram、dvd

rw、dvd

rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
157.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
158.上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
159.在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
160.以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
161.本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献