CN116529719A - 流应用程序中退化处理元素的动态更换 - Google Patents

流应用程序中退化处理元素的动态更换 Download PDF

Info

Publication number
CN116529719A
CN116529719A CN202180073388.6A CN202180073388A CN116529719A CN 116529719 A CN116529719 A CN 116529719A CN 202180073388 A CN202180073388 A CN 202180073388A CN 116529719 A CN116529719 A CN 116529719A
Authority
CN
China
Prior art keywords
temporary
tuple flow
computer
upstream
node
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
CN202180073388.6A
Other languages
English (en)
Inventor
D·贝赫
M·J·布兰森
A·T·斯托尔曼
R·K·克拉迪克
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN116529719A publication Critical patent/CN116529719A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/04Billing or invoicing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Abstract

提供了一种计算机实现的方法。该方法包括在运行时监视分布式计算应用程序条件的发生,其中所述条件包括处理元素(PE)上发生退化条件。所述方法还包括在运行时在第二节点上启动临时PE,同时保持PE的运行时操作。所述方法基于与计算资源相关联的性能度量将所述PE的操作与所述临时PE的操作进行比较。所述方法连接所述临时PE以用从所述临时PE到下游PE的元组流替换从所述PE到所述下游PE的元组流。

Description

流应用程序中退化处理元素的动态更换
背景技术
本发明一般涉及用于流计算的方法、系统和计算机程序产品。更具体地,本发明涉及用于动态替换流应用程序中的处理元素的方法、系统和计算机程序产品。
数据库系统通常被配置为将存储数据的过程与访问、操纵或使用存储在数据库中的数据分开。在传统的静态数据库系统中,数据首先在内存中存储和索引,然后再进行后续查询和分析。通常,此类静态数据库系统并不总是适合执行实时处理和分析流数据。例如,静态数据库系统有时无法高效或实时地存储、索引和分析大量流数据。
近年来出现了基于流的计算和基于流的数据库计算作为数据库系统的开发技术。在流应用程序中,通过网络相互连接的节点允许数据从一个节点流向下一个节点。此类数据流将数据块封装在“元组”中。元组是一种或多种不同数据类型的数据块,例如整数、浮点数、布尔值或字符串数据。元组的组按顺序传输,被称为“流”或“数据流”。具体地,可能发生数据基本上连续到达,作为对应于进行中或连续事件的数据点流。
例如,表示特定股票价格的数据通常可能在一天中波动,并且数据流管理系统可以连续接收更新的股票价格,例如,以相等的时间间隔或随着价格变化。此类数据流的其他示例包括传感器收集的温度或其他环境数据、计算机网络分析、在医院收集的患者健康数据或描述制造过程或其他业务过程的数据。
发明内容
说明性实施例提供流式应用程序中退化处理元素(degarding processingelements)的动态替换。一个实施例包括在运行时监视分布式计算应用程序条件的发生,其中分布式计算应用程序包括第一节点,所述第一节点包括处理元素(PE),所述PE从上游PE接收第一元组流,在所述第一元组流节点上执行定义的过程并产生第二元组流,以及将所述第二元组流传输到下游PE,其中所述条件包括所述PE上发生退化条件。该实施例还包括在运行时在第二节点上启动第一临时PE,同时保持所述PE的运行时操作,其中所述第一临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行定义的过程。该实施例还包括基于与计算资源相关联的性能度量将所述PE的操作与所述第一临时PE的操作进行比较。该实施例还包括连接所述第一临时PE以用从所述第一临时PE到所述下游PE的第三元组流替换从所述PE到所述下游PE的第二元组流。该方面的其他实施例包括相应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每个被配置为执行该实施例的动作。
一个实施例包括一种计算机可用程序产品。计算机可用程序产品包括计算机可读存储介质和存储在存储介质上的程序指令。
一个实施例包括计算机系统。所述计算机系统包括处理器、计算机可读存储器和计算机可读存储介质,以及存储在存储介质上供处理器通过存储器执行的程序指令。
附图说明
被认为是本发明的特征的新颖特征在所附权利要求中阐述。然而,本发明本身,以及优选的使用模式、进一步的目的和优点,将在结合附图阅读时参考以下说明性实施例的详细描述得到最好的理解,其中:
图1示出了可以在其中实现说明性实施例的数据处理系统网络的框图;
图2示出了可以在其中实现说明性实施例的数据处理系统的框图;
图3示出了根据说明性实施例的示例流应用程序环境的框图;
图4示出了根据说明性实施例的示例计算节点的框图;
图5示出了根据说明性实施例的示例管理系统的框图;
图6示出了根据说明性实施例的示例临时PE分析模块的框图;
图7示出了根据说明性实施例的用于流计算应用程序的运算符图的框图;
图8示出了根据说明性实施例的具有临时PE的流计算应用程序的运算符图的框图;
图9描绘了根据说明性实施例的示例动态PE替换过程的流程图;
图10示出了根据说明性实施例的示例临时PE故障排除过程的流程图;
图11示出了根据说明性实施例的示例临时PE故障排除过程的流程图;以及
图12示出了根据说明性实施例的示例临时PE故障排除过程的流程图。
具体实施方式
基于流的计算和基于流的数据库计算正在成为数据库系统的发展技术。可用的产品允许用户创建在流数据到达数据库文件之前处理和查询流数据的应用程序。借助这项新兴技术,用户可以指定处理逻辑以在“飞行中”时应用于入站数据记录,并在非常短的时间内(通常是几分之一秒)获得结果。使用这种类型的处理构建应用程序开辟了一种新的编程范例,它将允许开发范围广泛的创新应用程序、系统和流程,并为应用程序程序员和数据库开发人员带来新的挑战。
流处理应用程序的主要组件包括元组、数据流、运算符、PE和作业。“元组(tuple)”是数据流中的单个数据片段。如本文所用,“数据流(data stream)”指的是元组的运行序列。如本文所用,“运算符(operator)”是逻辑函数,其操纵来自传入数据流的元组数据并以输出数据流的形式产生结果。如本文所用,“运算符图(operator graph)”是运算符的可视化表示,这些运算符由流经运算符的数据流连接并定义分析应用程序。此处使用的“处理元素(processing element)”或“PE”是可执行文件,包括一组一个或多个运算符,这些运算符将在网络节点或计算资源(例如服务器、客户端、主机、容器)或其他计算设备(例如数据处理系统)上的相同进程中运行。此处使用的“节点”是网络节点,包括可通过计算机网络寻址的任何电子设备,该电子设备能够通过计算机网络创建、接收和/或传输信息,并且可以指代可以指代元件、模块、组件、板、设备或系统。
流处理作业具有在PE之间发送数据元组的PE的有向图。PE对传入的元组进行操作,并生成输出元组。PE有独立的处理单元,运行在主机上。流平台可以由一组主机组成,这些主机有资格放置PE。
在流计算应用程序中,PE因此彼此连接,使得数据通过网络连接(例如,通过TCP/IP套接字)从一个PE流到下一个PE。数据以元组的形式从一个流运算符流向另一个流运算符,该元组具有与实体关联的一个或多个属性的序列。
流计算应用程序处理需要高效且实时地处理的大量数据。流计算能够通过创建可执行文件(即,多个PE)将应用程序分布在多个节点上,以及在多个节点上复制PE并在它们之间进行负载平衡,从而实现高性能流和可扩展性。因此,流计算应用程序每秒可以连续摄取和分析数十万条消息,每天可以摄取和分析高达PB级的数据。因此,可能需要流计算应用程序中的每个流运算符在几分之一秒内处理接收到的元组。
IBM Streams等产品的一个优势是巨大的可扩展性和性能(IBM是InternationalBusiness Machines corporation的注册商标)。性能优势包括在给定时间范围内摄取、过滤、分析和关联潜在大量连续数据流方面的改进。然而,如果流应用程序在其处理过程中“落后”,那么它正在执行的分析就失去了价值,即分析结果基于过去,而不是最近的数据。
流应用程序可能仅仅因为应用程序的一部分的性能不佳而落后。流应用程序也可能因为应用程序内部的故障而落后。流服务提供商或操作系统可能支持高可用性和应用程序故障转移,但故障恢复机制包括恢复发生时不处理数据的一段时间。例如,处理元素(PE)出现故障并重新启动所需的时间可能在20到30秒到几分钟之间,具体取决于多种因素(例如,快速故障与PE运行速度较慢的逐渐故障并且在最终失败之前变慢,创建/安排新资源以托管重新启动的PE的时间量,部署新PE的时间量等)。
故障恢复过程完成所花费的时间越长——未处理的实时数据的积压越长,导致应用落后于实时直到它“赶上”最新数据。如果发生多次故障,长度恢复期可能导致应用程序被实时数据完全淹没,从而导致其完全失败。
本公开的说明性实施例通过监视流处理的处理元素(PE)的退化并用其自身的更好执行的副本替换退化的PE(在它失败之前)来解决特定于流处理的问题和性能目标。一些此类实施例提供优于现有技术的一个或多个优点,例如通过替换性能不佳的PE来提高流应用程序的性能,提供一种方法来避免PE故障,以及通过在故障之前使用自身更健康的副本主动替换退化的PE来提供避免PE故障和相关联的冗长恢复的方法,并且能够比通过完整的故障恢复场景更快地切换到替代PE,从而减少或防止故障恢复过程中未处理的实时数据的累积。
在说明性实施例中,流管理器监视流应用程序,维护表示构成流应用程序的各种PE的性能的统计数据。在一些实施例中,流管理器监控PE的退化,并且当检测到一个或多个PE的退化时,执行故障排除过程,或者向故障排除模块或单独的应用程序发出通知信号或数据。例如,在一些实施例中,PE监控自身的退化指标并且当PE检测到退化时向流管理器发送信号。
在一些实施例中,流管理器通过监视PE是否发生用作退化指标的条件来检测PE的退化,这可能因PE而异。在一些实施例中,退化指示条件的阈值也可能因PE而异。因此,在一些这样的实施例中,退化指示条件对于每个PE是可配置的。
在一些实施例中,退化指示条件包括与偏离预定义或预期模式的PE相关联的执行条件。例如,在一些实施例中,退化指示包括异常数量的排队元组(即在PE中运算符的输入端口上等待待处理的元组)、异常内存使用率、异常处理的数量和类型以及异常CPU消耗。
在一些实施例中,流管理器监视多个PE。在备选实施例中,流管理器仅监控单个PE。在一些实施例中,流管理器维护表示在PE退化之前PE的正常或预期性能的统计数据。在一些实施例中,流管理器记录PE对此类计算资源的利用,从而允许建立正常利用模式并且由此还允许检测异常利用模式。
在一些实施例中,异常数量的排队元组包括高于正常数量的排队元组。在一些实施例中,异常存储器使用率包括异常高的存储器使用变化率。在一些实施例中,异常的CPU消耗包括异常高的CPU消耗变化率。
在一些实施例中,当流管理器检测到PE的退化时,流管理器执行与退化的PE相关的初始分析。在一些这样的实施例中,流管理器分析退化的PE以确定表示性能退化的指示是否实际上是问题的指示而不是性能退化PE的退化,例如反压(backpressure)或一个或多个集群计算资源达到容量。
在一些这样的实施例中,当流管理器检测到PE的退化并且没有检测到备选问题时,流管理器测试使用一个或多个临时PE作为退化PE的可能替代物。在一些这样的实施例中,流管理器与调度器通信以识别托管临时PE的节点。在一些实施例中,调度器搜索除了托管PE的节点之外的节点。在一些实施例中,调度器还基于预定规则或标准搜索节点,例如计算资源的可用性以及与上游和下游PE的邻近度。在一些实施例中,一旦调度器识别出主机节点,调度器就通知流管理器为临时PE选择的位置。
在一些实施例中,流管理器在运行时在识别的节点上启动临时PE,同时保持性能退化的PE的运行时操作。在一些这样的实施例中,流管理器将临时PE连接到与退化PE相同的上游PE的上游PE,使得临时PE和退化PE都同时从相同的上游PE接收相同的元组流。在一些这样的实施例中,临时PE和退化PE都对元组流执行相同的定义过程,这允许流管理器将退化PE的性能与临时PE的性能进行比较。在一些这样的实施例中,退化的PE对元组流执行定义的过程,产生退化PE传输到下游PE的输出元组流,而临时PE的输出不连接到任何下游元件。
在一些实施例中,流管理器基于与一个或多个计算资源相关联的性能度量将退化PE的操作与临时PE的操作进行比较。例如,在一些实施例中,流管理器通过比较CPU使用率、存储器使用率和元组吞吐速度中的一项或多项来将退化PE的操作与临时PE的操作进行比较。在一些这样的实施例中,如果流管理器确定临时PE比退化PE性能更好,则流管理器用临时PE替换退化PE,例如通过将临时PE的输出连接到下游PE性能退化的PE的位置,并且流管理器关闭退化PE。在一些实施例中,流管理器经由用户界面向用户发送关于用临时PE替换退化PE的通知。
为了描述清楚起见,并且不暗示对其的任何限制,说明性实施例是使用一些示例配置来描述的。根据本公开,本领域的普通技术人员将能够想到所描述的配置的许多改变、改编和修改以实现所描述的目的,并且在说明性实施例的范围内预期同样的。
此外,在附图和说明性实施例中使用了数据处理环境的简化图。在实际的计算环境中,在不脱离说明性实施例的范围的情况下,可以存在未在本文中示出或描述的附加结构或组件,或者与示出的结构或组件不同但用于与本文描述的类似功能的结构或组件。
此外,示例性实施例仅作为示例针对特定的实际或假设的组件进行描述。例如,各种说明性实施例所描述的步骤可以适用于为机器学习分类器模型做出的决策提供解释。
这些和其他类似人工制品的任何具体表现不旨在限制本发明。可以在说明性实施例的范围内选择这些和其他类似人工制品的任何合适的表现形式。
本公开中的示例仅用于描述的清楚,而不限制说明性实施例。此处列出的任何优点仅是示例,并不旨在限制说明性实施例。额外的或不同的优点可以通过特定的说明性实施例来实现。此外,特定说明性实施例可具有上面列出的一些优点、全部优点或不具有上面列出的优点中的任何一个。
此外,示例性实施例可以针对任何类型的数据、数据源或通过数据网络访问数据源来实现。在本发明的范围内,任何类型的数据存储设备都可以在数据处理系统本地或通过数据网络向本发明的实施例提供数据。在说明性实施例的范围内,在使用移动设备描述实施例的情况下,适合与移动设备一起使用的任何类型的数据存储设备可以在移动设备本地或通过数据网络向此类实施例提供数据。
示例性实施例仅作为示例使用特定代码、对比说明、计算机可读存储介质、高级特征、历史数据、设计、架构、协议、布局、示意图和工具来描述,并且不限于示例性实施例。此外,在某些情况下使用特定软件、工具和数据处理环境来描述说明性实施例仅作为为了描述的清楚的示例。说明性实施例可以与其他可比较的或类似目的的结构、系统、应用程序或架构结合使用。例如,其他类似的移动设备、结构、系统、应用程序或其架构可以在本发明的范围内与本发明的此类实施例结合使用。说明性实施例可以以硬件、软件或其组合来实现。
本公开中的示例仅用于描述清楚,而不限制说明性实施例。额外的数据、操作、动作、任务、活动和操纵将从本公开中想到,并且在说明性实施例的范围内预期同样的。
此处列出的任何优点仅是示例,并不旨在限制说明性实施例。额外的或不同的优点可以通过特定的说明性实施例来实现。此外,特定说明性实施例可具有上面列出的一些优点、全部优点或不具有上面列出的优点中的任何一个。
参考附图并具体参照图1和图2,这些附图是可以在其中实现说明性实施例的数据处理环境的示例图。图1和图2仅是示例,并不旨在断言或暗示关于可实施不同实施例的环境的任何限制。基于以下描述,具体实现可以对所描述的环境进行许多修改。
图1示出了可以在其中实现说明性实施例的数据处理系统网络的框图。数据处理环境100是可以在其中实现说明性实施例的计算机网络。数据处理环境100包括网络102。网络102是用于在数据处理环境100内在连接在一起的各种设备和计算机之间提供通信链路的介质。网络102可以包括诸如有线、无线通信链路或光纤电缆的连接。
客户端或服务器只是连接到网络102的某些数据处理系统的示例角色,并不旨在排除这些数据处理系统的其他配置或角色。数据处理系统104耦合到网络102。软件应用程序可以在数据处理环境100中的任何数据处理系统上执行。在图1中描述为在处理系统104中执行的任何软件应用程序可以被配置为以类似的方式在另一个数据处理系统中执行。在图1中数据处理系统104中存储或产生的任何数据或信息可以被配置为以类似的方式在另一个数据处理系统中存储或产生。诸如数据处理系统104的数据处理系统可以包含数据并且可以具有在其上执行计算过程的软件应用程序或软件工具。在一个实施例中,数据处理系统104包括存储器124,该存储器124包括可以被配置为根据一个或多个实施例实现本文描述的一个或多个数据处理器功能的应用程序105A。
服务器106连同存储单元108耦合到网络102。存储单元108包括数据库109,数据库109被配置为存储如本文关于各种实施例所述的数据,例如图像数据和属性数据。服务器106是传统的数据处理系统。在一个实施例中,服务器106包括流处理应用程序105B的PE,其可以被配置为根据一个或多个实施例来实现本文描述的一个或多个处理器功能。
客户端110、112和114也耦合到网络102。诸如服务器106或客户端110、112或114之类的常规数据处理系统可以包含数据并且可以具有其上执行常规计算的软件应用程序或软件工具。
仅作为示例,并且不暗示对这种架构的任何限制,图1示出了可在实施例的示例实现中使用的某些组件。例如,服务器106和客户端110、112、114被描述为服务器和客户端,仅作为示例,并不意味着对客户端-服务器架构的限制。作为另一个例子,一个实施例可以分布在几个数据处理系统和数据网络上,如图所示,而另一个实施例可以在说明性实施例的范围内的单个数据处理系统上实现。常规数据处理系统106、110、112和114还表示集群中的示例节点、分区和适合于实施实施例的其他配置。
设备132是这里描述的常规计算设备的示例。例如,设备132可以采用智能手机、平板电脑、膝上型电脑、固定或便携形式的客户端110、可穿戴计算设备或任何其他合适的设备的形式。在一个实施例中,设备132向服务器106发送请求以通过流处理应用程序105B执行一个或多个数据处理任务,例如发起这里描述的过程。被描述为在图1中的另一个常规数据处理系统中执行的任何软件应用程序可以被配置为以类似的方式在设备132中执行。在图1中的另一个常规数据处理系统中存储或产生的任何数据或信息可以被配置为以类似的方式在设备132中存储或产生。
服务器106、存储单元108、数据处理系统104和客户端110、112和114,以及设备132可以使用有线连接、无线通信协议或其他合适的数据连接耦合到网络102。客户端110、112和114可以是例如个人计算机或网络计算机。
在所示出的示例中,服务器106可以向客户端110、112和114提供诸如引导文件、操作系统映像和应用程序的数据。在该示例中,客户端110、112和114可以是服务器106的客户端。客户端110、112、114或其某种组合可以包括它们自己的数据、引导文件、操作系统映像和应用程序。数据处理环境100可以包括额外的服务器、客户端和未示出的其他设备。
在所示出的示例中,存储器124可以向处理器122提供数据,例如引导文件、操作系统映像和应用程序。处理器122可以包括它自己的数据、引导文件、操作系统映像和应用程序。数据处理环境100可以包括额外的存储器、处理器和未示出的其他设备。
在所示出的示例中,数据处理环境100可以是因特网。网络102可以表示使用传输控制协议/网际协议(TCP/IP)和其他协议来相互通信的网络和网关的集合。互联网的核心是主要节点或主机之间的数据通信链路的主干,包括数以千计的商业、政府、教育和其他路由数据和消息的计算机系统。当然,数据处理环境100也可以实现为多种不同类型的网络,例如内联网、局域网(LAN)或广域网(WAN)。图1旨在作为示例,而不是作为对不同说明性实施例的架构限制。
在其他用途中,数据处理环境100可以用于实现可以在其中实现说明性实施例的客户端-服务器环境。客户端-服务器环境使得软件应用程序和数据能够分布在网络上,使得应用程序通过使用常规客户端数据处理系统和常规服务器数据处理系统之间的交互来运行。数据处理环境100还可以采用面向服务的架构,其中分布在网络上的可互操作的软件组件可以打包在一起作为连贯的业务应用程序。数据处理环境100也可以采用云的形式,并采用服务交付的云计算模型,以实现对共享的可配置计算资源池(例如网络、网络带宽、服务器、处理、内存、存储、应用程序、虚拟机和服务)方便、按需的网络访问,只需最少的管理工作或与服务提供商的交互即可快速供应和发布。
参考图2,该图示出了可以在其中实现说明性实施例的数据处理系统的框图。数据处理系统200是传统计算机的示例,例如图1中的数据处理系统104、服务器106或客户端110、112和114,或另一种类型的设备,其中计算机可用程序代码或指令实现过程可以针对说明性实施例定位。
数据处理系统200也代表常规数据处理系统或其中的配置,例如图1中的常规数据处理系统132,其中实现说明性实施例的过程的计算机可用程序代码或指令可以定位。数据处理系统200被描述为计算机仅作为示例,但不限于此。其他设备形式的实现,例如图1中的设备132,可以修改数据处理系统200,例如通过添加触摸界面,甚至在不脱离在此描述的数据处理系统200的操作和功能一般描述的情况下从数据处理系统200中删除某些描述的组件。
在所示示例中,数据处理系统200采用集线器架构,包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210耦合到北桥和存储器控制器中枢(NB/MCH)202。处理单元206可以包含一个或多个处理器并且可以使用一个或多个异构处理器系统来实现。处理单元206可以是多核处理器。在某些实现中,图形处理器210可以通过加速图形端口(AGP)耦合到NB/MCH 202。
在所示出的示例中,局域网(LAN)适配器212耦合到南桥和I/O控制器集线器(SB/ICH)204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)和其他端口232以及PCI/PCIe设备234通过总线238耦合到南桥和I/O控制器集线器204。硬盘驱动器(HDD)或固态驱动器(SSD)226和CD-ROM 230通过总线240耦合到南桥和I/O控制器集线器204。PCI/PCIe设备234可以包括例如以太网适配器、附加卡和用于笔记本电脑的PC卡。PCI使用卡总线控制器,而PCIe则没有。ROM 224可以是例如闪存二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM 230可以使用例如集成驱动电子设备(IDE)、串行高级技术附件(SATA)接口或诸如外部SATA(eSATA)和微型SATA(mSATA)的变体。超级I/O(SIO)设备236可以通过总线238耦合到南桥和I/O控制器集线器(SB/ICH)204。
诸如主存储器208、ROM 224或闪存(未示出)之类的存储器是计算机可用存储设备的一些示例。硬盘驱动器或固态驱动器226、CD-ROM 230和其他类似可用设备是包括计算机可用存储介质的计算机可用存储设备的一些示例。
操作系统在处理单元206上运行。操作系统协调并提供对图2中的数据处理系统200内的各种组件的控制。操作系统可以是用于任何类型的计算平台的商用操作系统,包括但不限于服务器系统、个人电脑和移动设备。面向对象或其他类型的编程系统可以与操作系统一起操作,并从在数据处理系统200上执行的程序或应用程序提供对操作系统的调用。
用于操作系统、面向对象的编程系统和应用程序或程序(例如图1中的应用程序105)的指令位于存储设备上,例如硬盘驱动器226上的代码226A的形式,并且可以加载到一个或多个存储器中的至少一个,例如主存储器208,以供处理单元206执行。说明性实施例的过程可以由处理单元206使用计算机实现的指令来执行,这些指令可以位于存储器,例如主存储器208、只读存储器224,或在一个或多个外围设备中。
此外,在一种情况下,代码226A可以通过网络201A从远程系统201B下载,其中类似的代码201C存储在存储设备201D上。在另一种情况下,代码226A可以通过网络201A下载到远程系统201B,其中下载的代码201C存储在存储设备201D上。
图1-2中的硬件可能因实施而异。其他内部硬件或外围设备,例如闪存、等效的非易失性存储器或光盘驱动器等,可用于补充或代替图1和图2中描绘的硬件。此外,说明性实施例的过程可以应用于多处理器数据处理系统。
在一些说明性示例中,数据处理系统200可以是个人数字助理(PDA),其通常配置有闪存以提供非易失性内存用于存储操作系统文件和/或用户生成的数据的文件。总线系统可以包括一条或多条总线,例如系统总线、I/O总线和PCI总线。当然,可以使用任何类型的通信结构或架构来实现总线系统,该结构或架构提供在连接到结构或架构的不同组件或设备之间的数据传输。
通信单元可以包括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适配器。存储器可以是例如主存储器208或高速缓存,例如北桥和存储器控制器中枢202中的高速缓存。处理单元可以包括一个或多个处理器或CPU。
图1和图2中描述的例子和上述示例并不意味着暗示架构限制。例如,数据处理系统200除了采取移动或可穿戴设备的形式之外,还可以是平板电脑、膝上型电脑或电话设备。
在计算机或数据处理系统被描述为虚拟机、虚拟设备或虚拟组件的情况下,虚拟机、虚拟设备或虚拟组件使用数据处理系统200中描绘的一些或所有组件的虚拟化表现以数据处理系统200的方式操作。例如,在虚拟机、虚拟设备或虚拟组件中,处理单元206表现为主机在处理系统中数据中可用的所有或一定数量的硬件处理单元206的虚拟化实例,主存储器208表现为主机数据处理系统中可用的主存储器208的全部或部分的虚拟化实例,并且磁盘226表现为可能在主机数据处理系统中可用的磁盘226的全部或部分的虚拟化实例。在这种情况下,主机数据处理系统由数据处理系统200表示。
参考图3,该图示出了根据说明性实施例的示例流应用程序环境300的框图。在一个实施例中,流应用程序环境300被配置为执行流应用程序,其是图1的应用程序105A/105B的示例。
在图示的实施例中,流应用程序环境300包括管理系统305和多个计算节点310A-310D(本文一般称为节点310)-即主机-它们使用一个或多个通信网络320通信耦合到彼此。在一个实施例中,通信网络320包括一个或多个服务器、网络或数据库,并使用通信协议在计算节点310之间传输数据。在一个实施例中,包含数据库340的数据库系统315通信耦合到网络320以与计算节点310通信。在特定实施例中,数据库系统315是具有图1的数据库109的服务器106的示例,并且节点310A-310D是图1的数据处理系统104、客户端110、112和114以及设备132的示例。
在图示的实施例中,一个或多个计算节点310A-310D被配置为如图所示用于计算节点310D,使得每个计算节点310A-310D包括一个或多个PE 312,并且每个PE包括一个或多个运算符314。运算符314是流应用程序的基本构建块,允许流应用程序成为分布式计算应用程序。在一些实施例中,计算节点310A-310D各自运行Linux操作系统,并且每个PE 312代表Linux进程,并且在每个Linux进程内有运行流应用程序的一个或多个方面的运算符314使得流应用程序分布在运算符314、PE 312和计算节点310A-310D之间。
在一些实施例中,管理系统305包括运算符图332和流管理器334。在一些实施例中,使用流计算服务的开发者通过定义运算符图332编写流应用程序,其被编译并提交给管理系统305。
流管理器334将运算符图332中的运算符放置在一个或多个计算节点上的一个或多个PE上,计算节点可以包括一个或多个计算节点310A-310D。在一些实施例中,运算符图332包括流网络拓扑的描述,例如流应用程序环境300的节点310上的各种运算符的位置、布置、连接和功能。
PE,例如PE 312,托管一个或多个运算符,例如运算符314,其对输入元组进行操作,并产生输出元组。PE具有独立的处理单元并在节点上运行,例如计算节点310A-310D中的任一个。在流应用程序中,PE 312相互连接,使得数据从一个PE流向下一个。数据以元组的形式从一个PE流向另一个PE,该元组具有与实体关联的一个或多个属性序列。
在一些实施例中,流管理器334监视PE 312的退化并且在退化的PE失效之前用其自身的更好性能的副本替换退化的PE。流应用程序实时处理潜在的海量数据。如果流应用程序在其处理过程中“落后”,则它正在执行的分析可能会失去其价值,即分析结果基于过去,而不是最近的数据。一个应用程序可能仅仅因为应用程序的一部分性能不佳而落后,例如单个PE。因此,如本文所述,在退化的PE失效之前检测并替换退化的PE为流应用程序的性能和效率提供了显著改进。
参考图4,该图描绘了根据说明性实施例的示例计算节点400的框图。在一个实施例中,计算节点400是图3的计算节点310A-310D的示例。
在所示实施例中,计算节点400包括一个或多个处理器(CPU)402、网络接口408、互连410、存储器412和存储装置414。计算节点400还可以包括I/O设备接口404用于将I/O设备406(例如键盘、显示器和鼠标设备)连接到计算节点400。在一些实施例中,此处描述的功能分布在多个系统中,这些系统可以包括以下组合:基于软件和/或硬件的系统,例如专用集成电路(ASIC)、计算机程序或智能手机应用程序。
在一些实施例中,每个CPU 402检索并执行存储在存储器412或存储装置414中的编程指令。类似地,在一些实施例中,CPU 402存储和检索驻留在存储器412中的应用程序数据。在一些实施例中,互连410在每个CPU 402、I/O设备接口404、存储装置414、网络接口408和存储器412之间传输编程指令和应用程序数据。
在一些实施例中,一个或多个PE 416被存储在存储器412中。在一些这样的实施例中,PE 416包括一个或多个流运算符418。在一些实施例中,PE 416被分配为仅由一个CPU402执行,尽管在其他实施例中,PE 416的流运算符418包括在两个或更多CPU 402上执行的一个或多个线程。通常包括存储器412以表示随机存取存储器,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或闪存。存储装置414包括缓冲器422并且通常被包括以代表非易失性存储器,例如硬盘驱动器、固态设备(SSD)或可移动存储卡、光学存储器、闪存设备、网络附加存储(NAS),或连接到存储区域网络(SAN)设备,或其他可能存储非易失性数据的设备。
在一些实施例中,流应用程序包括一个或多个流运算符418,其被编译成PE 416。在一些实施例中,存储器412包括两个或多个PE 416,每个PE具有一个或多个流运算符418。在一些实施例中,每个流运算符418包括一部分代码,其处理流入PE的元组并将元组输出到流计算应用中的相同PE、其他PE或相同PE和其他PE二者中的其他流运算符418。在一些实施例中,PE 416将元组传递给在同一计算节点400上或在可经由通信网络访问的其他计算节点上的其他PE。例如,在一个实施例中,第一计算节点400上的第一PE 416向第二计算节点400上的第二PE 416输出元组。
在一些实施例中,PE 416包括性能监视器420。在一些实施例中,性能监视器420监视PE 416的退化并且在检测到PE 416的退化时发出通知信号或数据。例如,在一些实施例中,当性能监视器420检测到PE 416的性能下降时,性能监视器420向流管理器(例如,图3的流管理器334)发送信号。
在一些实施例中,性能监视器420通过监视PE 416是否发生用作退化指标的条件来检测退化,该退化指标可能因PE 416不同而异。在一些实施例中,退化指标条件的阈值可能因PE 416不同而异。因此,在一些这样的实施例中,退化指标条件对于每个PE 416是可配置的。在一些实施例中,退化指标条件包括与偏离预定义或预期模式的PE 416相关联的执行条件。例如,在一些实施例中,退化指标包括异常数量的排队元组(即在PE中运算符的输入端口上等待被处理的元组)、异常内存使用、异常处理的数量和类型以及异常CPU消耗。在一些实施例中,性能监视器420监视PE 416并维护表示PE 416的正常或预期性能的统计数据。在一些实施例中,性能监视器420记录PE 416对此类计算资源的利用,允许建立正常使用模式,还允许检测异常使用模式。在一些实施例中,异常数量的排队元组包括高于正常数量的排队元组。在一些实施例中,异常存储器使用包括异常高的存储器使用率变化。在一些实施例中,异常的CPU消耗包括异常高的CPU消耗变化率。
参考图5,该图示出了根据说明性实施例的示例管理系统500的框图。在一个实施例中,管理系统500是图3的管理系统305的示例。
在所示实施例中,管理系统500包括一个或多个处理器(CPU)502、网络接口508、互连510、存储器512和存储装置514。管理系统500还可以包括I/O设备接口504将I/O设备506(例如键盘、显示器和鼠标设备)连接到管理系统500。在一些实施例中,本文描述的功能分布在多个系统中,这些系统可以包括软件和/或基于硬件的系统,例如专用集成电路(ASIC)、计算机程序或智能手机应用程序。
在一些实施例中,每个CPU 502检索并执行存储在存储器512或存储装置514中的编程指令。类似地,在一些实施例中,每个CPU 502存储和检索驻留在存储器512或存储装置514中的应用程序数据。互连510用于在CPU 502、I/O设备接口504、存储单元514、网络接口508和存储器512之间移动数据,例如编程指令和应用程序数据。通常包括存储器514以代表非易失性存储器(例如硬盘驱动器、固态设备(SSD)、可移动存储卡、光学存储、闪存设备、网络附加存储(NAS))与存储区域网络(SAN)设备或云的连接。在一些实施例中,网络接口508被配置为经由通信网络传输数据。
在一些实施例中,存储器512存储流管理器516。此外,在一些这样的实施例中,存储器514存储运算符图522,其定义元组如何被路由到PE以进行处理。在所示实施例中,流管理器516还包含临时PE分析模块518和调度器524。在所示实施例中,临时PE分析模块518包括性能监视器520。
在一些实施例中,分析模块518监控PE的退化并且在退化的PE失效之前用其自身的更好性能的副本替换退化的PE。流应用程序实时处理潜在的海量数据。如果流应用程序在其处理过程中“落后”,则它正在执行的分析可能会失去其价值,即分析结果基于过去,而不是最近的数据。应用程序可能仅仅因为应用程序的一部分性能不佳而落后,例如单个PE。因此,如本文所述,在退化的PE失效之前检测并替换退化的PE为流式传输应用程序的性能和效率提供了显著改进。
在一些实施例中,性能监控器520监控流应用程序,维护表示构成流应用程序的各种PE的性能的统计数据。在一些实施例中,性能监视器520是如图所示的流管理器516的一部分。在其他实施例中,性能监视器520在运行时被调用,但可以是与运行时流管理器516分开的实体。
在一些实施例中,性能监视器520监视PE的退化并且在检测到一个或多个PE的退化时发出通知信号或数据。例如,在一些实施例中,当性能监视器520检测到PE的性能退化时,性能监视器520向流管理器516发送信号。
在一些实施例中,性能监视器520通过监视PE是否发生用作退化指标的条件来检测退化,该PE 416可能因PE 416不同而异。在一些实施例中,退化指标条件的阈值可能因PE416不同而异。因此,在一些这样的实施例中,退化指标条件对于每个PE 416是可配置的。在一些实施例中,退化指标条件包括与偏离预定义或预期模式的PE相关联的执行条件。例如,在一些实施例中,退化指标包括异常数量的排队元组(即在PE中运算符的输入端口上等待处理的元组)、异常内存使用率、异常处理的数量和类型以及异常CPU消耗。在一些实施例中,性能监控器520监控PE并维护表示PE的正常或预期性能的统计数据。在一些实施例中,性能监视器520记录PE对这样的计算资源的利用,允许建立正常使用模式并且还允许检测异常使用模式。在一些实施例中,异常数量的排队元组包括高于正常数量的排队元组。在一些实施例中,异常存储器使用率包括异常高的存储器使用变化率。在一些实施例中,异常的CPU消耗包括异常高的CPU消耗变化率。
在一些实施例中,分析模块518分析由性能监视器520识别为表现出一个或多个退化指示的PE。在一些实施例中,分析模块518分析PE以确定由性能监控器520识别的指示是否实际上是除PE退化之外的问题指示,例如反压或一个或多个集群计算资源达到容量。在一些这样的实施例中,如果分析模块518没有检测到除PE退化之外的问题,则分析模块518接下来使用临时PE评估PE。在一些这样的实施例中,分析模块518使用调度器524来识别托管临时PE的节点。在一些实施例中,调度器524搜索除了托管PE的节点之外的节点。在一些实施例中,调度器524还基于预定的规则或标准搜索节点,例如计算资源的可用性以及与上游和下游PE的邻近度。
在一些实施例中,一旦调度器524识别主机节点,分析模块518在运行时在识别的节点上启动临时PE,同时保持PE的运行时操作。在一些这样的实施例中,临时PE连接到与分析中的PE相同的上游PE,使得临时PE和分析中的PE都同时从相同的上游PE接收相同的元组流。在一些这样的实施例中,临时PE和分析中的PE都对元组流执行相同的定义过程。在一些这样的实施例中,分析中的PE对元组流执行定义的过程,产生PE传输到下游PE的输出元组流,而临时PE的输出不连接到任何下游元件。
在一些实施例中,分析模块518基于与一个或多个计算资源相关联的性能度量,将分析下的PE的操作与临时PE的操作进行比较。在一些这样的实施例中,如果分析模块518确定临时PE比分析中的PE执行得更好,则分析模块518用临时PE替换分析中的PE,例如通过将临时PE的输出连接到下游PE代替分析中的PE,然后将其关闭。
参考图6,该图示出了根据说明性实施例的示例性临时PE分析模块600的框图。在一个实施例中,临时PE分析模块600是图5的临时PE分析模块518的示例。
在所示实施例中,临时PE分析模块600包括性能监视器602、初始分析模块604和临时故障排除器606。在所示实施例中,临时故障排除器606包括临时PE生成器610、性能比较器612和系统更新器614。在一些实施例中,本文描述的功能分布在多个系统中,这些系统可以包括基于软件和/或硬件的系统的组合,例如专用集成电路(ASIC)、计算机程序或智能手机应用程序。
在所示实施例中,性能监控器602监控流应用程序,维护表示构成流应用程序的各种PE的性能的统计数据。在一些实施例中,性能监视器602监视PE的退化并且在检测到一个或多个PE的退化时发出通知信号或数据。例如,在一些实施例中,当性能监视器602检测到PE的性能退化时,性能监视器602向初始分析模块604发送信号,例如图6中所示的性能退化的PE 608。
在一些实施例中,性能监控器602通过监控性能退化的PE 608是否发生用作退化指标的条件来检测性能退化的PE 608的退化,这可能因PE不同而异。在一些实施例中,退化指标条件的阈值也可能因PE不同而异。因此,在一些这样的实施例中,退化指标条件对于每个PE是可配置的。在一些实施例中,退化指标条件包括与偏离预定义或预期模式的PE相关联的执行条件。例如,在一些实施例中,退化指标包括异常数量的排队元组(即在PE中运算符的输入端口上等待被处理的元组)、异常内存使用率、异常处理的数量和类型以及异常CPU消耗。在一些实施例中,性能监视器602监视多个PE,包括性能退化的PE 608。在备选实施例中,性能监视器602仅监视性能退化的PE 608。在一些实施例中,性能监视器602维护在PE 608退化之前表示性能退化的PE 608的性能正常或预期的统计数据。在一些实施例中,性能监视器602记录性能退化的PE 608对此类计算资源的使用,允许建立正常使用模式,从而也允许待检测的异常使用模式。在一些实施例中,异常数量的排队元组包括高于正常数量的排队元组。在一些实施例中,异常存储器使用率包括异常高的存储器使用变化率。在一些实施例中,异常的CPU消耗包括异常高的CPU消耗变化率。
在一些实施例中,初始分析模块604在其被性能监视器602识别为表现出一个或多个退化指示时分析退化的性能PE 608。在一些实施例中,初始分析模块604分析性能退化的PE 608以确定性能监控器602识别的指示是否实际上是问题的指示而不是性能退化的PE608的退化,例如反压或一个或多个集群计算资源达到容量。
在一些这样的实施例中,如果初始分析模块604没有检测到除了退化性能的PE608的退化以外的问题,则初始分析模块604通知临时故障排除器606,临时故障排除器606接下来使用临时PE 616评估退化性能的PE 608。在一些此类实施例中,临时故障排除器606与调度器(例如,图5的调度器524)通信,以识别托管临时PE 616的节点。在一些实施例中,调度器搜索除托管PE的节点。在一些实施例中,调度器还基于预定规则或标准搜索节点,例如计算资源的可用性以及与上游和下游PE的邻近度。在一些实施例中,一旦调度器识别主机节点,调度器就通知临时PE生成器610。临时PE生成器610在运行时在识别的节点上启动临时PE 616,同时保持性能退化的PE 608的运行时操作。在一些这样的实施例中,临时PE生成器610将临时PE 616的上游侧连接到与性能退化的PE 608相同的上游PE,使得临时PE616和性能退化的PE 608都同时从相同的上游PE接收相同的元组流。在一些此类实施例中,临时PE 616和性能退化的PE 608都对元组流执行相同的定义过程,这允许通过性能比较器612比较性能退化的PE 608和临时PE 616的性能。在一些此类实施例中,性能退化的PE 608对元组流执行定义的过程,从而产生元组输出流,性能退化的PE 608将其传输到下游PE,而临时PE 616的输出未连接到任何下游元件。
在一些实施例中,性能比较器612基于与一个或多个计算资源相关联的性能度量,将性能退化的PE 608的操作与临时PE 616的操作进行比较。例如,在一些实施例中,性能比较器612通过比较CPU使用率、存储器使用率和元组吞吐量速度中的一项或多项,将性能退化的PE 608的操作与临时PE 616的操作进行比较。在一些此类实施例中,如果性能比较器612确定临时PE 616的性能优于性能退化的PE 608,则性能比较器612通知系统更新器614。响应于性能比较器612的通知,临时PE 616比性能下降的PE 608表现得更好,系统更新器614用临时PE 616替换性能退化的PE 608,例如通过将临时PE 616的输出连接到下游PE代替性能退化的PE 608,并且系统更新器614关闭性能退化的PE 608。在一些实施例中,系统更新器614经由用户界面618向用户发送关于用临时PE 616替换性能退化的PE 608的通知。
参考图7,该图是根据说明性实施例的用于流计算应用程序的运算符图700的框图。为了清楚起见,图7中所示的运算符图被示为可受益于公开的实施例的流应用程序的非限制性示例。
在所示实施例中,运算符图700是从一个或多个源710开始到一个或多个汇点(sink)712、714的流计算应用程序的图。源到汇点的流也可在本文中统称为执行路径。虽然图7被抽象化以显示连接的多个PE PE1-PE10,但运营商图700可包括相同或不同PE内的流运营商(例如,图3的运营商314)之间的数据流。通常,PE从流接收元组并将元组输出到流中(除了汇点—流终止的地方,或源—流开始的地方))。
在所示实施例中,运算符图700包括在计算节点702、704、706和708上运行的十个PE(标记为PE1-PE10)。在一些实施例中,PE包括一个或多个融合在一起的流运算符以形成一个有自己的进程ID(PID)和内存空间的独立运行的进程。在两个(或更多)PE独立运行的实施例中,进程间通信可以使用“传输”(例如网络套接字、TCP/IP套接字或共享内存)发生。但是,当流运算符融合在一起时,融合的流运算符可以使用更快速的通信技术在每个PE中的流运算符之间传递元组。
运算符图700开始于源710并结束于汇点712、714。计算节点702包括多个PE(PE1、PE2和PE3)。源710流入PE PE1,PE1又输出由PE2和PE3接收的元组。例如,PE1可以将接收到的数据属性拆分为一个元组,将部分数据属性以一个新的元组传递给PE2,同时将其他数据属性以另一个新的元组传递给PE3。作为第二个示例,PE1可以将一些接收到的元组传递给PE2,同时将其他元组传递给PE3。流向PE2的元组由包含在PE2中的流运算符处理,然后生成的元组输出到计算节点704上的PE4。同样,PE4输出的元组流向运算符汇点PE6 712。类似地,从PE3流向PE5的元组也到达汇点PE6 712中的运算符。因此,除了作为该示例运算符图的汇点,PE6可以被配置为执行连接操作,组合从PE4和PE5接收的元组。该示例运算符图还显示了在计算节点706上从PE3流向PE7的元组,它本身显示了流向PE8并循环回PE7的元组。从PE8输出的元组流向计算节点708上的PE9,计算节点708又输出元组以供汇点PE(例如PE10 714)中的运算符处理。
在一些实施例中,由特定PE接收的元组通常不被认为是下游输出的相同元组,因为输出元组以某种方式改变了。例如,在一些实施例中,属性或元数据被添加、删除或改变。然而,一些实施例包括不以任何方式从输入元组改变输出元组的PE。通常,PE输出的特定元组可能不会被视为与相应输入元组相同的元组,即使输入元组未被PE更改。然而,为了简化本描述和权利要求,具有与相应输入元组相同的数据属性的输出元组在本文中可被称为相同元组。在所示实施例中,如本文所述的性能监控器被配置为监控一个或多个PE PE1-PE10的退化性能。
参考图8,该图示出了根据说明性实施例的具有临时PE的流计算应用程序的运算符图800的框图。为清楚起见,图8中所示的运算符图被示为图7的运算符图700的修改版本的非限制性示例,其开始于源810并结束于可受益于的汇点812、814公开的实施例。
在所示示例中,性能监控器(例如,图5的性能监控器520或图6的性能监控器602)通过监控PE2并检测与PE2相关联的执行条件偏离预定义的或预期的模式来检测PE2的退化。例如,在一些实施例中,性能监控器检测退化指标,包括异常数量的排队元组(即在PE中运算符的输入端口上等待被处理的元组)、异常内存使用率、处理的异常的数量和类型,和/或者CPU消耗异常。在所示示例中,未检测到退化以外的问题,因此临时PE(图8中指定的PPE)在不同节点上启动:由于PE2在节点802上,PPE位于节点804上,但可能或者已经在节点806或节点808上启动。
临时PE在运行时启动,同时维持PE2的运行时操作。最初,为了比较临时PE和PE2的性能,临时PE仅在其上游侧通过边缘816连接到PE1,以便临时PE和PE2同时从相同的上游PE1接收到相同的元组流,两者都对元组流执行相同的定义过程,这允许将临时PE的性能与PE2的性能进行比较。
在所示示例中,性能比较器或流管理器基于与一个或多个计算资源相关联的性能度量将临时PE的操作与PE2的操作进行比较。例如,在一些实施例中,临时PE和PE2基于CPU使用率、存储器使用率和/或元组吞吐量速度中的一项或多项进行比较。在一些这样的实施例中,如果临时PE比PE2表现更好,则临时PE代替PE2,例如通过将临时PE的输出/下游侧连接到PE2的下游PE4代替PE2,例如通过从临时PE到PE4连接边缘818并关闭PE2。
参考图9,该图示出了根据说明性实施例的示例动态PE替换过程900的流程图。在一个具体实施例中,图6中的临时PE分析模块600执行过程900。
在一个实施例中,在框902,过程900启动流应用程序。接下来,在框904,过程900监视处理元素的性能退化。接下来,在框906,过程900检查是否在任何处理元素处检测到性能退化。如果不是,则过程900返回框904以继续监控。否则,过程900继续到框908,其中过程900开始评估退化的PE。在框908,过程900检查退化的PE是否有过压是性能退化的原因的指示,随后是框912,其中过程900检查节点集群的计算资源的运行级别,其中退化的PE已部署。如果过程900检测到过压或缺乏可用或足够的集群计算资源可能是退化PE退化的原因,则过程继续进行到框910,其中过程应用本领域已知的其他补救措施来解决过压和/或缺乏集群计算资源。否则,过程继续到框914,其中过程900执行临时PE故障排除过程,例如根据图10的过程1000、图11的过程1100、图12的过程1200,或组合过程1000、1100和/或1200的两个或更多个的部分的过程。
在框914的临时PE故障排除过程之后,过程900返回到框904以继续监视处理元素的退化性能。在图示的实施例中,监视继续直到发现另一个退化的PE或者直到流应用程序停止,如框916所示,之后过程900结束。
参考图10,该图示出了根据说明性实施例的示例动态PE替换过程1000的流程图。在一个具体实施例中,图6中的临时PE分析模块600执行过程1000。在一个实施例中,过程1000是图9的框914的临时PE故障排除过程的示例。
在所示实施例中,过程1000测试使用临时处理元素作为退化PE的可能替代品。在框1002,过程1000确定临时PE的位置。在一些实施例中,过程1000使用调度器来识别在其上部署临时PE的节点。在一些这样的实施例中,调度器确定运行临时PE的最佳节点。在一些这样的实施例中,当确定运行临时PE的最佳节点时,调度器排除运行退化PE的节点。
接下来,在框1004,过程1000在框1002选择的节点上启动临时PE。在一些实施例中,临时PE在运行时启动,同时保持退化PE的运行时操作。在一些实施例中,临时PE仅在其上游侧连接,并且连接到退化PE的紧接的下一个上游PE。此连接导致临时PE和退化PE同时从同一上游PE接收相同的元组流。
接下来,在框1006,过程1000比较退化PE和临时PE的性能。在一些这样的实施例中,临时PE对元组流执行与退化PE相同的定义处理,这允许对临时PE和退化PE进行基于性能的比较。在一些实施例中,性能比较器或流管理器基于与一个或多个计算资源相关联的性能度量将临时PE的操作与退化PE的操作进行比较。例如,在一些实施例中,基于CPU使用率、内存使用率和/或元组吞吐量速度中的一项或多项比较临时PE和退化PE。
接下来,在框1008,过程1000确定临时PE的性能是否优于退化PE的性能。在一些这样的实施例中,如果临时PE比退化PE执行得更好,则在框1010,过程1000执行切换到临时PE作为退化PE的替换,并且退化PE被关闭。在一些实施例中,切换包括将临时PE的输出/下游侧连接到退化PE的下一个直接下游PE。
参考图11,该图示出了根据说明性实施例的示例动态PE替换过程1100的流程图。在一个具体实施例中,图6中的临时PE分析模块600执行过程1100。在一个实施例中,过程1100是图9的框914的临时PE故障排除过程的示例。
在所示实施例中,过程1100测试使用多个临时处理元素作为退化PE的可能替代品。在一些实施例中,临时PE的数量是固定的预定值。在一些实施例中,临时PE的数量是用户可配置的值,其初始设置为默认值并且可通过用户输入来调整。在一些实施例中,过程1100基于任意数量的特定于实现的因素确定要使用的临时PE的数量,例如正在复制的退化PE的类型(即,由一个或多个运算符在退化PE上执行的操作)、流应用程序的大小、流应用程序已使用的可用节点数和/或任何其他所需因素。
在块1102,过程1100确定多个临时PE中的每一个的位置。在一些实施例中,过程1100使用调度器来识别要在其上部署临时PE的节点。在一些这样的实施例中,调度器确定运行临时PE的最佳节点列表。在一些实施例中,调度器还确定要部署的临时PE的数量,例如基于在其上部署临时PE的节点的可用性。在一些这样的实施例中,调度器在确定运行临时PE的最佳节点时排除运行退化PE的节点。
接下来,在框1104,过程1100在框1102选择的相应节点上启动临时PE。在一些实施例中,临时PE在运行时启动,同时保持退化PE的运行时操作。在一些实施例中,临时PE仅在它们的上游侧连接,并且都连接到退化PE的直接下一个上游PE。此连接导致退化PE和临时PE集同时从同一上游PE接收相同的元组流。
接下来,在框1106,过程1100比较退化PE和临时PE的性能。在一些这样的实施例中,临时PE各自对元组流执行与退化PE相同的定义处理,这允许对退化PE与临时PE进行基于性能的比较。在一些实施例中,性能比较器或流管理器基于与一个或多个计算资源相关联的性能度量将退化PE的操作与临时PE的操作进行比较。例如,在一些实施例中,基于CPU使用率、内存使用率和/或元组吞吐量速度中的一项或多项比较临时PE和退化PE。
接下来,在框1108,过程1100确定任何临时PE的性能是否优于退化PE的性能。在一些此类实施例中,如果任何临时PE的性能优于退化的PE,则在框1110,过程1100执行切换到性能最佳的临时PE作为退化PE的替代,并且退化PE和剩余的临时PE被关闭。在一些实施例中,切换包括将临时PE的输出/下游侧连接到退化PE的下一个直接下游PE。
参考图12,该图示出了根据说明性实施例的示例动态PE替换过程1200的流程图。在一个具体实施例中,图6中的临时PE分析模块600执行过程1200。在一个实施例中,过程1200是图9的框914的临时PE故障排除过程的示例。
在所示实施例中,过程1200测试使用临时处理元素作为退化PE的可能替代物。在框1202,过程1200确定临时PE的位置。在一些实施例中,过程1200使用调度器来识别要在其上部署临时PE的节点。在一些这样的实施例中,调度器确定运行临时PE的最佳节点列表。在一些实施例中,调度器还确定要部署的临时PE的数量,例如基于在其上部署临时PE的节点的可用性。在一些这样的实施例中,调度器在确定运行临时PE的最佳节点时排除运行退化PE的节点。
接下来,在框1204,过程1200在框1202选择的节点上启动临时PE。在一些实施例中,临时PE在运行时启动,同时保持退化PE的运行时操作。在一些实施例中,临时PE仅在其上游侧连接,并且连接到退化PE的紧接的下一个上游PE。此连接导致临时PE和退化PE同时从同一上游PE接收相同的元组流。
接下来,在框1206,过程1200比较退化PE和临时PE的性能。在一些这样的实施例中,临时PE对元组流执行与退化PE相同的定义处理,这允许对临时PE和退化PE进行基于性能的比较。在一些实施例中,性能比较器或流管理器基于与一个或多个计算资源相关联的性能度量将临时PE的操作与退化PE的操作进行比较。例如,在一些实施例中,基于CPU使用率、内存使用率和/或元组吞吐量速度中的一项或多项比较临时PE和退化PE。
接下来,在框1208,过程1200确定临时PE的性能是否优于退化PE的性能。在一些这样的实施例中,如果临时PE没有比退化PE表现得更好,那么在框1212,过程1200确定是否已经尝试了最大数量的临时PE。如果是,则过程结束。如果不是,则该过程返回到框1202以在不同位置使用另一个临时PE执行框1202-1208的下一次迭代(例如,部署在不同于部署退化PE的节点的节点上,并且也不同于用于框1202-1208的先前迭代的节点)。
在一些实施例中,框1212处的临时PE的最大数量是固定的预定值。在一些实施例中,框1212处的临时PE的最大数量是用户可配置的值,其最初被设置为默认值并且可通过用户输入来调整。在一些实施例中,过程1100在框1212基于任意数量的特定于实现的因素确定临时PE的最大数量,例如正在复制的退化PE的类型(即,由一个或多个运算符对退化PE执行的操作)、流应用程序的大小、流应用程序已经使用的可用节点数和/或任何其他所需因素。
在一些这样的实施例中,如果框1202-1208的任何迭代导致临时PE比退化PE执行得更好,则在框1210,过程1200执行到临时PE的切换,作为退化PE的替代PE,并关闭退化PE。在一些实施例中,切换包括将临时PE的输出/下游侧连接到退化PE的下一个直接下游PE。
以下定义和缩写用于解释权利要求和说明书。如本文所用,术语“包含(comprises)”、“包含(comprising)”、“包括(includes)”、“包括(including)”、“具有(has)”、“具有(having)”、“包含(contains)”或“包含(containing)”或其任何其他变体,旨在涵盖非排他的包含。例如,包含一系列元素的组合物、混合物、过程、方法、物品或设备不必仅限于那些元素,而是可以包括未明确列出或此类组合物、混合物、过程、方法固有的其他元素、物品或设备。
此外,术语“说明性的”在本文中用于表示“用作示例、实例或说明”。本文描述为“说明性”的任何实施例或设计不一定被解释为优于或优于其他实施例或设计。术语“至少一个”和“一个或多个”应理解为包括大于或等于一的任何整数,即一、二、三、四等。术语“多个”应理解为包括大于或等于二的任何整数,即二、三、四、五等。术语“连接”可以包括间接“连接”和直接“连接”。
说明书中对“一个实施例(one embodiment)”、“一个实施例(an embodiment)”、“一个示例性实施例(an example embodiment)”等的引用表示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以或可以不包括特定的特征、结构或特性。此外,这样的短语不一定指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,无论是否明确描述均认为结合其他实施例影响此类特征、结构或特性在本领域技术人员的知识范围内。
术语“大约(about)”、“基本上(substantially)”、“大约(approximately)”及其变体旨在包括与基于提交申请时可用的设备的特定量的测量相关联的误差程度。例如,“大约(about)”可包括给定值的±8%或5%或2%的范围。
本发明的各种实施例的描述已经出于说明的目的而呈现,但不旨在是穷尽的或限于所公开的实施例。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员来说将是显而易见的。选择此处使用的术语是为了最好地解释实施例的原理、实际应用或对市场中发现的技术的技术改进,或者使本领域的其他普通技术人员能够理解此处描述的实施例。
因此,在说明性实施例中提供了计算机实现的方法、系统或装置以及计算机程序产品,用于管理对在线社区的参与和其他相关特征、功能或操作。在关于一种类型的设备描述实施例或其一部分的情况下,计算机实现的方法、系统或装置、计算机程序产品或其一部分被适配或配置为与该设备类型的合适且可比较的表现形式一起使用。
在实施例被描述为在应用程序中实现的情况下,应用程序在软件即服务(SaaS)模型中的交付被设想在说明性实施例的范围内。在SaaS模型中,通过在云基础设施中执行应用程序,将实现实施例的应用程序的能力提供给用户。用户可以使用各种客户端设备通过诸如Web浏览器(例如,基于Web的电子邮件)或其他轻量级客户端应用程序的瘦客户端界面来访问该应用程序。用户不管理或控制底层云基础设施,包括网络、服务器、操作系统或云基础设施的存储。在某些情况下,用户甚至可能无法管理或控制SaaS应用程序的功能。在某些其他情况下,应用程序的SaaS实现可能允许有限的用户特定应用程序配置设置可能例外。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或介质),用于使处理器执行本发明的方面。
计算机可读存储媒体可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储媒质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储媒质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储媒质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储媒质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储媒质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
图中的流程图和框图说明了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就此而言,流程图或框图中的每个框可以表示模块、段或指令的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中标注的功能可以不按图中标注的顺序发生。例如,连续显示的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,方框图和/或流程图图示的每个方框,以及方框图和/或流程图图示中方框的组合,可以由执行特定功能或动作的基于专用硬件的系统来实现,或者由执行专用硬件和计算机指令的组合来实现。
本发明的实施例也可以作为与客户公司、非营利组织、政府实体、内部组织结构等的服务约定的一部分来交付。这些实施例的方面可以包括配置计算机系统以执行和部署软件、硬件和网络服务以实现本文描述的一些或所有方法。这些实施例的方面还可以包括分析客户的操作、创建响应于分析的推荐、构建实施部分推荐的系统、将系统集成到现有流程和基础设施中、计量系统的使用、向系统的用户分配费用,以及对系统使用的计费。尽管已经分别通过陈述各自的优点描述了本发明的上述实施例,但是本发明不限于它们的特定组合。相反,这些实施例也可以根据本发明的预期部署以任何方式和数量进行组合而不失去其有益效果。

Claims (20)

1.一种计算机实现的方法,包括:
监视运行时分布式计算应用程序条件的发生,
其中分布式计算应用程序包括第一节点,所述第一节点包括处理元素PE,所述处理元素PE从上游PE接收第一元组流,对所述第一元组流执行定义的过程,产生第二元组流,并将所述第二元组流传输到下游PE,以及
其中所述条件包括所述PE上发生退化条件;
在运行时在第二节点上启动第一临时PE,同时保持所述PE的运行时操作,
其中所述第一临时PE从所述上游PE接收所述第一元组流,并对所述第一元组流执行所述定义的过程;
基于与计算资源相关联的性能度量,将所述PE的操作与所述第一临时PE的操作进行比较;以及
连接所述第一临时PE以用从所述第一临时PE到所述下游PE的第三元组流替换从所述PE到所述下游PE的所述第二元组流。
2.如权利要求1所述的计算机实现的方法,还包括从多个节点中选择所述第二节点来执行所述第一临时PE。
3.如权利要求2所述的计算机实现的方法,其中从所述多个节点中选择所述第二节点至少部分地基于所述第二节点上计算资源的可用性。
4.如权利要求1所述的计算机实现的方法,其中所述第一临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程,同时所述PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程。
5.如权利要求4所述的计算机实现的方法,还包括在运行时在第三节点上启动第二临时PE,同时保持所述PE的运行时操作,
其中所述第二临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程,同时所述第一临时PE和所述PE各自从所述上游PE接收所述第一元组流并各自对所述第一元组流执行所述定义的过程。
6.如权利要求5所述的计算机实现的方法,其中将所述PE的操作与所述第一临时PE的操作进行比较还包括基于与所述计算资源关联的所述性能度量将所述第二临时PE的操作与所述PE的操作以及与所述第一临时PE的操作进行比较。
7.如权利要求1所述的计算机实现的方法,还包括在启动第一临时PE之前:
在运行时在第三个节点上启动第二临时PE,同时保持所述PE的运行时操作,
其中所述第二临时PE从所述上游PE接收所述第一元组流,并对所述第一元组流执行所述定义的过程。
8.如权利要求7所述的计算机实现的方法,还包括在启动所述第一临时PE之前:
基于与所述计算资源相关联的所述性能度量,将所述PE的操作与所述第二临时PE的操作进行比较。
9.如权利要求8所述的计算机实现的方法,其中将所述PE的操作与所述第二临时PE的操作进行比较导致基于所述性能度量识别所述PE的操作超过所述第二临时PE的操作。
10.一种计算机程序产品,包括一个或多个计算机可读存储介质,以及共同存储在该一个或多个计算机可读存储介质上的程序指令,该程序指令可由处理器执行以使处理器执行包括以下操作的操作:
监视运行时分布式计算应用程序条件的发生,
其中分布式计算应用程序包括第一节点,所述第一节点包括处理元素PE,所述处理元素PE从上游PE接收第一元组流,对所述第一元组流执行定义的过程,产生第二元组流,并将所述第二元组流传输到下游PE,以及
其中所述条件包括所述PE上发生退化条件;
在运行时在第二节点上启动第一临时PE,同时保持所述PE的运行时操作,
其中所述第一临时PE从所述上游PE接收所述第一元组流,并对所述第一元组流执行所述定义的过程;
基于与计算资源相关联的性能度量,将所述PE的操作与所述第一临时PE的操作进行比较;以及
连接所述第一临时PE以用从所述第一临时PE到所述下游PE的第三元组流替换从所述PE到所述下游PE的所述第二元组流。
11.如权利要求10所述的计算机程序产品,其中所述存储的程序指令存储在数据处理系统中的计算机可读存储设备中,并且其中存储的程序指令通过网络从远程数据处理系统传输。
12.如权利要求10所述的计算机程序产品,其中所述存储的程序指令存储在服务器数据处理系统中的计算机可读存储设备中,并且其中所述存储的程序指令响应于通过网络对远程数据处理系统的请求而被下载用于与远程数据处理系统关联的计算机可读存储设备,还包括:
用于计量使用与所述请求相关的程序指令的程序指令;以及
根据所述计量使用生成发票的程序指令。
13.如权利要求10所述的计算机程序产品,还包括从多个节点中选择所述第二节点来执行第一临时PE。
14.如权利要求10所述的计算机程序产品,其中所述第一临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程,同时所述PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程。
15.如权利要求14所述的计算机程序产品,还包括在运行时在第三节点上启动第二临时PE,同时保持所述PE的运行时操作,
其中所述第二临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程,同时所述第一临时PE和所述PE各自从所述上游PE接收所述第一元组流并各自对所述第一元组流执行所述定义的过程。
16.如权利要求15所述的计算机程序产品,其中将所述PE的操作与所述第一临时PE的操作进行比较还包括基于与所述计算资源关联的所述性能度量将所述第二临时PE的操作与所述PE的操作以及与所述第一临时PE的操作进行比较。
17.一种计算机系统,包括处理器和一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令可由处理器执行以使处理器执行操作,所述操作包括:
监视运行时分布式计算应用程序条件的发生,
其中分布式计算应用程序包括第一节点,所述第一节点包括处理元素PE,所述处理元素PE从上游PE接收第一元组流,对所述第一元组流执行定义的过程,产生第二元组流,并将所述第二元组流传输到下游PE,以及
其中所述条件包括所述PE上发生退化条件;
在运行时在第二节点上启动第一临时PE,同时保持所述PE的运行时操作,
其中所述第一临时PE从所述上游PE接收所述第一元组流,并对所述第一元组流执行所述定义的过程;
基于与计算资源相关联的性能度量,将所述PE的操作与所述第一临时PE的操作进行比较;以及
连接所述第一临时PE以用从所述第一临时PE到所述下游PE的第三元组流替换从所述PE到所述下游PE的所述第二元组流。
18.如权利要求17所述的计算机系统,还包括从多个节点中选择所述第二节点来执行所述第一临时PE。
19.如权利要求17所述的计算机系统,其中所述第一临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程,同时所述PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程。
20.如权利要求19所述的计算机系统,还包括在运行时在第三节点上启动第二临时PE,同时保持所述PE的运行时操作,
其中所述第二临时PE从所述上游PE接收所述第一元组流并且对所述第一元组流执行所述定义的过程,同时所述第一临时PE和所述PE各自从所述上游PE接收所述第一元组流并各自对所述第一元组流执行所述定义的过程。
CN202180073388.6A 2020-10-30 2021-10-12 流应用程序中退化处理元素的动态更换 Pending CN116529719A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/084,974 2020-10-30
US17/084,974 US11341006B1 (en) 2020-10-30 2020-10-30 Dynamic replacement of degrading processing elements in streaming applications
PCT/CN2021/123310 WO2022089199A1 (en) 2020-10-30 2021-10-12 Dynamic replacement of degrading processing elements in streaming applications

Publications (1)

Publication Number Publication Date
CN116529719A true CN116529719A (zh) 2023-08-01

Family

ID=81380044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180073388.6A Pending CN116529719A (zh) 2020-10-30 2021-10-12 流应用程序中退化处理元素的动态更换

Country Status (6)

Country Link
US (1) US11341006B1 (zh)
JP (1) JP2023547153A (zh)
CN (1) CN116529719A (zh)
DE (1) DE112021004854T5 (zh)
GB (1) GB2614511B (zh)
WO (1) WO2022089199A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220374327A1 (en) * 2021-04-29 2022-11-24 International Business Machines Corporation Fair simultaneous comparison of parallel machine learning models
US11914457B2 (en) 2022-03-30 2024-02-27 Bank Of America Corporation System for early detection of operational failure in component-level functions within a computing environment

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571143B2 (en) * 2002-01-15 2009-08-04 Hewlett-Packard Development Company, L.P. Software pay-per-use pricing
US7451347B2 (en) 2004-10-08 2008-11-11 Microsoft Corporation Failover scopes for nodes of a computer cluster
EP1705926A1 (en) 2005-03-24 2006-09-27 Alcatel Alsthom Compagnie Generale D'electricite Failsafe stream processing
JP4870183B2 (ja) * 2009-03-13 2012-02-08 株式会社日立製作所 ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム
US20110083046A1 (en) * 2009-10-07 2011-04-07 International Business Machines Corporation High availability operator groupings for stream processing applications
US8600976B2 (en) 2011-08-26 2013-12-03 International Business Machines Corporation Invalidating streams in an operator graph
JP6021741B2 (ja) 2013-06-05 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 時空間データベースの処理方法、プログラム及びシステム
US10635644B2 (en) * 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
US9531602B1 (en) * 2015-07-27 2016-12-27 International Business Machines Corporation Processing element placement tool
US9858124B1 (en) 2015-10-05 2018-01-02 Amazon Technologies, Inc. Dynamic management of data stream processing
US10346272B2 (en) 2016-11-01 2019-07-09 At&T Intellectual Property I, L.P. Failure management for data streaming processing system
CN108009111B (zh) 2016-11-01 2020-02-21 华为技术有限公司 数据流连接方法及装置
CN107623639B (zh) 2017-09-08 2021-02-26 广西大学 基于emd距离的数据流分布式相似性连接方法
US10831619B2 (en) 2017-09-29 2020-11-10 Oracle International Corporation Fault-tolerant stream processing
US10901853B2 (en) * 2018-07-17 2021-01-26 International Business Machines Corporation Controlling processing elements in a distributed computing environment
CN110362600B (zh) 2019-07-22 2022-03-11 广西大学 一种乱序数据流分布式聚合查询方法、系统及介质

Also Published As

Publication number Publication date
JP2023547153A (ja) 2023-11-09
GB2614511A (en) 2023-07-05
DE112021004854T5 (de) 2023-09-07
WO2022089199A1 (en) 2022-05-05
GB202306127D0 (en) 2023-06-07
GB2614511B (en) 2024-01-10
US20220138061A1 (en) 2022-05-05
US11341006B1 (en) 2022-05-24

Similar Documents

Publication Publication Date Title
US10853160B2 (en) Methods and systems to manage alerts in a distributed computing system
US9986002B2 (en) Multifusion of a stream operator in a streaming application
US11294758B2 (en) Automated methods and systems to classify and troubleshoot problems in information technology systems and services
US20220027249A1 (en) Automated methods and systems for troubleshooting problems in a distributed computing system
US20160360006A1 (en) Management of connections within a messaging environment based on the statistical analysis of server responsiveness
US11010203B2 (en) Fusing and unfusing operators during a job overlay
JP2015069655A (ja) プロセス制御システムおよび方法
Yang et al. Computing at massive scale: Scalability and dependability challenges
WO2022089199A1 (en) Dynamic replacement of degrading processing elements in streaming applications
US10630818B2 (en) Increasing data resiliency operations based on identifying bottleneck operators
Gan et al. Sage: Leveraging ml to diagnose unpredictable performance in cloud microservices
CN114208127A (zh) 预测操作数据管理系统中的服务质量的机器学习
Alyas et al. Resource Based Automatic Calibration System (RBACS) Using Kubernetes Framework.
Mao et al. Trisk: Task-centric data stream reconfiguration
Tran et al. Proactive stateful fault-tolerant system for kubernetes containerized services
US11372702B2 (en) Optimized high availability management using cluster-wide view
US10997058B2 (en) Method for performance analysis in a continuous integration pipeline
Simakov et al. Application kernels: HPC resources performance monitoring and variance analysis
US20230229537A1 (en) Methods and systems that automatically predict distributed-computer-system performance degradation using automatically trained machine-learning components
US11301359B2 (en) Remote debugging parallel regions in stream computing applications
Vergilio et al. Requirements engineering for large-scale Big Data applications
US11985051B1 (en) Dynamically visualizing service mesh topologies with event-based messaging
US11799963B1 (en) Method and system for identifying user behavior based on metadata
Curtis A Comparison of Real Time Stream Processing Frameworks
Martins Scaling of Applications in Containers

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