用于连续图更新和计算的平台的制作方法

文档序号:6498488阅读:234来源:国知局
用于连续图更新和计算的平台的制作方法
【专利摘要】连续流数据(例如,消息、推特(tweet))通过平台的各摄取节点来接收。摄取节点可分析数据以创建图更新的事务,将序列号分配给该事务,并且将具有该序列号的图更新分发到平台的图节点。图节点可存储来自摄取节点的图更新,并且随后摄取节点可在进度表中报告图更新进度。可基于该进度表来拍摄快照,并且随后可实现图挖掘计算。可支持容错和衰减,并且可允许增量式扩展以应对增加的更新速度和计算需求。
【专利说明】用于连续图更新和计算的平台
[0001]背景
[0002]日益流行的在线服务(例如,Twitter?、Facebook?和Foursquare?)提供了来自各个用户在相对短时间量内的更新信息。这些服务上可获得的信息被持续生成并且比大多数静态网页在时间上敏感得多。例如,突发新闻出现并且由这些在线服务中的某些快速传播,伴随着新的流行活动或热点话题不断地从物理世界中的实时事件产生。尽管每一消息或更新可能较小且包含有限的文本内容,但数据流可包含用户、话题和消息之间的丰富连接,并且这些连接可用来生成重要的社会现象。
[0003]概述
[0004]分布式设计可采用数据流来构建持续变化的图结构以捕捉该流中存在的关系。这些设计可将图挖掘与图结构的图更新解耦。分布式系统可将图结构元数据与图结构的应用数据分开。可以实现时期提交协议以生成图结构的全局一致的快照。基于这些一致的快照,可以执行图挖掘算法以从该流中提取及时的洞察。
[0005]提供本概述是为了以简化的形式介绍将在以下【具体实施方式】中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0006]附图简述
[0007]参考附图来描述【具体实施方式】。在附图中,附图标记最左边的数字标识该附图标记首次出现于其中的附图。在不同的附图中使用相同的附图标记指示类似或相同的项。
[0008]图1是处理流送数据的说明性架构的示意图。
[0009]图2是用来示出跨图节点的分区创建一致的快照的示例的示意图。
[0010]图3是处理流送数据的说明性过程的流程图。
[0011]图4是产生一致分布的快照的说明性过程的流程图。
[0012]图5是执行图挖掘计算的说明性过程的流程图。
[0013]图6是实现增量式图挖掘计算的说明性算法。
[0014]图7是实现摄取节点中的容错的说明性过程的流程图。
[0015]图8是可在图1所示的环境中部署的说明性计算设备的框图。

【具体实施方式】
[0016]概览
[0017]数据流(例如,消息、推特(tweet))通过平台的一组摄取节点来接收。该组摄取节点中的一个摄取节点可分析数据流的每一传入馈源(例如,推特及其关联上下文)以创建图更新的事务,向该事务分配序列号,并且将具有该序列号的图更新分发到平台的多个图节点。图节点可提供具有增强的图支持的分布式存储器中密钥/值存储。这些图节点中的每一个可存储与关联应用数据分开的数据流的图结构元数据。
[0018]另外,在图节点存储这些图更新之后,摄取节点可在进度表中报告图更新进度。快照可基于进度表被周期性地拍摄。该进度表可用作逻辑时钟以定义时期的结束。在该时期内,可遵循预定次序在图节点中执行所有存储的局部图更新。图更新的执行可触发对新快照的增量式图计算,以更新关联应用数据并且从该数据流提取及时的洞察。
[0019]在某些实例中,本文讨论的技术可支持容错和衰减,并且允许增量式扩展以应付增加的更新速率和计算需求。
[0020]此处所描述的过程和系统可以按多种方式实现。各示例的实现在下文中参考以下附图来提供。
[0021]说明性体系结构
[0022]图1是处理流送数据的说明性架构100的示意图。架构100包括数据流102和用于连续图更新和计算的平台104。平台104包括一组摄取节点106、一组图节点108、全局进度表110和快照拍摄器112。平台104可通过包括摄取节点114的摄取节点106接收数据流102 (例如,消息、推特)。摄取节点114可分析每一传入记录(例如,消息以及与该消息相关联的上下文)。基于该分析,摄取节点114可创建图更新操作116的事务。对于该事务,摄取节点114可分配序列号118,并且将具有该序列号的图更新操作116分发到包括图节点120的图节点108。
[0023]图节点120可包括两层:存储层122和计算层124。存储层122可维护图数据,而计算层124可执行增量式图挖掘计算。具体而言,存储层122可使用邻接列表维护每一顶点作为图结构126的元数据,并且分开地存储关联数据128以供图挖掘计算。计算层124可基于对关联数据128进行操作的图挖掘算法来执行计算。
[0024]图节点108可存储由摄取节点106发送的图更新操作所指示的图更新。摄取节点106可在可由中央服务维护的全局进度表110中报告图更新进度。例如,摄取节点106可使用包括多个序列号的序列号140的全局进度表110。快照拍摄器112可基于全局进度表110中的序列号所指示的当前向量周期性地指令图节点108来拍摄快照。当前向量可用作全局逻辑时钟以定义时期的结束。在时期被定义之后,图节点108可以执行并且提交在该时期中所有存储的局部图更新以产生图结构快照。在各个实施例中,可遵循预定次序执行这些局部图更新。
[0025]在图结构126中进行因该时期引起的更新之后,计算层124可对新快照执行增量式图计算以更新感兴趣的关联值。
[0026]说明性的创建一致的快照
[0027]图2是用来示出跨图1的图节点108的分区创建一致的快照的示例的示意图200。一致的快照可通过摄取节点106、图节点108、快照拍摄器112和全局进度表110之间的合作来创建。根据各个实施例,一致的快照机制实现时期提交协议,该时期提交协议推迟应用更新直到时期被定义,如以下说明性过程中讨论的。
[0028]根据各个实施例,摄取节点106中的一个摄取节点(例如,摄取节点202或摄取节点204)可将数据流102的每一传入记录转变成包括可跨图节点108的逻辑分区206的一组图更新操作的事务。例如,这些操作可包括创建顶点V2,将传出边添加到顶点V1并且将传入边添加到顶点V2。这些操作中的每一个可完全在与顶点相关联的图结构126上执行。另外,摄取节点可创建连续事务序列,每一事务具有连续增加的序列号。那些序列号可用来构建全局逻辑时钟以决定哪些事务应被包括在快照中,并且还用作该快照的标识符。
[0029]在各个实施例中,可将图拆分成固定数量的(例如,512个)逻辑分区206,这些逻辑分区可进一步被分配给图节点108的物理机。例如,图分区可基于顶点ID的散列来执行,而局部性考虑可能不是必要的。在一些实施例中,逻辑分区206中的每一个可包括一组顶点,每一顶点具有存储在已排序列表中的一组有向加权边。同时,各边缘可被认为是图结构126的一部分,并且在存储层122中被添加和/或修改。该组顶点中的每一顶点还可具有为计算层124中的图挖掘计算的算法存储关联数据128的一组顶点字段。存储在顶点字段中的值的类型可以是任意的,只要该类型可被串行化。
[0030]例如,如图2中所示,摄取节点202可分别向分区V和分区u发送具有关联序列号的图更新操作。具体而言,在分区u中,对应操作可被分组以生成第一已分组操作208,第一已分组操作208可基于关联序列号的次序来排序并且被表示为(0,3,5)。类似地,在分区V中,对应操作可被分组并且被排序以生成第二分组操作210(即,(1,2,4))。
[0031]假定摄取节点202已经接收到来自图节点108中的所有相关分区(例如,分区u和分区V)的确认:具有序列号多至3的所有事务的图更新操作已被接收并存储。结果,摄取节点202可将其条目更新为第一序列号214“3”。为发起快照,快照拍摄器112可从全局进度表110中取包括一个或多个序列号118的全局向量212(即,{3,...,7})。全局向量212可用作全局逻辑时钟以定义时期216的结束。可向图节点108广播该新定义的时期,使得属于时期216的图更新在逻辑分区206中以相同确定性但人为次序来处理。因此,当且仅当序列号s不大于第一序列号214 “3”的情况下,来自具有序列号s的摄取节点202的图更新才被包括在时期216中。
[0032]类似地,当且仅当序列号s不大于第二序列号218 “7”的情况下,来自具有序列号s的摄取节点204的图更新才被包括在时期216中。在一些实施例中,逻辑分区上的操作被串行处理,并且在每一图节点上可存在足够的逻辑分区206,导致服务器级处足够的并发性。
[0033]在一些实施例中,创建快照的过程可继续传入更新。摄取节点106可连续地将新图更新发送到具有较高序列号的图节点108中。通过应用那些更新,摄取节点106分派和摄取节点108存储图更新操作的过程可与创建快照的过程重叠。因此,延迟执行不会影响足够长的时间段上的吞吐量。本公开的一致的快照机制可在小时期窗口中有效地对操作进行批处理,以在合理的时间线与能够处理高传入更新速率之间寻求平衡:速率越高,该批处理可更有效。
[0034]时期提交协议可确保原子性,因为事务中所有操作中的任一个被包括在快照中、或者它们都不被包括在快照中。这可排除包括一个顶点的快照,该快照具有传出边但没有与目的地顶点匹配的传入边。该协议可进一步确保按序列号次序处理来自相同摄取节点的所有事务。归功于图更新与图挖掘分开,在创建一致的快照时可仅处理简单的图更新,并且由此利用每一事务包括各自能在单个顶点结构上被应用的一组图结构更新的事实。对于那些取决于其他顶点状态的更新,它们可在图挖掘阶段被执行。
[0035]在一些实施例中,本公开中描述的快照机制可确保快照中要包括的该组事务的一致性,并且在该组内施加人为次序,使得所有事务可按相同次序来处理。在一些实施例中,次序可以是人为的。例如,在按顺序处理来自摄取节点114的更新之前,可指令图节点按特定序列号来处理那些更新。该外部施加的次序可能不需要考虑任何因果关系,部分原因是该机制将图更新与图挖掘分开,并且图更新通常简单且直接。因此,外部施加的次序可能既不反映物理时间次序也不反映任何因果次序。在各个实施例中,可应用不同的外部施加的次序,并且所得图可以是类似的。在一些实施例中,使顶点创建成为确定性的。例如,如果存在针对每个推特用户ID创建的顶点,则该顶点可具有确定性地取决于该推特用户ID的内部ID。因此,可在创建该顶点之前创建来自或去往该顶点的边,由此消除跨操作依赖性。
[0036]说明性操作
[0037]图3是处理流送数据的说明性过程的流程图。过程300被示为逻辑流程图中一组框的集合,这表示可用硬件、软件或其组合实现的一系列操作。在软件的上下文中,各个框表示在由一个或多个处理器执行时使得一个或多个处理器执行既定操作的计算机可执行指令。一般而言,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的次序并不旨在被解释为限制,并且任何数量的所述框可以按任何次序和/或并行地组合以实现该过程。除了过程400之外,本发明通篇所描述的其他过程(包括过程400、500和700)也应如此解释。
[0038]在302,平台104可接收数据流102 (例如,消息和推特)。在一些实施例中,数据流102可包括动态流送数据馈源,动态流送数据馈源可被连续地生成。动态流送数据馈源的新信息可比大多数静态网页在时间上更敏感。例如,突发新闻可能出现并且在动态流送数据馈源内快速传播,并且新的流行活动和热门话题可不断地从物理世界中的实时事件而产生。同时,实体(诸如用户)、话题和数据馈源之间的丰富连接可用来揭示重要的社会现象。在一些实施例中,动态流送数据馈源可使用多个元数据(例如,井号标签(hashtag))来标识与消息相关联的有争议信息。
[0039]在304,平台104可产生快照以定义与数据流102相关联的图结构数据126。在一些实施例中,平台104可通过使用时期提交协议(以下参考图4更详细地描述)来产生一致分布的快照。
[0040]在306,平台104可执行图计算以执行操作,例如,编译与图数据126相关联的应用数据。在一些实施例中,平台104可执行增量式图挖掘,使得计算结果可基于数据流102中的最近变化来更新。这些最近变化反映在新快照中。在一些实施例中,图挖掘算法(例如,搜索算法和TunkRank算法)可对存储关联数据128的一组顶点字段操作。
[0041]在308,平台104可基于应用数据128向用户呈现计算结果。例如,平台104可呈现搜索结果、用户影响力、图中两个顶点(例如,两个用户)之间的最短路径、以及与数据流102相关联的有争议话题。
[0042]图4是产生一致分布的快照的说明性过程400的流程图。在402,摄取节点114可接收数据流102的传入记录(例如,消息和与该消息相关联的上下文)。在404,摄取节点114可基于接收到的记录来创建图更新操作的事务。在一些实施例中,摄取节点114可通过解析记录来定义图结构126,并且随后产生包括一组图操作(例如,添加边和/或顶点)的事务。在一些实施例中,可以定义定制图更新操作(例如,添加10%的权重),以便提供在生成快照时当对摄取节点114应用这些操作时要调用的回调函数。
[0043]在406,摄取节点114可向事务分配序列号。在408,摄取节点114可使用序列号在图节点之间分发操作。在一些实施例中,可在逻辑分区206中对来自摄取节点106的一组图更新操作进行排序和分组,以生成按照原始摄取节点分组的操作。
[0044]在410,图节点120可存储来自摄取节点114的图更新。在一些实施例中,图节点120可用邻接列表维护每一顶点作为图结构126的元数据。因此,图更新可修改定义图结构126的元数据。在一些实施例中,图节点120可分开存储关联数据128。在一些实施例中,摄取节点114可被配置成将顶点ID映射到逻辑分区206,并且将逻辑分区206及其副本分配给服务器。
[0045]在412,在图节点108存储事务的操作之后,摄取节点114可在全局进度表110中标记图更新进度。全局进度表I1可记录摄取节点114的序列号以监视图更新进度。
[0046]在414,快照拍摄器112可基于全局向量212来定义时期216的结束,全局向量212包括全局进度表110中每一摄取节点(例如,摄取节点202和摄取节点204)的当前序列号。全局向量212可用作全局逻辑时钟以定义时期216的结束。
[0047]在416,图节点108可执行时期216中所存储的局部图更新,以在时期216被定义之后产生图结构快照。快照拍摄器112可向每一图节点广播时期216的定义,使得时期216中的所有图更新在逻辑分区206中按同一确定性次序来处理。
[0048]例如,假定在摄取节点i已从对应图节点接收到关于多至Si的事务的图更新操作已被接收并存储的确认的情况下,该摄取节点将其条目更新为序列号Si。快照拍摄器112可周期性地(例如,10每秒)从当前全局进度表中取序列号的向量(例如,Sl,S2,…,sn),其中Si是与摄取节点i相关联的序列号。快照拍摄器112随后可使用该向量作为全局逻辑(向量)时钟以定义当前时期的结束。该决定被广播给所有图节点,其中属于该时期的所有图更新在所有逻辑分区中按同一确定性但人为的次序来处理。当且仅当序列号s不大于Si成立时,来自具有序列号s的摄取节点i的图更新才被包括在当前时期中(即,S1, S2,…,sn)。
[0049]在一些实施例中,图结构126中的更新响应于时期216的定义可触发对快照的增量式图计算以更新关联数据128。各种算法可用来实现增量式图计算。
[0050]说明性增量式图挖掘计算
[0051]如上所讨论的,图节点108的计算层124可执行增量式图挖掘。计算结果可基于图中的最近变化来更新。图结构变化可反映在新的快照中;图挖掘算法可对存储这些算法的关联数据的一组顶点字段操作。
[0052]在一些实施例中,基于顶点的计算模型可用于图挖掘计算。在该模型中,感兴趣的数据可连同顶点一起被存储,并且计算通过跨每一顶点进行处理来前进。另外,图尺度缩减可用来计算全局值,全局值可以是任意的复合值(例如,前X名有影响力的用户或某种类型的顶点数量)。
[0053]在一些实施例中,平台104可基于拉模型和推模型来实现计算模型的混合,该混合带有变化以支持增量式计算和高效的分布式执行。在该混合模型下,关联数据128中的变化通常可在子图中传播,该子图由图结构126中的变化(例如,添加边)而引发。
[0054]图5是执行图挖掘计算的说明性过程500的流程图。在502,平台104可应用用户定义的规则通过比较当前快照与先前快照来检查图结构126的顶点状态。如果顶点未被修改(例如,边被添加以及值被改变),则在504,平台104可调用用户指定的函数来计算与顶点相关联的新值。在506,平台104可例如基于预定规则来确定值是否显著地改变。如果值未显著地改变(自判定506的“否”分支),则操作502至506可通过循环过程(经由导致返回判定502的自操作的506虚线)来执行。如果值显著地改变(自判定506的“是”分支),则在508,平台104可将这些变化传播给一组顶点(例如,邻域中的顶点或基于预定规则定义的顶点)。
[0055]在510,可实现顶点的图尺度聚集以使用图尺度缩减来计算全局值。这些全局值可以是任意的复合值(例如,前X名有影响力的用户或特定类型的数个顶点)。操作502至510可通过循环过程(经由自操作506导致返回判定502的虚线)来执行,如果需要的话该循环过程可包括传播变化。在一些实施例中,由其他顶点驱动的传播可改变顶点的状态。在一些实施例中,用户定义的顶点字段中的变化可响应于图结构中的特定变化(例如,添加边)来在子图中传播。在跨图结构126中的所有顶点未检测到状态变化时,可终止该传播。
[0056]在推模型中,每一顶点可将部分更新发送给另一顶点的顶点字段。例如,顶点的页排名(pagerank)是其相邻顶点的页排名的加权总和,并且每一顶点将其页排名发送给其向外的邻居,并且系统将它们添加在一起以形成总体页排名。在增量式算法中,每一顶点可发送其顶点字段值的增量式变化。例如,在页面排名中,每一顶点可发送其当前与先前页排名之间的差异。为使模型起作用,更新可以是可结合且可交换的。模型的一个特征在于执行发送者侧聚集的能力。对于每一顶点字段,编程者可定义将若干顶点所发送的更新组合成一单个更新的局部聚集函数。
[0057]推模型上的修改可通过跟踪针对新快照且在计算期间的“脏”字段来启用增量式计算。当字段被声明为“脏”时,其更新函数可被调用。更新函数的角色是将其新值与先前值的差异“推”到相邻顶点。平台104可跟踪发送给相邻顶点中的每一个的值以执行增量式计算。
[0058]在一些实施例中,各过程不仅可用来支持推模型,而且提供一种在顶点更新函数中分开地处理每一个别消息的方式。在本公开中,这些消息可由平台来处理并且通过用户定义的聚集函数来组合。更新函数可看到存储在顶点字段中的最终值。
[0059]可为分布式计算修改拉模型。拉模型中的顶点更新函数可读取其相邻顶点的值并且为自己产生新值。如果顶点更新函数确定改变是显著的,则它将要求平台更新其邻居,并且该计算在图中动态地传播。在平台104中,更新函数可不限于读取其邻居,并且可能想要读取特定类型的邻居或个别顶点(例如,新创建的顶点)。因此,为了最优性能,可建议编程者降低用于执行更新函数所要求的顶点信息量。另外,不同的更新函数可需要不同类型的数据。在一些实施例中,一些函数可能要求相邻顶点的特定顶点字段的值;但其他函数可能要求更多数据(例如,该邻居的边的列表)。
[0060]在一些实施例中,平台104可按使网络通信最小化的方式来调度对顶点的更新。具体而言,在若干更新函数请求同一顶点的情况下,平台可组合对相同顶点的请求,并且在所有所请求的数据可用时执行这些更新。同步模型可在程序发出对顶点的同步调用时被执行。请求可被进取性地批处理,使得有更多机会合并这些请求并且降低服务器之间的RPC
调用量。
[0061]在一些实施例中,用户可定义当快照中有新顶点或新的内/外边时被调用的函数。这些新顶点或新的内/外边可用作增量式图挖掘的初始化。在推模型中,与脏对应的顶点字段可被设置成随后导致对该顶点调用更新函数。类似地,在拉模型中,初始化阶段可涉及要求系统准备好用于执行更新函数所需的数据。
[0062]除了基于顶点的计算以外,平台104可提供一种使用在所有顶点上执行分布式缩减的聚集器函数来计算全局值的机制。
[0063]在一些实施例中,平台104还可针对频繁增量式计算步骤来设计。它可采用调度机制。计算可通过执行连续的超步骤来前进,被调度要在连续的超步骤上运行的每一顶点由每一分区执行。计算一致性可不被强迫,从而相邻顶点可被并行更新。
[0064]在一些实施例中,平台104可在每一快照处执行定义的最大数量的超步骤,除非任务队列为空且没有顶点要更新,这可能是收敛计算的指示。平台的执行模型还可与海量同步并行(BSP)和动态调度有关,并且全局聚集器可在每一 BSP步骤之后被更新。
[0065]说明性算法
[0066]图6是实现增量式图挖掘计算的说明性算法600。具体来说,该算法600可被实现为对特定用户的影响计算某种度量。算法600用来呈现以上讨论的特征的各种说明性实现。下列讨论涉及说明性算法600,行号602示于的算法的左手侧。该讨论提供了可以模块的任何顺序、功能或变型来实现的各种特征,以执行上面更为一般地描述的各种特征。因此,上文所讨论的技术不受到说明性算法600的实现的限制。
[0067]算法600可包括行1-4,其可处理具有连接彼此提及的用户的边的用户顶点的图。例如,可使用用户之间的较强连接(基于在Twitter中谁提到谁)。如果推特包含username (用户名)”,则这可意味着微博的提交者提到用户的用户名(即,注意到用户名)。在行5,每一 EmitOperat1ns (发出操作)可发出两个createEdge (创建边)操作:一个用于源添加传出边而另一个用于目的地添加传入边。如行8中所示,可添加代码以标记新的向外边和顶点以发起推送。
[0068]在行9-17, updateFunct1n (vertex)(更新函数(顶点))可将新的与先前加权的TunkRank的差异发送给其邻居。在行19,可添加代码以执行求和运算。在行20,可添加代码以检测字段是否改变得足以(脏)到触发计算(即,updateFunct1n) 0在一些实施例中,通过触发器中的调整参数(即,e ),算法可调整准确性/计算时间的折衷。另外,算法可使用全局聚集器对象来维护K个最有影响力的用户列表。在一些实施例中,将e设置为
0.001,这是足以找到最有影响力的用户的值。
[0069]说明性容错
[0070]图7是用于实现图1中的摄取节点106中的容错的说明性过程700的流程图。如以上讨论的,时期提交协议可假定每一摄取节点为图结构更新的事务产生连续单调递增的序列号。然而,摄取节点在向多个图节点发送更新中间有可能会失败。平台104提供具体化数并且利用全局进度表来解决该潜在的问题。
[0071]在702,平台104可将具体化数分配给摄取节点114,并且该具体化数可与同摄取节点114中的事务相关联的序列号配对。因此,各序列号可由对(例如,(c,s))来替换,其中c是具体化数而s是序列号。在704,这些对可用在发往图节点108的图结构更新中,并且可被记录在全局进度表110中。
[0072]在706,平台104可确定摄取节点是否失败和恢复,或者新机器是否扮演已失败摄取节点的角色。在708,经恢复的摄取节点或经替换的摄取节点在摄取节点失败和恢复的情况下或在新机器扮演已失败摄取节点的角色的情况下可密封具体化数。经恢复的摄取节点可咨询全局进度表,以寻找包括与该摄取节点相关联的具体化数和与事务相关联的序列号的对。
[0073]在710,平台可通过使原始具体化数加一来生成新的具体化数,并且可通过将序列号重置为零(O)或使原始序列号加一来生成新的序列号。
[0074]在712,平台可丢弃与摄取节点相关联的、具有大于该序列号的序列号的操作。为避免事务的任何损失,所有传入数据馈源可被可靠地存储,并且仅在它们已反映在全局进度表110中之后才能对其进行垃圾收集。
[0075]例如,当摄取节点失败和恢复时、或当新机器扮演已失败摄取节点的角色时,该复活的摄取节点i可咨询全局进度表以寻找与摄取节点i相关联的对(Ci,Si)。复活的摄取节点可将Ci密封在Si处,并且使用si+Ι作为新的具体化数。该摄取节点可将序列号重置为零(O)或在Si+1处继续。通过将Ci密封在Si处,具有(Ci,Si)的所有请求被视为无效并且被丢弃,其中s>Si。
[0076]在一些实施例中,平台可通过使用不同机制来分开处理存储层122处与计算层124处的容错。在存储层122,需要将图更新操作可靠地存储在各图节点上。平台可利用各摄取节点并且使用基于简单选出成员的复制机制。具体地,每一逻辑分区可在k(例如,3)个不同机器上被复制,并且可容忍f(例如,I)个出错,其中k>2f+l成立。图更新操作随后可被发送给所有副本,并且只要f+Ι个副本已响应,摄取节点就可认为该操作已被可靠地存储。摄取节点可保存用于每一逻辑分区的操作数量的计数器,并且将该计数器附连于每一操作。副本可使用该计数器来标识漏洞并且向其他副本要求丢失信息。副本可创建与它们按相同顺序应用相同组操作相同的快照。
[0077]在一些实施例中,如以上讨论的,在计算层124处,平台可触发对一致的快照的增量式图挖掘计算。计算的每一调用可花费相对少的时间量(例如,分钟级)。由于快照与复制被可靠地存储在存储层处,因此平台在计算阶段遭遇任何失败的情况下可回退并且重新执行。计算结果可被复制以便容错。平台可实现主要/备份复制方案,其中主要复制方案执行计算并且将结果复制给次要复制方案。
[0078]说明性增量式扩展和衰减
[0079]平台104的规模可取决于某些因素,包括传入数据馈源的速率、所得图的大小、以及图挖掘计算的复杂性。在一些实施例中,平台104可吸收更多机器进入系统以便处理更高负荷、更大量的数据、和/或更繁重的计算。例如,平台104可事先创建大量逻辑分区,并且增量式扩展随后可通过将特定逻辑分区移至新机器来实现。例如,假定平台可能想要将逻辑分区从S迁移到T。平台104可就以下各项与每一摄取节点s通信:关于该迁移以及关于承诺向S和T两者发送始于序列号\的所有对该逻辑分区的未来操作。一旦对于每一 I < i < n,具有逻辑时钟(Sl,S2,…,sn)满足Si彡\的快照被创建,平台就指令将该快照从S复制到T。一旦T接收到该快照,T就具有从S接管该逻辑分区所需的所有信息。由于计算与传入更新重叠,因此T通常能快速赶上S,而不会导致任何性能降级。
[0080]在一些实施例中,信息随时间衰减的值以及过期信息对结果的影响可逐渐变得越来越小。平台104可通过利用基于序列号的全局逻辑时钟来支持衰减。例如,假定过去η天中感兴趣的信息并且那η天内的该信息取决于哪天而具有不同权重。平台104实质上可创建η+1个并行图以跟踪过去η天加上当前的一天。当经过一天时,窗口可滑动。平台104可将那些衰减时间边界与由序列号的逻辑时钟定义的时期对齐。当经过实时的一天时,平台104可查看当前时期号并且使用该当前时期号作为边界。因此,用于计算的实图可通过取那些并行图的加强平均来构建。
[0081]说明性计算设备
[0082]图8示出了可用于实现连续图更新和计算的图1的平台104的说明性计算设备800。容易理解,可在其他计算设备、系统和环境中实现上述各种实施例。图8所示的计算设备800只是计算设备的一个示例,且并非旨在对计算机和网络体系结构的使用范围或功能提出任何限制。计算设备800也不旨在被解释成对于在该示例计算设备中所示出的任一组件或其组合有任何依赖或要求。
[0083]在非常基本的配置中,计算设备800通常包括至少一个处理单元802和系统存储器804。取决于计算设备的确切配置和类型,系统存储器804可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。系统存储器804通常包括操作系统806、一个或多个程序模块808,并且可包括程序数据810。操作系统806包括基于组件的框架812,该框架支持组件(包括属性和事件)、对象、继承、多态性、反射,并且提供面向对象的基于组件的应用程序编程接口(API)。计算设备800具有由虚线814划分的非常基本的配置。同样,一终端可具有更少的组件,但将与可具有这一基本配置的计算设备交互。
[0084]计算设备800可具有附加特征或功能。例如,计算设备800还可包括附加数据存储设备(可移动和/或不可移动),诸如,例如磁盘、光盘或磁带。在图8中通过可移动存储816和不可移动存储818示出这样的附加存储。计算机可读介质可包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。系统存储器804、可移动存储816和不可移动存储818都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算设备800访问的任何其他非传输介质。任何这样的计算机存储介质都可以是计算设备800的一部分。此外,计算机可读介质可包括在由处理器802执行时执行此处所描述的各种功能和/或操作的计算机可执行指令。
[0085]作为对比,通信介质可用诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机存储介质不包括通信介质。
[0086]计算设备800还可具有诸如键盘、鼠标、笔、话音输入设备、触摸输入设备等输入设备820。还可包括诸如显示器、扬声器、打印机等输出设备822。这些设备在本领域是公知的,因此不在此详细讨论。
[0087]计算设备800还可包含允许该设备诸如通过网络来与其他计算设备826进行通信的通信连接824。这些网络可包括有线网络以及无线网络。通信连接824是通信介质的一个示例。
[0088]可以理解,计算设备800只是合适的设备的一个示例,并不旨在对所述各实施方式的使用范围或功能提出任何限制。适用于各实施例的其他公知的计算设备、系统、环境和/或配置包括但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏控制台、可编程消费者电子产品、网络PC、小型计算机、大型计算机、包括上述系统或设备中的任一个的分布式计算机环境等。例如,计算设备800的某些或全部组件可被实现在云计算环境中,使得可使得资源和/或服务可经计算机网络可用而供移动设备选择性使用。
[0089]结论
[0090]虽然已经用对结构特征和/或方法动作专用的语言描述了各项技术,但是应该理解,所附权利要求不必限于所述的具体特征或动作。相反,这些具体特征和动作是作为实现这些技术的示例性形式而公开的。
【权利要求】
1.一种用于处理连续数据流的计算机实现的方法,所述方法包括: 接收所述连续数据流的记录; 由摄取节点基于所述记录来生成一个或多个图更新操作; 将序列号分配给所述一个或多个图更新操作; 将具有所述序列号的所述一个或多个图更新操作分发到多个图节点; 在所述一个或多个图更新操作被所述多个图节点存储之后,将所述序列号记录在全局进度表中; 基于所述全局进度表来定义时期的结束;以及 通过执行存储在所述多个图节点中且在所述时期内的图更新操作来产生图结构快照。
2.如权利要求1所述的计算机实现的方法,其特征在于,所述多个图节点分开地存储与所述连续数据流相关联的图结构数据与应用数据。
3.如权利要求2所述的计算机实现的方法,其特征在于,还包括: 基于所述图结构快照来更新所述图结构数据;以及 响应于更新所述图结构数据,基于已更新图结构数据以及存储在所述多个图节点中的所述应用数据来执行增量式图计算。
4.如权利要求1所述的计算机实现的方法,其特征在于,所述一个或多个图更新操作中的每一个包括创建一个或多个顶点或添加一个或多个传出边中的至少一项。
5.如权利要求1所述的计算机实现的方法,其特征在于: 所述全局进度表包括向量,所述向量包括所述序列号和另一序列号,所述另一序列号由生成一个或多个特定图更新操作并将其分发到所述多个图节点的另一摄取节点分配;基于所述全局进度表来定义所述时期的结束包括基于所述向量来定义所述时期的结束;以及 执行图更新操作包括执行所述一个或多个图更新操作以及所述一个或多个特定图更新操作。
6.如权利要求1所述的计算机执行的方法,其特征在于,所述一个或多个图更新操作包括通过向所述一个或多个图更新操作中的一个图更新操作添加预定加权的定制图更新操作。
7.一种计算机实现的方法,包括: 由一个或多个服务器接收动态流送数据馈源; 产生快照以定义与所述动态流送数据馈源相关联的图结构数据; 执行图计算以编译与所述图结构数据相关联的应用数据;以及 至少部分地基于所述应用数据来呈现结果。
8.如权利要求7所述的计算机实现的方法,其特征在于,所述结果反映所述动态流送数据馈源的一个或多个变化。
9.如权利要求7所述的计算机实现的方法,其特征在于: 产生所述图结构数据的快照包括通过使用时期提交协议来产生所述快照,以及 所述图结算包括增量式计算。
10.如权利要求7所述的计算机实现的方法,其特征在于,所述动态流送数据馈源包括至少一组连续生成的消息。
11.如权利要求7所述的计算机实现的方法,其特征在于,所述动态流送数据馈源包括多个井号标签。
12.如权利要求7所述的计算机实现的方法,其特征在于,产生所述图结构的所述快照包括: 基于数据流来创建各自包括指示与所述动态流送数据馈源相关联的一个或多个图更新的一个或多个操作的一组事务; 按递增顺序分配一组序列号,该组序列号中的每一个对应于该组事务中的一个事务; 将包括在该组事务中的操作分派给与一个或多个服务器相关联的多个图节点;以及 通过使用时期提交协议,基于所述操作以及该组序列号来产生所述快照。
13.如权利要求12所述的计算机实现的方法,其特征在于,基于所述操作以及该组序列号来产生所述快照包括: 在与该组序列号中的一个序列号相关联的所述一个或多个操作被存储在所述多个图节点之后,记录所述序列号;以及 通过执行与不大于所述序列号的序列号相关联的操作来生成所述数据流的所述快照。
14.如权利要求12所述的计算机实现的方法,其特征在于: 多个图节点中的每一个包括: 存储所述图结构数据的存储层,以及 存储所述应用数据的计算层;以及 分派所述操作包括将所述操作分派到所述多个图节点的存储层。
15.存储计算机可执行指令的一个或多个计算机可读介质,所述计算机可执行指令当在一个或多个处理器上被执行时导致所述一个或多个处理器执行如下动作,包括: 基于连续数据流按时间次序生成一组事务; 由摄取节点生成各自与该组事务中的一个事务相关联的一组序列号,该组序列号为顺序; 在该组事务中的一个或多个事务被存储在多个图节点中之后,通过使用该组序列号中的特定序列号来记录更新进度,所述一个或多个事务各自具有不大于所述特定序列号的序列号;以及 由所述多个图节点通过执行所述一个或多个事务来产生快照,以更新与所述连续数据流相关联的图结构元数据。
16.如权利要求15所述的一个或多个计算机可读介质,其特征在于,该组事务中的每一个包括应用于基于所述连续数据流所生成的图的顶点结构的一个或多个操作。
17.如权利要求15所述的一个或多个计算机可读介质,其特征在于,所述动作进一步包括: 将具体化数分配给所述摄取节点;以及 生成包括所述具体化数和所述特定序列号的对,并且其中记录所述更新进度包括通过使用所述对来记录所述更新进度。
18.如权利要求15所述的一个或多个计算机可读介质,其特征在于,所述动作进一步包括: 将具体化数分配给所述摄取节点; 确定所述摄取节点是否失败; 在所述摄取节点失败之后,生成新的具体化数和新序列号; 将所述新的具体化数分配给所述摄取节点;以及 丢弃该组事务中与所述摄取节点相关联且具有大于所述新序列号的序列号的一个或多个事务。
19.如权利要求15所述的一个或多个计算机可读介质,其特征在于,所述多个图节点分开地存储与所述连续数据流相关联的图结构数据与应用数据。
20.如权利要求19所述的一个或多个种计算机可读介质,其特征在于,所述动作进一步包括: 基于所述图结构快照来更新所述图结构数据;以及 响应于更新所述图结构数据,基于存储在所述多个图节点中的所述应用数据来执行增量式图计算,执行所述增量式图计算包括: 基于所述图结构快照来确定所述图结构数据的顶点被改变, 传播所述顶点的对应变化,以及 实现所述顶点的图尺度聚集。
【文档编号】G06F17/30GK104205095SQ201280072231
【公开日】2014年12月10日 申请日期:2012年4月5日 优先权日:2012年4月5日
【发明者】F·杨, L·周, M·吴, A·克罗拉, R·程, Y·苗, X·翁, J·洪 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1