在消息中传送元组的制作方法

文档序号:8385935阅读:390来源:国知局
在消息中传送元组的制作方法
【专利说明】
【背景技术】
[0001]从一个或多个数据源接收的数据可以作为流传送。在一些应用中,实时处理数据流可能是合期望的。实时处理数据可以涉及在运行中(on-the-fly)处理数据而并不首先将数据存储到数据储存库中。
[0002]在其中要处理相对大量的数据的场景中,可以提供具有多个处理节点的分布式系统以并行执行数据流的不同部分的处理。
【附图说明】
[0003]关于以下附图描述一些实施例:
图1是依照一些实现方式的包括分布式流分析系统中的处理节点的示例布置的框图; 图2是根据一些实现方式的发布者(publisher)过程的流程图;
图3是根据一些实现方式的订阅者(subscriber)过程的流程图;以及图4是根据一些实现方式的示例处理节点的框图。
【具体实施方式】
[0004]数据流分析系统可以包括用以执行数据流的处理的处理节点的布置。数据流的不同部分可以跨用于并行处理的处理节点分布,这增强总体系统吞吐量。处理节点还可以被布置在多个级中,其中具有一个或多个处理节点的第一级能够在数据流上执行第一操作。可以将来自第一级的结果提供给一个或多个处理节点的下一级,其能够在来自第一级的结果上执行第二操作。在一些情况中,在数据流分析系统中可以存在多于两个级。
[0005]处理节点可以是通过互连基础设施链接在一起的计算机或处理器。每一个处理节点可以执行在由处理节点所接收的数据上应用相应操作的流操作器(operator)。在处理节点中执行的流操作器可以在所接收的数据上应用某种类型的变换,或者可以基于所接收的数据计算结果数据。
[0006]图1示出在多个级102、104、106、108和110中提供的处理节点的示例布置。在图1的示例中,每一级具有多个处理节点(表示为圆圈)。在每一个处理节点内,字母(图1中所示的P、A、B、D和C)表示在处理节点中执行的流操作器的对应实例。流操作器可以是用户定义的操作器或预定义(预编程)的操作器。用户定义的操作器是可以由用户创建并且添加到分布式流分析系统的操作器。
[0007]数据源100发射可以提供给第一级102的数据。可以存在各种不同类型的数据源100。例如,数据源100可以是传感器、移动设备、社交联网数据源、企业(诸如商行、教育机构、政府机关等)中的数据源或者任何其它数据源。尽管在图1中描绘了仅一个数据源100,但是应注意的是,在其它示例中可以存在多个数据源。
[0008]将来自第一级104的输出数据提供给下游级104,其进而将数据输出到下游级106和108。级106进一步将数据输出到下游级110。流操作器(由图1的示例中的P、A、B、D和C表示)的布置具有图结构拓扑,因为数据流动沿可以由图表示的路径从节点到节点地发生。在图结构拓扑中,每一个流操作器可以具有在相应处理节点中执行的多个物理实例。在图1的示例中,P操作器具有八个物理实例,A操作器具有六个物理实例,B操作器和C操作器均具有四个物理实例,并且D操作器具有两个物理实例。流操作器实例可以以分布式的方式将消息传递到彼此。除执行并行处理之外,分布式串流(streaming)分析系统还是弹性的,因为每一个流操作器的物理实例数目可以基于需求而变化。
[0009]在特定示例中,P操作器可以执行用于将来自数据源100的事件数据解析成元组的解析任务(以下进一步描述)。A操作器可以计算特定属性的聚合(例如平均),而B操作器可以在特定时间窗口之上计算移动平均。C操作器和D操作器可以提供其它操作。尽管提供了流操作器的特定示例,但是应注意的是,在其它实现方式中,可以使用不同的流操作器。而且,虽然图1的分布式流分析系统具有五级,但是不同的分布式流分析系统可以包括不同数目的级。
[0010]在之后的讨论中,对发布者操作器和订阅者操作器做出参考。发布者操作器是产生要被发送以供订阅数据的一个或多个订阅者操作器消费(consumpt1n)的数据的流操作器。订阅者操作器是从另一流操作器接收数据的流操作器。在图1的示例中,在级102与104之间,级102中的处理节点包括发布者操作器,而级104中的处理节点包括订阅者操作器。类似地,在级104与106之间,级104中的处理节点包括发布者操作器,并且级106中的处理节点包括订阅者操作器。
[0011]此外,分布式流分析系统还可以包括协调器服务器112 (或多个协调器服务器)。协调器服务器112负责向相应处理节点分发逻辑(诸如流操作器实例)。而且,协调器服务器112能够向处理节点指派附加任务。此外,协调器服务器112能够监视在处理节点上执行的作业(job),并且能够监视故障。
[0012]节点间通信(从一个处理节点到另一处理节点的数据通信)可能是比节点内通信(处理节点内的数据通信)更加代价高的(在等待时间方面)。为了在传送数据流时支持具有减少的等待时间的节点间通信,一种可能的解决方案是部署相对昂贵且高带宽互连基础设施,其具有允许处理节点之间的及时数据通信的足够通信资源。这样的解决方案可能导致对于企业而言增加的总体成本。
[0013]为了在不必须增加互连基础设施投资的情况下改善节点间通信性能,根据一些实现方式的技术或机制可以减少与处理节点之间的数据通信相关联的消息传递开销的量。可以在处理节点之间的消息中承载数据。消息可以具有标头(header)和有效载荷(payload),其中有效载荷承载实际数据而标头包含控制信息(例如与通信协议有关的信息和用于路由消息的地址信息)。大量消息一般导致增加的消息传递开销,因为必须传送更多标头信息,其消耗互连基础设施的通信资源。
[0014]为了解决前述问题,当执行节点间通信时,可以将多个数据片段(piece)组合(也称为“批处理(batch)”)到用于从一个通信节点传送到另一通信节点的消息中。相比于传送包含相应数据片段的多个消息,传送包含经组合的数据片段的一个消息与减少的消息传递开销相关联。
[0015]被批处理的多个数据片段是数据的元组。元组包含针对属性的相应集合的值。例如,对于与企业的雇员有关的数据,元组的属性可以包括雇员标识符、雇员姓名、部门标识符(以标识雇员工作在的部门)等等。给定元组可以包含针对相应雇员的雇员标识符、雇员姓名和部门标识符的值。
[0016]在一些示例中,要由分布式串流分析系统处理的数据流可以是元组的无界限(unbounded)序列。数据流可以是可以由分布式串流分析系统实时处理的元组的连续实时数据流动(其中逻辑操作器实例能够在将元组存储到持久性数据储存库中之前在运行中处理数据流的元组)。
[0017]在具有图1的图结构拓扑的分布式串流分析系统中,在用于并行处理的每一个级内跨流操作器实例划分(partit1n)数据流的元组。例如,在级104中,A操作器实例在由P操作器实例输出的数据的相应不同划分上并行操作。
[0018]在一些实现方式中,数据的划分包括哈希(hash)划分。哈希划分涉及基于元组中的给定键码(key)的对应值计算哈希,诸如通过在给定键码的值上应用哈希函数。哈希标识相应划分;换言之,第一哈希值(或哈希值的第一范围)对应于第一划分,第二哈希值(或哈希值的第二范围)对应于第二划分,等等。因此,例如,在级104中,第一划分的数据元组将由第一 A操作器实例处理,第二划分的数据元组将由第二 A操作器实例处理,等等。
[0019]为了实现高效操作,给定划分的数据应当被一致地路由到特定级内的对应流操作器实例,使得对应流操作器实例可以处理数据并且可能地高速缓存给定划分的数据。如果给定划分的数据被路由到不同的流操作器实例,则将不会实现数据分组语义,这可能导致由多于一个处理节点处理给定数据片段,这导致低效率。
[0020]依照一些实现方式,可以在处理节点向订阅者操作器实例发送元组的批之前由处理节点中的发布者操作器实例执行数据流的元组的按组批处理。元组的按组批处理考虑在分布式流分析系统中执行的元组的划分。在一些实现方式中,被批处理在一起的元组是属于相同组的那些。元组的分组基于键码,其可以包括元组的一个或多个属性。通过在键码上执行的操作的分组标识共享相同键码值的元组的组。例如,如果元组包括属性x、Y和Ζ,并且键码包括X,则通过在键码X上的操作的分组产生元组的组,其中元组的每一个组共享属性X的共同值。在不同的示例中,键码可以包括多个属性,诸如X和Y。
[0021]根据一些实现方式的按组批处理将组中的多个元组组合到可以从发布者操作器实例发送到订阅者操作器实例的单个消息(在本文中称为“批消息”)中。将被批处理的多个元组置于批消息的有效载荷中。
[0022]批消息可以包括以下部分:包含相应键码的一个或多个属性的键码部分,以及包括分组的元组的有效载荷。批消息的有效载荷中的分组的元组可以在包括包含已经被批处理成批消息的元组的相应元组的多个行的关系(或表)中提供。在一些示例中,关系可以是嵌套有序关系,其中关系中的元组以在数据流中接收到元组的次序而被串行化和打包到消息中,并且其中关系在以下意义上被嵌套:关系取决于包含在批消息的键码部分中的键码。
[0023]应注意的是,包含经组合的元组的关系不包括在批消息的键码部分中提供的一个或多个键码属性。因此,键码的值仅存储在批消息的键码部分中一次,并且在关系中不重复。这样的按组批处理提供数据压缩,因为可以消除键码值的重复,这进一步改进互连基础设施使用效率。
[0024]批消息的键码部分使键码的一个或多个属性暴露,使得订阅者操作器实例可以执行批消息的有效载荷中的经批处理的元组的适当处理。接收批消息的订阅者操作器实例对批消息的有效载荷中的嵌套有序关系中的元组进行拆包和去串行化(deserialize)。
[0025]如以上所指出的,通过将数据流的元组的批合并到单个批消息的有效载荷中,可以实现处理节点之间的互连基础设施的更加高效的使用,因为可以减少消息传递开销的量。此外,通过执行根据一些实现方式的按组批处理,基于适当键码的数据组可以被引导到正确的订阅者操作器实例,使得订阅者操作器实例可以处理数据组而不必将元组重定向到其它处理节点上的其它订阅者操作器实例,这会浪费通信带宽。
[0026]在一些实现方式中,协调器服务器112可以向发布者操作器提供指示每一个订阅者操作器感兴趣(或已经订阅)的元组的相应组的指示。可替换地,订阅者操作器实例可以向发布者操作器实例提供订阅者操作器实例感兴趣(或已经订阅)的元组的组的指示。
[002
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1