CN107783834B - 用于处理数据的方法和系统 - Google Patents
用于处理数据的方法和系统 Download PDFInfo
- Publication number
- CN107783834B CN107783834B CN201610780989.1A CN201610780989A CN107783834B CN 107783834 B CN107783834 B CN 107783834B CN 201610780989 A CN201610780989 A CN 201610780989A CN 107783834 B CN107783834 B CN 107783834B
- Authority
- CN
- China
- Prior art keywords
- consumer
- instances
- data
- adjustment
- state
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/29—Graphical models, e.g. Bayesian networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/19—Recognition using electronic means
- G06V30/196—Recognition using electronic means using sequential comparisons of the image signals with a plurality of references
- G06V30/1983—Syntactic or structural pattern recognition, e.g. symbolic string recognition
- G06V30/1988—Graph matching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式涉及用于处理数据的方法和系统。在一个实施方式中,提供了一种用于处理数据的方法,包括:响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。在其他实施方式中,进一步提供了用于处理数据的设备和系统。
Description
技术领域
本发明的各实施方式涉及数据处理,更具体地,涉及用于并行地处理流(stream)数据的方法和系统。
背景技术
随着数据处理技术的发展,数据处理已经不再局限于串行的处理方式,而是可以在分布式处理系统中的多个节点处进行并行处理。对于涉及大数据处理的应用而言,分布式并行处理可以大大提高数据处理的效率,进而为实时数据处理提供了更多支持。
实时数据处理可以应用于多种应用环境,例如,实时监控已经成为目前的一个重要应用热点。对于城市道路、主要交通枢纽等重要区域的监控中将产生大量的视频流数据;又例如,在环境监控、生产线监控等领域中,也将产生温度、湿度等大量的实时监控的流数据(例如,在1秒的时间间隔进行采样)。由于这些流数据中承载的信息的数量并不相同,因而很可能会出现在某一时刻的工作负载骤增并且需要额外的计算资源的情况。此时,如何以更为有效的方式来以动态地并行处理流数据,成为目前的一个研究热点。
发明内容
因而,期望能够开发并实现一种能够有效地处理流数据的技术方案,并且期望该技术方案可以在不停止处理数据的情况下,动态地调节处理数据时所涉及的计算资源的数量。
在本发明的一个实施方式中,提供了一种用于处理数据的方法,包括:响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。
在本发明的一个实施方式中,提供了一种用于处理数据的设备,包括:确定模块,配置用于响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;迁移模块,配置用于根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及处理模块,配置用于在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。
在本发明的一个实施方式中,提供了一种用于处理数据的系统,包括:一个或者多个处理器;耦合至所述一个或者多个处理器中的至少一个处理器的存储器;在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述系统执行用于处理数据的方法,所述方法包括:响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。
采用本发明的技术方案,可以在不停止处理数据的情况下,动态地调节处理数据时所涉及的计算资源例如操作者实例的数量。按照本发明的实施方式,可以基于处理数据所需的工作负载的大小来动态地调整操作者实例的数量,例如,可以动态地增加或者减少消费者实例的数量。以此方式,一方面可以在工作负载变大时增加处理能力以确保实时处理;另一方面当工作负载降低时,还可以释放不再需要的处理能力。
附图说明
结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
图1示意性示出了适于实现本发明实施方式的示例性计算系统的框图;
图2示意性示出了根据一个技术方案的DAG拓扑图的图示;
图3示意性示出了根据本发明的一个实施方式的用于向DAG拓扑图中加入新的消费者实例的过程的框图;
图4示意性示出了根据本发明的一个实施方式的用于处理数据的方法的流程图;
图5A、图5B和图5C分别示意性示出了根据本发明的一个实施方式的用于处理数据的方法在不同阶段中的状态的分布的示意图;
图6-图9分别示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图;
图10A和图10B分别示意性示出了根据本发明的如图9所示的实施方式的状态迁移的示意图;
图11示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图;以及
图12示意性示出了根据本发明的一个实施方式的用于处理数据的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和触摸屏显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及触摸屏显示器114与显示控制器109耦合。应当理解,图1所示的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
应当注意,图1中仅仅示意性示出了可以为处理流数据提供计算资源的计算系统的示例,本领域技术人员还可以采用其他的计算系统来处理流数据。例如,可以采用单一物理计算设备,可以采用多个物理计算设备,还可以采用一个或者多个虚拟机来提供计算资源。或者,还可以采用运行在计算设备上的具有计算能力的逻辑计算节点(例如,应用的实例)来提供计算资源。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供者来通过因特网连接)。
下面将参照本发明实施方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
目前已经提出了能够调整向流处理应用分配的计算资源的技术方案,然而,这些技术方案并不能在流处理应用的运行期间按照工作负载随时增加或者减少计算资源,而是所分配的计算资源的数量是在应用启动时即固定的。另外,在现有的支持在运行时调整计算资源分配的系统中,可以在一定程度上进行调整,然而这种调整在时间延迟上造成额外的开销,并且还有可能在故障检测和处理中引入潜在的问题。
基于上述问题,期望能够开发一种可以在流处理应用运行时动态地调整计算资源的技术方案,并且期望该技术方案可以与现有的流处理应用兼容,在尽量不改变现有处理模式的基础上实现动态调整。在现有的流处理系统中,通常基于以有向无环图(DirectedAcyclic Graph)描述的操作者(operator)实例拓扑图来分发数据,在各个操作者处可以针对数据执行过滤、变化和聚合等操作,并且一个操作者可以具有多个实例。
在本发明的上下文中,将以用于监视城市交通状况的应用为示例,来描述如何实现本发明的实施方式。具体地,假设此应用的输入数据是从安装在城市中某路口上方的摄像头获取的视频流,并且应用的目的在于统计经过该路口的各种型号的车辆的出现次数。可以通过增加运算者的实例方式来增加计算资源,此时面临的一个问题是如何将已处理数据的中间结果(如状态)从现有的运算者的实例迁移至新增加的实例。另外,还需要考虑如何协调各个实例之间的操作。
在流处理应用中,可以将整个处理过程拆分为在多个操作者处执行的多个操作。可以采用二元组的方式来描述状态,二元组包括关键字(key)和相关联的值(value)。DAG拓扑图中的操作者通过数据流(data stream)来连接,并且二元组随着数据流而从上游的操作者(或者称为生产者(producer))实例来传递至下游操作者(或者称为消费者(consumer))实例。
例如,对于上文的需要统计全部车辆的型号的应用而言,可以将其拆分为两个操作:
操作1:在上游操作者(生产者)处,统计视频流中的各种型号的车辆的一次出现;以及
操作2:在下游操作者(消费者)处,计算每种型号的车辆的出现的总数。
假设存在三种车辆型号:吉普车、越野车、小客车,此时则在上游操作者(生产者)处的二元组可以分别表示为(吉普车,1)、(越野车,1)、(小轿车,1),这些二元组分别表示在生产者处分别统计吉普车、越野车、小轿车在视频中的每次出现。在下游操作者(消费者)处的二元组可以分别表示为(吉普车,count_jeep)、(越野车,count_suv)、(小轿车,count_car),其中count_jeep、count_suv、count_car分别表示在先前的监控视频中已经统计到的吉普车、越野车、小轿车的出现的次数。在接收到来自生产者实例的相应车辆型号的状态时,在消费者实例处的计数值可以加一。例如,当消费者实例处的状态为(吉普车,10),并且在消费者实例处接收到来自生产者实例的二元组(吉普车,1),则此时消费者实例处的状态可以更新为(吉普车,11)。以此方式,各个操作者实例可以执行相应的操作并且更新相应的二元组,进而即可完成流数据的处理。
对于上文的监视车辆的应用而言,可能存在这样的情况:在夜间车流量较小因而仅需要较少的操作者实例即可从视频中统计各种车辆型号的出现次数;而在高峰时间段,由于车辆密度大大提高,使得原有数量的操作者实例不能满足工作负载,因而需要向该应用分配更多的操作者实例。假设目前只有两个个操作者实例来执行操作2(即,仅有两个操作者实例用来统计视频中各种型号的车辆的出现次数),当视频中的车流量增加时,则期望添加另一操作者,并且由三个实例来并行地执行操作2。
图2示意性示出了根据一个技术方案的DAG拓扑图的图示200。如图2所示,附图标记210和220表示处于DAG拓扑图中上游的两个生产者实例,该生产者实例210和220例如上文示例中的用于执行操作1的实例。图2还包括处于DAG拓扑图下游的两个消费者实例220和222,该消费者实例220和222例如上文示例中的用于执行操作2的实例。
可以采用图2所示的生产者和消费者实例来处理上文所述的视频数据。例如,生产者实例210和220可以用于统计视频数据中的每种车辆型号的出现,并且消费者实例220和222可以用于统计每种车辆型号的出现的总数。如图2所示,消费者实例220和222直接连接在生产者实例210和212下游,并且生产者实例210经由线路230和234来分别向消费者实例220和222分发数据和传递状态;生产者实例212经由线路232和236来分别向消费者实例220和222分发数据和传递状态。
在图2中涉及两个生产者实例和两个消费者实例,在处理视频数据涉及较小的工作负载的情况下这些实例可以实时地处理视频数据。然而例如在高峰时段,则仅采用图2中的实例可能不再能够实时地完成处理,此时则需要向该视频处理应用分配更多的计算资源。例如,可以通过增加消费者实例的方式来缓解在消费者处出现的计算资源短缺的问题。应当注意,图2仅仅示意性示出了用于处理流数据的一个DAG拓扑图的示例,当需要处理更加复杂的问题时,DAG图可以包括更多层级的生产者实例和消费者实例。本领域技术人员可以根据具体应用环境的需要来设计更加复杂的DAG拓扑图。
图3示意性示出了根据本发明的一个实施方式的用于向DAG拓扑图中加入新的消费者实例的过程的框图300。如图3所示,为了缓解计算资源不足的问题,加入新的消费者实例310用于分担原有消费者实例220和222的操作。此时,由于新的消费者实例310刚刚启动,并且没有与先前的操作相关联的状态,因而首先需要确定从消费者实例220和222处向消费者实例310迁移哪些状态,以便消费者实例310可以在运行时加入。
为此,本发明提供了一种用于在不中断应用的情况下,实时地更新操作者实例的数量的方法。具体地,提出了一种用于处理数据的方法,包括:响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。
图4示意性示出了根据本发明的一个实施方式的用于处理数据的方法的流程图400。在步骤S410中,响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果。
继续上文监视交通视频的示例,在此步骤中消费者实例的数量可以从如图2所示的2个调整为如图3所示的3个。在不调整的情况下,与两个消费者实例相关联的状态将分别被传递至两个消费者实例220和222;当加入新的消费者实例310时,则需要将原本与两个消费者实例220和222相关联的状态,分配给三个消费者实例220、222和310。此时可以采用不同的调整策略,例如可以保持状态中与消费者实例220相关联的部分继续位于消费者实例220,而将状态中与消费者实例222相关联的部分划分成两块,将第一块保持在消费者实例222处,并将第二块迁移至消费者实例310处。或者还可以采用其他的策略,例如将位于消费者实例220中的一部分状态迁移至消费者实例310,并且将位于消费者实例222中的一部分状态迁移至消费者实例310,等等。
在如图3所示的示例中,假设在消费者实例220处的状态包括二元组(吉普车,count_jeep)、(越野车,count_suv),在消费者实例222处的状态包括(小轿车,count_car),则可以确定调整策略为:将状态(越野车,count_suv)从消费者实例220迁移至消费者实例310。应当注意,上述调整策略仅仅是示例性的,并且将在下文中详细描述如何确定调整策略。
在步骤S420中,根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态。在此步骤中,可以将状态(越野车,count_suv)从消费者实例220迁移至消费者实例310。应当注意,在本发明的上下文中所述的状态是处理数据过程中生成的中间数据,例如,上文中的多个二元组。并且在本发明的上下文中所涉及的“迁移状态”并不意味着需要迁移状态中的每个二元组,而是可以仅迁移其中的一部分二元组。应当注意,由于迁移二元组将会造成额外的时间和计算开销,因而在迁移的过程中需要尽可能地降低迁移造成的额外开销;换言之,应当只迁移尽可能少的二元组。
在步骤S430中,在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。在此步骤中,状态中的各个二元组已经基于第二分布方式而完成了状态迁移,因而此时可以由该第二数量的消费者实例来处理数据。
图5A、图5B和图5C分别示意性示出了根据本发明的一个实施方式的用于处理数据的方法的不同阶段中的状态的分布的示意图500A、500B和500C。如图5A示意性示出了与两个消费者实例220和222相关联的状态分布。在本发明的上下文中,状态分布是指状态在各个实例处的分布。例如,在图5A所示的示例中状态分布可以是:状态512分布在消费者实例220、而状态522分布在消费者实例222。
当确定将要增加新的消费者实例310时,则状态分布将要发生变化。此时则需要将状态中的一部分迁移到新的消费者实例310处。本领域技术人员可以采用多种方式来确定将状态的哪一部分进行迁移。如图5B所示,例如可以将消费者实例220中的状态512划分为两部分,即状态514和516;类似地,可以将消费者实例222中的状态522划分为状态524和526。如图5C所示此时的调整策略可以是:将状态516从消费者实例220迁移至消费者实例310,类似地,可以将状态526从消费者实例220迁移至消费者实例310。以此方式,则在所述第二数量的所述消费者实例处(即,在3个消费者实例220、222和310处),可以基于所述状态的新的分布(状态514位于消费者实例220,状态524位于消费者实例222、状态516和526位于消费者实例310),来处理所述数据。
继续上文处理视频数据的示例,假设初始时在消费者实例220处包括有关3种车辆型号出现次数的二元组,并且在消费者实例222处包括有关另外3种车辆型号出现次数的二元组,则此时的调整策略可以是:分别从消费者实例220和222向消费者实例310迁移有关一种车辆型号的二元组。迁移后的状态分布为:在三个消费者实例220、222和310处分别包括有关2种车辆型号出现总数的二元组。
应当理解,图5A-图5C仅仅示意性示出了一种调整方式,在其他的实施方式中,本领域技术人员可以采用多种方式确定如何划分以及如何迁移。例如,可以仅将消费者实例220处的状态进行划分和迁移,而保持消费者实例222处的状态不变。在下文中,将具体描述如何确定调整策略。
在本发明的一个实施方式中,确定所述调整策略包括:确定将所述状态的所述第一分布调整至所述状态的所述第二分布的迁移开销;以及基于所述迁移开销确定所述调整策略。在此实施方式中,可以基于迁移所造成的迁移开销来确定调整策略。具体地,可以尽量选择将迁移开销最小化的方式来确定调整策略。
在本发明的一个实施方式中,确定所述迁移开销包括:基于一致性哈希算法确定所述迁移开销。如果以传统的哈希并取模的方法确定状态的分布,当消费者实例的数量发生变化时,将会造成在消费者实例之间的大量状态迁移,进而出现时间延迟和带宽方面的短缺。因而需要选择将迁移开销尽可能最小化的方式。在本发明的一个实施方式中,在确定调整策略时可以采用一致性哈希算法。当消费者实例的数量发生变化时,仅需要迁移状态中的K/n(其中K是全部关键字的数量,而n为调整后的消费者实例的数量)。以此方式,可以尽可能地减小迁移开销,进而降低状态迁移造成的时间延迟。
本领域技术人员可以基于一致性哈希算法的一般原理来确定如何迁移状态中的二元组。有关一致性哈希算法的更多细节,本领域技术人员员可以参考现有技术已知的各种文档,例如可以参见https://en.wikipedia.org/wiki/Consistent_hashing。在本发明的上下文中将不再描述更多细节。
在本发明的一个实施方式中,可以向DAG拓扑图中涉及的各个生产者实例和消费者实例发送消息,以通知将要调整计算资源的分配。为了清晰地标识出在应用运行期间的每次调整,可以为每次调整设置唯一的标识符,以便消费者实例和消费者实例可以清楚地分辨出目前正在经历哪次调整。
图6示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图600。在图6中,上游生产者实例(即,210和212)与下游的消费者实例(即,220、222)之间具有直接的数据连接通道。在添加消费者实例310之后,则可以向生产者实例210、212、消费者实例220、222和310发送调整请求。
在本发明的一个实施方式中,在迁移所述状态之前,在所述第一数量的消费者实例上游的第三数量的生产者实例处,向所述第一数量的所述消费者实例发送调整指示符,所述调整指示符指示在所述调整指示符之后分发的数据是根据所述状态的所述第二分布来分发的。
在此实施方式中,消费者实例上游的生产者实例需要向下游的消费者实例发送调整指示符。调整指示符可以采用各种数据结构,只要在下游的消费者实例能够识别出该调整指示符即可。例如,可以将调整指示符设置为上文所述的调整的唯一标识符,或者还可以采用任何自定义的字符串,例如“TB”等。
在此实施方式中,“上游”的生产者实例是指与调整前的消费者实例直接连接的全部生产者实例,在下文中将参见图6详细描述。如图6所示,可以沿着如下数据通道发送调整指示符:从生产者实例210分别到消费者实例220和222,从生产者实例212分别到消费者实例220和222。以此方式,每个生产者实例可以通知下游的消费者实例:在所述调整指示符之后分发的数据是根据所述状态的所述第二分布(即新的分布)来分发的。
由于各个数据通道的状况不同,各个调整指示符在各个数据通道中传输的时间也有所差异,因而各个消费者实例接收到调整指示符的时间可以是不同的。调整指示符的目的在于,可以明确地通知消费者实例在数据通道中的数据是根据状态的旧的分布方式(即,状态分布在两个消费者实例220和222上)分发的、还是根据状态的新的分布方式(即,状态分布在三个消费者实例220、222和310上)而分发的。
在本发明的一个实施方式中,在发送所述调整指示符之后,根据所述状态的所述第二分布,从所述第三数量的生产者实例处向所述第二数量的消费者实例分发所述数据。继续参见图6,在已经从生产者实例210、212分别向消费者实例220、222发送了调整指示符之后,则生产者实例210则分别沿数据通道230、234和612向消费者实例220、222和310分发数据;并且生产者实例212则分别沿数据通道232、236和614向消费者实例220、222和310分发数据。
应当注意,在状态迁移后,由于一部分原本位于消费者实例220和222的状态将被迁移到新增加的消费者实例310,因而与这部分被迁移的状态相关联的数据也需要被分发至消费者实例310,以便由消费者实例310基于迁移的状态来进行处理。具体地,图6中以虚线示出的数据通道612和614可以用于向新增加的消费者实例310分发数据。
应当注意,由于调整指示符是指示按照状态的旧的分布方式还是新的分布方式分发数据的边界,因而如果一个消费者实例接收到来自全部上游生产者实例的调整指示符,则表示从此刻起,该消费者实例将按照状态的新的分布方式来处理数据,并且此时还应当按照迁移策略来迁移状态中相关联的部分。
在本发明的一个实施方式中,根据所述调整策略迁移所述状态包括:响应于在所述第一数量的所述消费者实例中的一个消费者实例处接收到来自上游的全部生产者实例的调整指示符,按照所述调整策略,从所述消费者实例向所述第二数量的所述消费者实例中的相关联的另一消费者实例迁移所述状态中的相关部分。
在下文中将参见图7详细描述上述实施方式的具体步骤。图7示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图700。如图7所示,以五星来表示消费者实例向消费者实例发送的调整指示符。
具体地,生产者实例210经由数据通道230向消费者实例220发送调整指示符710,并且该调整指示符710已经到达消费者实例220;生产者实例212经由数据通道232向消费者实例220发送调整指示符712,并且该调整指示符712已经到达消费者实例220。此时,由于消费者实例220已经接收到了来自全部上游生产者实例210和212的调整指示符,因而按照所述调整策略,从该消费者实例220向新加入的消费者实例310迁移所述状态中的相关部分。继续上文图5A、图5B和图5C的示例,可以将状态中的相关部分(即,状态516)从消费者实例220迁移至消费者实例310(如箭头730所示,)。
在下文中将描述与消费者实例222相关联的迁移操作。如图7所示,生产者实例210经由数据通道234向消费者实例222发送调整指示符714,并且该调整指示符714已经到达消费者实例222;生产者实例212经由数据通道236向消费者实例222发送调整指示符716,并且该调整指示符716尚未到达消费者实例222。此时,由于消费者实例222尚未接收到来自全部上游生产者实例210和212的调整指示符,此时消费者实例222必须等待。直到接收到来自全部上游生产者实例210和212的调整指示符后,才能按照所述调整策略,从该消费者实例222向新加入的消费者实例310迁移所述状态中的相关部分。
在本发明的一个实施方式中,进一步包括:在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述消费者实例处基于所述状态的所述第一分布处理所述数据。现在参见图7中的消费者实例222来详细描述消费者实例的具体动作。如图7所示,消费者实例222已经接收到来自生产者实例210的调整指示符714、但尚未接收到来自生产者实例212的调整指示符716。则此时消费者实例222需要按照状态的旧的分布方式处理数据。
继续上文示例,假设在消费者实例222执行的操作是分别统计三种类型的车辆的出现数量,此时在消费者实例222处的状态包括(吉普车,count_jeep)、(越野车,count_suv)、(小轿车,count_car)。在消费者实例222在接收到来自全部上游生产者实例的调整指示符之前,需要按照状态的旧的分布方式处理数据,即仍然需要在消费者实例222处分别统计三种类型的车辆的出现数量。
在本发明的一个实施方式中,进一步包括:在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述另一消费者实例处,缓存从所述第三数量的所述生产者实例分发的数据。在下文中将参见图7中的消费者实例310详细说明此实施方式中的具体步骤。
如图7所示,以矩形720和724来表示来自生产者实例210和212的数据。如果状态迁移已经完成,则按照调整策略,一部分原本位于消费者实例220的状态将被迁移至消费者实例310、并且一部分原本位于消费者实例222的状态将被迁移至消费者实例310。由于此时状态迁移尚未完成,则此时消费者实例310中的状态并不符合新的状态分布,因而如果此时基于消费者实例310中的当前状态处理数据,将不能正确地处理数据。
换言之,尽管分发到消费者实例310的数据(数据720、724)是按照状态的新分布来分发的,然而在消费者实例310中的状态的当前分布并不满足新分布,因而需要在消费者实例310处缓存接收到的数据;并且等待状态迁移全部完成之后,再由消费者实例310基于新的分布来处理接收到的数据。
随着时间的推移,来自生产者实例212的调整指示符716到达消费者实例222,则此时在所述消费者实例222处已经接收到来自上游的全部生产者实例的调整指示符,因而可以在消费者实例222和消费者实例310之间执行状态迁移。
在本发明的一个实施方式中,进一步包括:响应于在所述另一消费者实例处接收到从所述消费者实例迁移的所述状态中的所述部分,基于所述部分来处理缓存的所述数据。在下文将参见图8描述在本实施方式中的具体细节。
图8示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图800。如图8所示,来自全部上游生产者实例210和212的调整指示符710和712已经分别到达消费者实例220,继而以三角形示出的状态516沿箭头730从消费者实例220被迁移至消费者实例310;来自全部上游生产者实例210和212的调整指示符714和716已经分别到达消费者实例222,继而以三角形示出的状态526沿箭头810从消费者实例222被迁移至消费者实例310。此时,状态迁移已经完成,并且可以在消费者实例310处基于状态516和526来处理被缓存的数据720和724。
在本发明的一个实施方式中,响应于确定与处理所述数据相关联的工作负载增加,发出将所述消费者实例的所述数量从第一数量增加至第二数量的调整请求;以及响应于确定与处理所述数据相关联的工作负载减少,发出将所述消费者实例的所述数量从第一数量减少至第二数量的调整请求。
应当注意,在此实施方式中的调整请求是基于与处理数据相关联的工作负载来确定的,并且在本发明的上下文中并不限定第一数量与第二数量之间的大小,而是第一数量可以大于或者小于第二数量。
当工作负载变大并且需要更多的计算资源时(例如,从处理夜间采集的视频变为处理日间采集的视频),可以将消费者实例的数量从第一数量增加至第二数量;而当工作负载变小并且需要更少的计算资源时(例如,从处理日间采集的视频变为处理夜间采集的视频),可以将消费者实例的数量从第一数量减小至第二数量。
在上文中已经参见图5A-5C以及图6-图8详细描述添加消费者实例的具体细节,在本发明的一个实施方式中,当处理数据的工作负载变小并且需要更少的计算资源时,可以将消费者实例的数量从第一数量减小至第二数量,即停止某些正在操作的消费者实例。在下文中将参见图9详细描述具体细节。
图9示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图,在此实施方式中消费者实例的数量将从2个减小至1个(例如,消费者实例220将被停止)。此时,调整策略是将消费者实例220处的状态迁移至消费者实例222处,而在消费者实例222处的状态不执行迁移。
图10A和图10B分别示意性示出了根据本发明的如图9所示的实施方式的状态迁移的示意图1000A和1000B。如图10A所示,状态512位于消费者实例220,并且状态522位于消费者实例222。当希望停止消费者实例220的操作时,则需要将消费者实例220处的状态512迁移至消费者实例222。如图10B所示,当状态迁移完成后,则消费者实例222包括状态522和512。
在下文中将参见图11描述将消费者实例的数量从两个减小至一个(即,停止消费者实例220)的具体细节。图11示意性示出了根据本发明的一个实施方式的用于处理数据的方法的过程的细化框图1100。首先,上游生产者实例210分别沿着数据通路230和234向下游的两个消费者实例220和222发送调整标识符,上游生产者实例212分别沿着数据通路232和236向下游的两个消费者实例220和222发送调整标识符。当生产者实例210和212已经发送调整标识符之后,则按照状态的新分布来分发数据。由于状态迁移后在消费者实例220处将不具有任何状态,因而生产者实例210和212将不再向消费者实例220分发数据,而是仅向消费者实例222分发数据。被分发的数据可以缓存在消费者实例222处。
在消费者实例220处,当来自全部上游生产者实例210和212的调整标识符1110和1112到达消费者实例220时,则消费者实例220处包括的状态(例如,图10A和图10B中所示的状态512)将沿着如箭头1110所示迁移至消费者实例222。当状态迁移完成后,可以基于状态的新分布来处理在消费者实例222处缓存的数据。此时,原本需要由消费者实例220处理的数据已经被分发至消费者实例222,并且原本位于消费者实例220的状态已经被迁移至消费者实例222,此时消费者实例220已经无关于数据处理因而可以被停止。
在上文中,描述了一种用于处理数据的方法。该方法可以在不停止处理数据的情况下,动态地调节处理数据时所涉及的操作者实例的数量。按照本发明的实施方式,可以基于处理数据所需的工作负载的大小来动态地调整操作者实例的数量,例如,可以动态地增加或者减少消费者实例的数量。以此方式,一方面可以在工作负载变大时增加处理能力以确保实时处理,另一方面当工作负载降低时,还可以释放不再需要的处理能力。
应当注意,尽管附图示例中包括两个生产者实例,在其他的实施方式中,还可以仅涉及一个生产者实例。如上文中所述的“第三数量”的生产者实例仅涉及一个生产者实例。本领域技术人员可以根据上文所述的原理来实现只有一个生产者实例时的具体操作步骤。
具体地以图7为例,当仅涉及一个生产者实例210时,则仅需要沿着如通信通道230和234所示向下游的消费者实例220和222发送调整指示符。此时消费者实例220和222均只有一个上游生产者实例210,并且当每个消费者实例接收到来自上游生产者实例210的调整指示符时,即可触发与自身消费者实例相关联的状态转移。又例如,在图11所示的减少消费者实例的示例中,在仅涉及一个生产者实例210时,则仅需要沿着如通信通道230和234所示向下游的消费者实例220和222发送调整指示符。此时当消费者节点220接收到来自生产者节点210的调整指示符时,即可触发与自身相关联的状态转移。
还应当注意,尽管在上文中仅示出了在处理过程中的一个层次的生产者-消费者的处理过程的示例,当数据处理流程涉及多个层次时,本领域技术人员可以基于上文所述的原理,逐一在每个层次实现具体操作步骤,在此不再赘述。
图12示意性示出了根据本发明的一个实施方式的用于处理数据的设备的框图1200。具体地,提供了一种用于处理数据的设备,包括:确定模块1210,配置用于响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;迁移模块1220,配置用于根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及处理模块1230,配置用于在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。
在本发明的一个实施方式中,所述确定模块进一步配置用于:确定将所述状态的所述第一分布调整至所述状态的所述第二分布的迁移开销;以及基于所述迁移开销确定所述调整策略。
在本发明的一个实施方式中,其中确定所述迁移开销包括:基于一致性哈希算法确定所述迁移开销。
在本发明的一个实施方式中,所述迁移模块1220进一步配置用于:在迁移所述状态之前,在所述第一数量的消费者实例上游的第三数量的生产者实例处,向所述第一数量的所述消费者实例发送调整指示符,所述调整指示符指示在所述调整指示符之后分发的数据是根据所述状态的所述第二分布来分发的。
在本发明的一个实施方式中,所述迁移模块1220进一步配置用于:在发送所述调整指示符之后,根据所述状态的所述第二分布,从所述第三数量的生产者实例处向所述第二数量的消费者实例分发所述数据。
在本发明的一个实施方式中,所述迁移模块1220进一步配置用于:响应于在所述第一数量的所述消费者实例中的一个消费者实例处接收到来自上游的全部生产者实例的调整指示符,按照所述调整策略,从所述消费者实例向所述第二数量的所述消费者实例中的相关联的另一消费者实例迁移所述状态中的相关部分。
在本发明的一个实施方式中,所述迁移模块1220进一步配置用于:在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述消费者实例处基于所述状态的所述第一分布处理所述数据。
在本发明的一个实施方式中,所述迁移模块1220进一步配置用于:在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述另一消费者实例处,缓存从所述第三数量的所述生产者实例分发的数据。
在本发明的一个实施方式中,所述迁移模块1220进一步配置用于:响应于在所述另一消费者实例处接收到从所述消费者实例迁移的所述状态中的所述部分,基于所述部分来处理缓存的所述数据。
在本发明的一个实施方式中,所述确定模块进一步配置用于:响应于确定与处理所述数据相关联的工作负载增加,发出将所述消费者实例的所述数量从第一数量增加至第二数量的调整请求;以及响应于确定与处理所述数据相关联的工作负载减少,发出将所述消费者实例的所述数量从第一数量减少至第二数量的调整请求。
在本发明的一个实施方式中,提供了一种用于处理数据的系统,包括:一个或者多个处理器;耦合至所述一个或者多个处理器中的至少一个处理器的存储器;在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述系统执行用于处理数据的方法,所述方法包括:响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据。
在本发明的一个实施方式中,确定所述调整策略包括:确定将所述状态的所述第一分布调整至所述状态的所述第二分布的迁移开销;以及基于所述迁移开销确定所述调整策略。
在本发明的一个实施方式中,确定所述迁移开销包括:基于一致性哈希算法确定所述迁移开销。
在本发明的一个实施方式中,进一步包括:在迁移所述状态之前,在所述第一数量的消费者实例上游的第三数量的生产者实例处,向所述第一数量的所述消费者实例发送调整指示符,所述调整指示符指示在所述调整指示符之后分发的数据是根据所述状态的所述第二分布来分发的。
在本发明的一个实施方式中,进一步包括:在发送所述调整指示符之后,根据所述状态的所述第二分布,从所述第三数量的生产者实例处向所述第二数量的消费者实例分发所述数据。
在本发明的一个实施方式中,根据所述调整策略迁移所述状态包括:响应于在所述第一数量的所述消费者实例中的一个消费者实例处接收到来自上游的全部生产者实例的调整指示符,按照所述调整策略,从所述消费者实例向所述第二数量的所述消费者实例中的相关联的另一消费者实例迁移所述状态中的相关部分。
在本发明的一个实施方式中,进一步包括:在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述消费者实例处基于所述状态的所述第一分布处理所述数据。
在本发明的一个实施方式中,进一步包括:在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述另一消费者实例处,缓存从所述第三数量的所述生产者实例分发的数据。
在本发明的一个实施方式中,进一步包括:响应于在所述另一消费者实例处接收到从所述消费者实例迁移的所述状态中的所述部分,基于所述部分来处理缓存的所述数据。
在本发明的一个实施方式中,进一步包括:响应于确定与处理所述数据相关联的工作负载增加,发出将所述消费者实例的所述数量从第一数量增加至第二数量的调整请求;以及响应于确定与处理所述数据相关联的工作负载减少,发出将所述消费者实例的所述数量从第一数量减少至第二数量的调整请求。
附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (18)
1.一种用于处理数据的方法,包括:
响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;
根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及
在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据,其中所述方法进一步包括:
在迁移所述状态之前,在所述第一数量的消费者实例上游的第三数量的生产者实例处,向所述第一数量的所述消费者实例发送调整指示符,所述调整指示符指示在所述调整指示符之后分发的数据是根据所述状态的所述第二分布来分发的。
2.根据权利要求1所述的方法,其中确定所述调整策略包括:
确定将所述状态的所述第一分布调整至所述状态的所述第二分布的迁移开销;以及
基于所述迁移开销确定所述调整策略。
3.根据权利要求2所述的方法,其中确定所述迁移开销包括:基于一致性哈希算法确定所述迁移开销。
4.根据权利要求1所述的方法,进一步包括:在发送所述调整指示符之后,
根据所述状态的所述第二分布,从所述第三数量的生产者实例处向所述第二数量的消费者实例分发所述数据。
5.根据权利要求1所述的方法,其中根据所述调整策略迁移所述状态包括:
响应于在所述第一数量的所述消费者实例中的一个消费者实例处接收到来自上游的全部生产者实例的调整指示符,按照所述调整策略,从所述消费者实例向所述第二数量的所述消费者实例中的相关联的另一消费者实例迁移所述状态中的相关部分。
6.根据权利要求5所述的方法,进一步包括:
在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述消费者实例处基于所述状态的所述第一分布处理所述数据。
7.根据权利要求6所述的方法,进一步包括:
在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述另一消费者实例处,缓存从所述第三数量的所述生产者实例分发的数据。
8.根据权利要求7所述的方法,进一步包括:
响应于在所述另一消费者实例处接收到从所述消费者实例迁移的所述状态中的所述部分,基于所述部分来处理缓存的所述数据。
9.根据权利要求1所述的方法,进一步包括以下中的任一项:
响应于确定与处理所述数据相关联的工作负载增加,发出将所述消费者实例的所述数量从第一数量增加至第二数量的调整请求;以及
响应于确定与处理所述数据相关联的工作负载减少,发出将所述消费者实例的所述数量从第一数量减少至第二数量的调整请求。
10.一种用于处理数据的系统,包括:
一个或者多个处理器;
耦合至所述一个或者多个处理器中的至少一个处理器的存储器;
在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述系统执行用于处理数据的方法,所述方法包括:
响应于接收到将消费者实例的数量从第一数量调整至第二数量的调整请求,确定将与第一数量的消费者实例相关联的状态的第一分布调整为与第二数量的消费者实例相关联的所述状态的第二分布的调整策略,所述状态是处理所述数据的中间结果;
根据所述调整策略,在所述第一数量的所述消费者实例与所述第二数量的所述消费者实例之间迁移所述状态;以及
在所述第二数量的所述消费者实例处基于所述状态的所述第二分布处理所述数据其中所述方法进一步包括:
在迁移所述状态之前,在所述第一数量的消费者实例上游的第三数量的生产者实例处,向所述第一数量的所述消费者实例发送调整指示符,所述调整指示符指示在所述调整指示符之后分发的数据是根据所述状态的所述第二分布来分发的。
11.根据权利要求10所述的系统,其中确定所述调整策略包括:
确定将所述状态的所述第一分布调整至所述状态的所述第二分布的迁移开销;以及
基于所述迁移开销确定所述调整策略。
12.根据权利要求11所述的系统,其中确定所述迁移开销包括:基于一致性哈希算法确定所述迁移开销。
13.根据权利要求10所述的系统,其中所述方法进一步包括:在发送所述调整指示符之后,
根据所述状态的所述第二分布,从所述第三数量的生产者实例处向所述第二数量的消费者实例分发所述数据。
14.根据权利要求10所述的系统,其中根据所述调整策略迁移所述状态包括:
响应于在所述第一数量的所述消费者实例中的一个消费者实例处接收到来自上游的全部生产者实例的调整指示符,按照所述调整策略,从所述消费者实例向所述第二数量的所述消费者实例中的相关联的另一消费者实例迁移所述状态中的相关部分。
15.根据权利要求14所述的系统,其中所述方法进一步包括:
在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述消费者实例处基于所述状态的所述第一分布处理所述数据。
16.根据权利要求15所述的系统,其中所述方法进一步包括:
在所述消费者实例处接收到来自上游的全部生产者实例的调整指示符之前,在所述另一消费者实例处,缓存从所述第三数量的所述生产者实例分发的数据。
17.根据权利要求16所述的系统,其中所述方法进一步包括:
响应于在所述另一消费者实例处接收到从所述消费者实例迁移的所述状态中的所述部分,基于所述部分来处理缓存的所述数据。
18.根据权利要求10所述的系统,其中所述方法进一步包括:
响应于确定与处理所述数据相关联的工作负载增加,发出将所述消费者实例的所述数量从第一数量增加至第二数量的调整请求;以及
响应于确定与处理所述数据相关联的工作负载减少,发出将所述消费者实例的所述数量从第一数量减少至第二数量的调整请求。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610780989.1A CN107783834B (zh) | 2016-08-30 | 2016-08-30 | 用于处理数据的方法和系统 |
US15/691,552 US10545790B2 (en) | 2016-08-30 | 2017-08-30 | Method and system for processing data |
US16/711,672 US11023274B2 (en) | 2016-08-30 | 2019-12-12 | Method and system for processing data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610780989.1A CN107783834B (zh) | 2016-08-30 | 2016-08-30 | 用于处理数据的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783834A CN107783834A (zh) | 2018-03-09 |
CN107783834B true CN107783834B (zh) | 2021-05-07 |
Family
ID=61240750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610780989.1A Active CN107783834B (zh) | 2016-08-30 | 2016-08-30 | 用于处理数据的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10545790B2 (zh) |
CN (1) | CN107783834B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1759396A (zh) * | 2003-03-13 | 2006-04-12 | 皇家飞利浦电子股份有限公司 | 改进的数据检索方法和系统 |
CN103530189A (zh) * | 2013-09-29 | 2014-01-22 | 中国科学院信息工程研究所 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
WO2014049389A1 (en) * | 2012-09-27 | 2014-04-03 | Hewlett-Packard Development Company, L.P. | Dynamic management of cloud computing infrastructure |
CN104199736A (zh) * | 2014-06-30 | 2014-12-10 | 浙江大学苏州工业技术研究院 | 云环境下的数据中心节能方法 |
CN105450734A (zh) * | 2015-11-09 | 2016-03-30 | 上海爱数信息技术股份有限公司 | 分布式存储ceph的数据分布优化方法 |
CN105765575A (zh) * | 2013-11-11 | 2016-07-13 | 亚马逊科技公司 | 数据流摄取和持久性技术 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US7826365B2 (en) * | 2006-09-12 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for resource allocation for stream data processing |
US8478743B2 (en) * | 2010-12-23 | 2013-07-02 | Microsoft Corporation | Asynchronous transfer of state information between continuous query plans |
US8788913B1 (en) | 2011-12-30 | 2014-07-22 | Emc Corporation | Selection of erasure code parameters for no data repair |
US9774517B2 (en) | 2012-11-26 | 2017-09-26 | EMC IP Holding Company LLC | Correlative monitoring, analysis, and control of multi-service, multi-network systems |
US20140344453A1 (en) * | 2012-12-13 | 2014-11-20 | Level 3 Communications, Llc | Automated learning of peering policies for popularity driven replication in content delivery framework |
US9990221B2 (en) * | 2013-03-15 | 2018-06-05 | Oracle International Corporation | System and method for providing an infiniband SR-IOV vSwitch architecture for a high performance cloud computing environment |
US9934390B2 (en) | 2013-09-24 | 2018-04-03 | EMC IP Holding Company LLC | Data redaction system |
US9858322B2 (en) * | 2013-11-11 | 2018-01-02 | Amazon Technologies, Inc. | Data stream ingestion and persistence techniques |
US9483186B1 (en) | 2015-03-31 | 2016-11-01 | EMC IP Holding Company, LLC | Selectable policies for identifiable storage command streams |
-
2016
- 2016-08-30 CN CN201610780989.1A patent/CN107783834B/zh active Active
-
2017
- 2017-08-30 US US15/691,552 patent/US10545790B2/en active Active
-
2019
- 2019-12-12 US US16/711,672 patent/US11023274B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1759396A (zh) * | 2003-03-13 | 2006-04-12 | 皇家飞利浦电子股份有限公司 | 改进的数据检索方法和系统 |
WO2014049389A1 (en) * | 2012-09-27 | 2014-04-03 | Hewlett-Packard Development Company, L.P. | Dynamic management of cloud computing infrastructure |
CN103530189A (zh) * | 2013-09-29 | 2014-01-22 | 中国科学院信息工程研究所 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
CN105765575A (zh) * | 2013-11-11 | 2016-07-13 | 亚马逊科技公司 | 数据流摄取和持久性技术 |
CN104199736A (zh) * | 2014-06-30 | 2014-12-10 | 浙江大学苏州工业技术研究院 | 云环境下的数据中心节能方法 |
CN105450734A (zh) * | 2015-11-09 | 2016-03-30 | 上海爱数信息技术股份有限公司 | 分布式存储ceph的数据分布优化方法 |
Also Published As
Publication number | Publication date |
---|---|
US10545790B2 (en) | 2020-01-28 |
US11023274B2 (en) | 2021-06-01 |
US20180060118A1 (en) | 2018-03-01 |
CN107783834A (zh) | 2018-03-09 |
US20200117503A1 (en) | 2020-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3200095B1 (en) | Streaming application update method, master node, and stream computing system | |
US20170185440A1 (en) | Techniques for Routing Service Chain Flow Packets Between Virtual Machines | |
US11188462B2 (en) | Method, device, and computer program product for managing address mapping in storage system | |
US20120311295A1 (en) | System and method of optimization of in-memory data grid placement | |
US9928046B2 (en) | System and method for dynamic runtime merging of real time streaming operator environments | |
US10817323B2 (en) | Systems and methods for organizing on-demand migration from private cluster to public cloud | |
US10560537B2 (en) | Function based dynamic traffic management for network services | |
CN108292244B (zh) | 数据处理装置、数据处理方法及计算机可读取的记录介质 | |
US9560127B2 (en) | Systems, methods and algorithms for logical movement of data objects | |
CN110430142B (zh) | 用于控制流量的方法和装置 | |
US10282245B1 (en) | Root cause detection and monitoring for storage systems | |
US10664376B2 (en) | Hierarchical process group management | |
CN104991822A (zh) | 一种管理内存的方法和装置 | |
CN115827250A (zh) | 一种数据存储方法、装置及设备 | |
JP7528217B2 (ja) | Gpuパケット集約システム | |
CN107632890B (zh) | 一种数据流体系结构中动态节点分配方法和系统 | |
US11636000B2 (en) | Method, device, and computer program product for managing processes based on reading speed of a message queue | |
CN107783834B (zh) | 用于处理数据的方法和系统 | |
CN112364290A (zh) | 一种基于流式计算的可视化计算模型构建方法和系统 | |
CN113127187B (zh) | 用于集群扩缩容的方法和装置 | |
US9898357B1 (en) | Root cause detection and monitoring for storage systems | |
CN110990490A (zh) | 区块链网络中区块链的入账方法、装置、设备及介质 | |
CN113486040B (zh) | 数据存储方法、装置、设备及介质 | |
CN116700956B (zh) | 请求处理方法、装置、电子设备和计算机可读介质 | |
CN116737088B (zh) | 一种对象迁移方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |