CN109033234A - 一种基于状态更新传播的流式图计算方法及系统 - Google Patents
一种基于状态更新传播的流式图计算方法及系统 Download PDFInfo
- Publication number
- CN109033234A CN109033234A CN201810721794.9A CN201810721794A CN109033234A CN 109033234 A CN109033234 A CN 109033234A CN 201810721794 A CN201810721794 A CN 201810721794A CN 109033234 A CN109033234 A CN 109033234A
- Authority
- CN
- China
- Prior art keywords
- state
- streaming
- event
- update
- layer
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于状态更新传播的流式图计算方法及系统,基于状态更新传播的流式图计算模型,能够在原有图状态基础上,并发计算增量信息的影响,而无需在整个图上重新计算;同时通过细粒度分布式锁,实现状态的并发更新,保证计算结果的正确性。通过真实的数据集对本发明进行实时性和准确性测试,结果表明基于状态更新传播的流式图计算模型构建的算法能够得到较为准确的计算结果,计算偏差在1%以内;90%的图数据更新请求都能够在12ms内得到响应,符合实时性要求;任意两个计算节点更新冲突的概率在3%以内,可以满足高并发的需求。
Description
技术领域
本发明涉及一种流式图计算方法及系统,尤其涉及一种基于状态更新传播的流式图计算方法及系统,使用增量式方法进行更新,属于软件技术领域。
背景技术
图数据是计算机科学中常用的一类数据结构,它很好地表达了数据之间的关联性。现实世界中有很多数据都可以抽象成图数据,例如Web网页之间的链接、社交人物之间的互动以及买卖双方的交易都可以抽象成彼此关联而形成的图。而随着互联网的快速发展,图数据的总量也在急剧增加。如截至2016年第四季度,Facebook包含了18.6亿个活跃用户,每个用户平均好友155个;Web链接中图顶点数达到T级,边的个数达到P级(https://www.statista.com/topics/751/facebook/)。
因为图数据能够很好地表达数据之间的关联性和聚集情况,因此针对图数据可以挖掘出很多有用信息。例如,通过为购物者之间的关系建模,能很快找到口味相似的用户,并为之推荐商品;在社交网络中,通过传播关系发现意见领袖。图算法及相关的处理框架已经广泛运用在社交分析、商品推荐、舆论监测、欺诈检测等各个领域。
处理这些海量动态的图数据也对现有的图计算模型提出了挑战。一方面,这种超大规模的图数据很难一次性的全部导入内存中进行处理,即使能够借助外存一批一批地处理图数据,这也使得计算延迟显著增加;另一方面,这些图数据是动态变化、实时更新的,现有的图计算模型需要在这种动态的数据集上进行增量计算。
现有的成熟的图计算系统如Google Pregel(Malewicz G,Austern M H,Bik A JC,et al.Pregel:a system for large-scale graph processing[C]//Proceedings ofthe ACM SIGMOD International Conference on Management of data.ACM,2010:135-146.),Spark GraphX(Xin R S,Gonzalez J E,Franklin M J,et al.Graphx:A resilientdistributed graph system on spark[C]//First International Workshop on GraphData Management Experiences and Systems.ACM,2013:2.),这些图计算框架都采用了BSP(Bulk Synchronized Parallel)(Valiant L G.A bridging model for parallelcomputation[J].Communications of the ACM,1990,33(8):103-111.)模型来处理图数据。然而这些系统都是在静态的图数据上进行的离线批量处理,即每次针对整体的图进行计算,当图发生变化时,需要在变化后的整个图上重新计算一遍。这使得用户等待周期长,无法满足实时计算的要求,也浪费了系统资源(申林,薛继龙,曲直,杨智,代亚非.IncGraph:支持实时计算的大规模增量图处理系统[J].计算机科学与探索,2013,12:1083-1092.)。
因此针对图数据不断变化的情况,现有工作提出了很多在动态图上直接进行计算的方法。针对这类动态图计算的问题,大致可以分为两类:估计计算和准确计算。对于估计计算,大部分的算法是希望通过采样来降低时间和空间开销,并通过特定的采样方法来减少和真实值之间的差距。如Bar-Yossef Z(Bar-Yossef Z,Kumar R,SivakumarD.Reductions in streaming algorithms,with an application to countingtriangles in graphs[C]//Proceedings of the thirteenth annual ACM-SIAMsymposium on Discrete algorithms.Society for Industrial and AppliedMathematics,2002:623-632.)等人研究了在流图上如何通过设计采样规则来估计图中三角形数目;S.Baswana(Baswana S.Streaming algorithm for graph spanners—singlepass and constant processing time per edge[J].Information Processing Letters,2008,106(3):110-114.)等人通过将原始的图数据转化为简单的数据结构来保存图中元素,从而降低了内存消耗。对于准确计算,现有的KineoGraph(Cheng R,Hong J,Kyrola A,et al.Kineograph:taking the pulse of a fast-changing and connected world[C]//Proceedings of the 7th ACM european conference on Computer Systems.ACM,2012:85-98.)和IncGraph提出采用增量计算模型来进行实时计算,然而这种增量式的更新是串行执行的,实时性有限。SpecGraph(景年强,薛继龙,曲直,杨智,代亚非.SpecGraph:基于并发更新的分布式实时图计算模型[J].计算机研究与发展,2014,(S1):155-160.)虽然在上述增量模型的基础上有所改进,提出了基于推测机制的并发更新模型,然而该模型假设顶点的状态只依赖于顶点当前接收的信息,而与顶点之前的旧状态无关,这种假设使得系统的适用性差,很多算法中顶点的状态不仅跟顶点接收消息有关,还跟顶点的旧状态有关,因此模型的表达能力有限。
总之,现有技术存在实时性有限、系统适用性差、模型表达能力有限的问题。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种基于状态更新传播的流式图计算方法及系统,能够在原有图状态基础上,并发计算增量信息的影响,而无需在整个图上重新计算;同时通过细粒度分布式锁,实现状态的并发更新,保证计算结果的正确性。
本发明技术解决方案:一种基于状态更新传播的流式图计算方法,包括以下步骤:
步骤一:挑选流式化处理的图算法;
步骤二:针对步骤一中的流式化处理的图算法,构建基于状态更新传播的流式图计算模型;
步骤三:利用步骤二构建的基于状态更新传播的流式图计算模型,对步骤(1)中选取的流式化处理的图算法进行基于细粒度分布式锁的状态更新,实现流式图计算的并行化;
步骤四:对步骤三中的流式图计算进行并行化后,进行多维度测试,验证基于状态更新传播的流式图计算方法的可行性。
所述步骤一中,挑选流式化处理的图算法实现过程如下:
(1)对流式场景下的图算法从五个方面进行特征分析,所述五个方面包括影响范围、计算方法、计算顺序、计算特性和计算次数,得到分析结果;
(2)根据步骤(1)中的分析结果,判断流式场景下的图算法是否满足以下三个特点:即计算方法采用增量计算形式、计算顺序满足序列一致性、计算性质满足代数运算的交换律和结合律;
(3)挑选出的同时满足上述三个特点的流式场景下的图算法,对算法进行流式化。
所述步骤二中,基于状态更新传播的流式图计算模型包括三个组件:状态、事件和转换;图4所示为基于状态更新传播的流式图计算模型的组件及其实施示例,将静态图数据在每个时刻抽象成一个对应的状态,将动态图数据抽象成一系列事件流,事件触发使得静态图数据由一个状态转换成另一个状态;
所述状态(State),反映静态图数据当前的特征信息,所述特征信息以顶点为单位进行体现,也可以由用户自定义的特征信息来体现;所述基于状态更新传播的流式图计算方法将状态抽象成一个接口,该接口可以对整个图或者单个图中节点的状态进行更改或获取,同时可以传播图中节点的状态到其邻接点;用户可以扩展该接口来实现更加复杂的状态信息管理。
事件(Event),事件触发图由T1时刻的State1转换为T2时刻的State2,事件是由事件值(Event Value)和事件类型(Event Type)组成;所述事件的值分为两种:其中一种事件由顶点编号和顶点的值组成,另一种事件由边起点、边终点以及边值组成;所述事件的类型分为三种:新增(ADD)、删除(DELETE)和更新(UPDATE);两种事件的值和三种事件的类型组合出6种事件:新增边,删除边,更新边;新增顶点,删除顶点,更新顶点;所述6种事件基本涵盖了所有的图变化的情形;由事件抽象成的接口可以获取指定事件的值和类型。
转换(Transform),转换是由事件触发的图的更新过程,即图是如何根据相应的事件来由State1转换成State2;转换函数是动态图计算模型中的计算逻辑,详细定义了图如何根据到达的事件,从一个状态转变成另外一个状态,称之为状态更新的图计算模型的驱动程序,驱动图从一系列的事件流转换成一系列对应的状态流;由状态抽象成接口根据事件转换静态图数据的状态。
所述步骤三中,基于细粒度分布式锁的状态更新方法实现步骤如下,图5为状态更新实施流程图,为状态更新方法实现步骤的简要表示:
(1)根据不同的流式场景下的图算法,将用户关心的静态图数据的特征信息抽象成与当前静态图数据对应的特定的状态,这些状态以顶点为单位进行保存,或以边或者以顶点和边混合的方式来组织。所述状态是高度能够自定义,利用开源的分布式内存数据网格Hazelcast来作为存储层,在各个计算节点上存储静态图数据的状态信息;
(2)在(1)中将静态图数据抽象成状态信息后,开始接收事件流,将事件流按照某种分片规则,即动态图数据的哈希划分算法分发到不同的计算节点上;
(3)分别在各个计算节点上独立进行状态更新;根据流式场景下图算法的影响范围和计算次数的不同,将静态图数据的状态更新的问题域划分成独立状态和关联状态两种问题;对于独立状态,图2所示为独立状态的存储和更新过程图,因为状态内的各个图节点之间不会相互影响,因此独立状态并发地更新,即按照状态的组织形式,将静态图数据的状态分布式地存储在多个计算节点上,而且每个计算节点上的状态都能够同时进行更新,并向用户实时反馈更新结果;对于关联状态,图3所示为关联状态的图节点状态更新过程图,采用开源的分布式内存数据网格Hazelcast提供的分布式锁结构对状态进行更新,即每次只需要锁住组成状态的单个因子本身,而不需要锁住流式场景下图算法的影响范围内的所有顶点;Hazelcast提供的分布式锁以因子为单位,每次访问因子时,首先检测所述因子是否是被占用状态,如果没有被占用,则首先将所述因子设置为已占用,然后更新所述因子的状态,更新完毕之后,再将所述因子设置为空闲状态,同时满足设定阈值时,将已被更新的所述因子的状态传播给其它顶点;
(4)计算节点都更新完毕之后,获得静态图数据的新状态,返回第(2)步继续进行动态图数据的处理。
所述步骤四中验证基于状态更新传播的流式图计算方法的可行性从实时性、准确性、更新冲突概率三个方面进行算法的性能评测;
实时性指流式场景下的图算法的实时计算能力,其评测的是处理一条动态图数据所需要的时间,时间越短代表流式场景下的图算法性能越好。
准确性方面,通过将流式场景下的图算法计算的结果与批式场景下的图算法计算的结果进行比较,得到算法的准确性;
更新冲突概率方面,将数据集按照边的源顶点和目标顶点的大小顺序排序,然后将数据集采用Round-robin的方式分配给计算节点分别进行计算,目的是通过对边进行排序和按序发送给各个计算节点来最大限度地提高计算节点之间发生更新冲突的概率,当有多个计算节点同时竞争获得同一个图节点的状态时,更新冲突的次数增加,以此来得到评测结果。
一种基于状态更新传播的流式图计算系统,包括接入层、计算层、存储层和访问层;
接入层:将动态图数据以流的形式分配到位于计算层的各个计算节点。这些动态图数据的数据源可以以文件的形式存储,也可以存储在如Kafka,HBase等其它分布式系统中。系统提供了接口,能够很好的将这些数据源对接到系统。
计算层:各个计算节点访问存储层中的相关存储节点的静态图数据的状态,并且根据图状态和当前接收的动态图数据以及对动态图数据的处理过程来触发图状态的更新,同时将所述更新同步到相关存储节点中,以便除当前计算节点外的其它计算节点能够立刻使用。该层又可以细分为:应用层、服务层、API层和核心层;
其中应用层面向用户的上层运用,这些运用涵盖了典型的业务场景,例如链接分析、欺诈检测、社区发现等,是针对某个具体问题的具体应用。该层组合了服务层提供的各种库函数,为特定的业务场景定制解决方案,一般来说由用户来实现;服务层提供给用户使用的丰富的库函数和图算法;API层屏蔽了底层的实现细节,向用户提供了一个统一的流式图数据的处理接口,用户可以组合这些接口完成流式场景下的图算法;核心层抽象出图和流的概念,并且通过一个统一的计算模型将两者结合起来。采用基于状态更新传播的流式图计算模型作为计算模型,采用面向用户视角的状态作为编程模型,提供了实时图计算的能力。
存储层:该层采用分布式存储架构,负责图状态的存储;系统内的状态分散到各个存储节点上进行存储和备份,同时还提供了持久化接口,也将这些状态异步备份到永久性介质上,进一步提高系统的可靠性;状态是从用户的视角进行定义的,直接反映了用户关心的数据,所以在同一时刻,系统可能存在多种不同类型的状态,这些状态对系统内部可以由计算节点直接访问,对系统外部也可以由用户根据访问节点,实时访问中间计算结果;本层利用开源产品分布式内存数据网格Hazelcast来存储图的状态信息,Hazelcast提供了细粒度的分布式锁结构,使用该接口来锁住顶点的状态;
访问层:向最终用户提供接口,用户作为访问节点,允许用户在任意时刻访问图的状态。在本层本发明使用RESTful规范来设计数据的访问规则,利用Jetty作为内嵌的服务器,向用户提供数据访问能力。
与现有流式图计算系统相比,本发明具有如下优势:
(1)与现有流式图计算系统相比较,采用增量计算的方式,能够有效减少整体迭代所需的次数,收敛更快;采用变化传播的方式,能够有效控制增量数据所来带的影响范围,减少参与计算的顶点的数目,从而减少通信和计算开销。
(2)与现有流式图计算系统相比较,保证因子(这里的因子等价于BSP模型中的顶点)与因子之间的更新都是并行的,只有属于一个因子的多个更新请求才会被串行执行,这样真正实现了多个因子的并行更新策略,而且没有显式的同步过程,消除了计算最慢的节点拖慢整个超步的计算速度的短板效应。
●流式图计算系统架构
本发明的系统架构如图1所示,它是基于状态更新传播模型的分布式的流式图计算系统,采用计算和存储分离的形式,以本发明设计的基于状态更新传播模型为计算框架,以开源的分布式数据网格Hazelcast为存储框架,来达到流式图的实时计算的能力。
从整体上看,系统可以分为以下4个部分:
(1)接入层:系统的输入,图数据以流的形式流入到系统的各个计算节点中。这些图数据可以以文件的形式存储,也可以存储在如Kafka,HBase等其它分布式系统中。系统提供了接口,能够很好的将这些数据源对接到系统。
(2)计算层:系统的核心层。接入层提供的数据将分配到各个计算节点,计算节点可以访问存储层中的图状态,并且根据图的状态和当前接收的事件来触发图状态的更新,并且将这种更新同步到存储节点中,以便其它计算节点能够立刻使用。
(3)存储层:负责整个系统的状态的存储。该层采用分布式存储架构,系统内的状态分散到各个存储节点上进行存储和备份,同时还提供了持久化接口,也可以将这些状态异步备份到永久性介质上,进一步提高系统的可靠性。状态是从用户的视角进行定义的,直接反映了用户关心的数据,所以在同一时刻,系统可能存在多种不同类型的状态,这些状态对系统内部可以由计算节点直接访问,对系统外部也可以由用户根据访问节点,实时访问中间计算结果。在本层中,本发明利用开源产品分布式内存数据网格Hazelcast来作为存储层,存储图的状态信息,Hazelcast提供了细粒度的分布式锁结构,本发明使用该接口来锁住顶点的状态。
(4)访问层:向最终用户提供接口,允许用户在任意时刻访问图的状态。在本层本发明使用RESTful规范来设计数据的访问规则,利用Jetty作为内嵌的服务器,向用户提供数据访问能力。
本发明与现有技术相比的优点在于:本发明方法中提出了基于状态更新传播的流式图计算模型,能够在原有图状态基础上,并发计算增量信息的影响,而无需在整个图上重新计算;同时通过细粒度分布式锁,实现状态的并发更新,保证计算结果的正确性。通过真实的数据集对本发明进行了实时性和准确性测试之后,结果表明基于状态更新传播的流式图计算模型构建的算法能够得到较为准确的计算结果,计算偏差在1%以内;90%的图数据更新请求都能够在12ms内得到响应,符合实时性要求;任意两个计算节点更新冲突的概率在3%以内,可以满足高并发的需求。
附图说明
图1为本发明基于状态更新传播的流式图计算系统架构图;
图2为本发明中独立状态的存储和更新过程图;
图3为本发明中基于细粒度分布式锁的因子更新过程图;
图4为本发明中基于状态更新传播的流式图计算模型图;
图5为本发明的状态更新实施流程图;
图6为DD算法实时性图;左图展示的是DD算法的累计分布图,右图展示的是每个响应时间(处理一条增量数据所需的时间)所占的百分比图;
图7为TC算法实时性图;左图展示的是TC算法的累计分布图,右图展示的是每个响应时间(处理一条增量数据所需的时间)所占的百分比图;
图8为SSSP算法实时性图;左图展示的是SSSP算法的累计分布图,右图展示的是每个响应时间(处理一条增量数据所需的时间)所占的百分比图;
图9为PR算法实时性图;左图展示的是PR算法的累计分布图,右图展示的是每个响应时间(处理一条增量数据所需的时间)所占的百分比图;
图10为算法准确率测试结果图;
图11为算法更新冲突概率图;
图12为实例特征分析图;图中假设系统中新增的边为e=(v1,v2),边的方向为v1指向v2。(a)图表示v1,v2均为新顶点的情况;(b)图表示v2为新顶点,v1已经存在于系统中的情况;(c)图表示v1为新顶点,v2已经存在于系统中的情况;(d)图表示v1,v2均已经存在于系统中的情况;
图13为更新冲突概率实验架构图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细说明。
如图1所示,本发明的一类基于状态更新传播的流式图计算方法,包括:
(1)一种流式场景下图算法的特征分析方法,用于判断本发明是否可以实现其在流式场景下的算法。
(2)根据(1)的分析结果与一种基于状态更新传播的流式图计算模型构建方法,构建流式图计算模型,用于解决图计算的流式化问题。
(3)根据(2)的图计算模型与一种基于细粒度分布式锁的状态更新方法,实现流式图算法,用于解决图计算的并行化问题。
(4)根据(3)的流式图算法和一种流式图算法的性能评测方法,从实时性、准确性、更新冲突概率等方面对流式图算法进行性能评测。
下面对各个步骤进行详细说明。
1.流式场景下图算法的特征分析方法
传统的批处理模式的图算法,在流式场景下已经不再适用。因此为解决流式场景下的图计算问题,首先需要分析典型的图算法在流式场景下所呈现的特点,再根据这些特点来设计通用计算模型。本发明从以下五个方面对流式场景下图算法的特征进行分析:
(1)影响范围:指新增加的边可能会影响到哪些顶点的状态。
(2)计算方法:指采用何种计算模型来进行计算。
(3)计算顺序:指被影响的顶点谁先参与计算对最终的计算结果是否相关。
(4)计算特性:指被影响的顶点的更新函数满足哪些代数运算的性质。
(5)计算次数:指这种更新函数是否会被多次触发。
本发明选取了图计算中具有代表性的顶点度分布(Degree Distribution,简写为DD)、三角形计数(Triangle Count,简写为TC)、单源点最短路径(Single Source ShortestPath,简写为SSSP)和网页排名(PageRank,简写为PR)四个算法来进行分析,这四个算法是图计算中最常见最通用的算法,而且也是其它算法的基础算法。表1从影响范围、计算方法、计算顺序、计算特性和计算次数五个维度分析了这4个算法在流式场景下的特点。
通过对流式场景下图算法的特征分析,当图算法满足以下三个特点时,本发明可以实现面向流式图的算法:
(1)计算方法可以采用增量计算形式。在流式场景下,本发明对这些算法进行改进的首要前提是这些算法能够充分利用原始的计算结果,在原始计算结果基础上根据新增的图数据来进行增量计算。这种计算形式大大减少了流式场景下的顶点更新代价。
(2)计算顺序满足序列一致性。在确定新增的边的影响范围后,如果被影响的顶点的更新顺序与最终的计算结果无关,本发明认为这样的计算满足序列一致性原则。这样被影响的顶点谁先更新都不会影响最终计算结果。
(3)计算性质满足代数运算的交换律和结合律。当有新的边流入系统时,如果被影响的顶点的更新函数满足代数运算的交换律和结合律,那么可以避免顶点被多次更新或者由于更新顺序不同导致结果错误的情况出现。
表1流式场景下的图算法特征分析
2.基于状态更新传播的流式图计算模型构建方法
基于状态更新传播的流式图计算模型将动态变化的图数据抽象成连续不断的事件流,将图的中间计算结果抽象成图的状态,根据前一时刻的历史状态和到达的事件,以增量计算的方式来触发图状态的更新。该模型能够有效解决流式图计算的问题,而且通过增量计算的方式,既减少了每次状态更新的代价,又使得计算的结果相比估算模式更加准确。
基于状态更新传播的流式图计算模型包括三个组件:状态、事件、转换。将图在每个时刻抽象成一个对应的状态(State),将流动的图数据抽象成一系列事件流(EventStream),事件(Event)触发了图由一个状态转换(Transform)成另一个状态。
状态(State),反映了图当前的特征信息,这些特征信息可以以顶点为单位进行体现,也可以由用户自定义的特征信息来体现,状态是由因子(Factor)组成,因子是指组成状态的基本单位,如状态可以以顶点的方式组织,那么这里的因子就是顶点。本发明将状态抽象成一个接口,该接口的基本方法表见表2,用户可以扩展该接口来实现更加复杂的状态信息管理。
表2 State接口方法表
需要注意的是,状态反映了用户的关注点,虽然是根据流动的图数据而动态计算生成的,但并不等价于图数据本身,即状态不直接存储原始的图数据,而只存储用户关心的图的某些特征信息。这使得系统无需存储庞大的原始图数据,只需要存储设计精巧的状态信息即可反映图的特征信息。例如当统计图的边数时,State可以设计为一个计数器,该计数器反映了当前时刻流入系统中的图的边数,每次新增或者删除边时,增加或减少这个计数器的值,即可实时反映当前图的边数信息。
事件(Event),事件触发图由T1时刻的State1转换为T2时刻的State2,事件是由事件值(Event Value)和事件类型(Event Type)组成。如增加一条边e(v1,v2)这个事件中,e(v1,v2)是事件的值,增加是事件的类型。一般来说,事件的值分为两种:(顶点编号,顶点的值)和(边起点,边终点,边值);而事件的类型分为三种:新增(ADD),删除(DELETE),更新(UPDATE)。这样可以组合出6种事件:新增边,删除边,更新边;新增顶点,删除顶点,更新顶点。这6种事件基本涵盖了所有的图变化的情形。事件的接口方法表见表3。
表3 Event接口方法表
转换(Transform),转换是由事件触发的图的更新过程,即图是如何根据相应的事件来由State1转换成State2。转换函数是动态图计算模型中的计算逻辑,详细定义了图如何根据到达的事件,从一个状态转变成另外一个状态,可以称之为状态更新的图计算模型的驱动程序,驱动图从一系列的事件流转换成一系列对应的状态流。状态的接口方法表见表4。
表4 Transform接口方法表
3.基于细粒度分布式锁的状态更新方法
基于细粒度分布式锁的状态更新方法,其实现步骤如下:
(1)根据不同算法,将用户关心的图数据的特征信息抽象成特定的状态,这些状态可以以顶点为单位进行保存,也可以以边或者其它的方式来组织,状态是高度可自定义的。本发明利用分布式内存数据网格Hazelcast来作为存储层,存储图的状态信息。
(2)接收事件流,将事件流按照某种分片规则(即特定的图的划分算法)分发到不同的计算节点上。
(3)分别在各个计算节点上独立进行状态更新。根据影响范围和计算次数的不同,将状态更新的问题域划分成独立状态和关联状态两种问题。对于独立状态,因为状态内的各个因子之间不会相互影响,因此独立状态可以并发地更新。即可以按照状态的组织形式,将图的状态分布式地存储在多个计算节点上,而且每个计算节点上的状态都可以同时进行更新,并向用户实时反馈更新结果。而对于关联状态,采用Hazelcast提供的分布式锁结构对状态进行更新,即每次只需要锁住组成状态的单个因子本身,而不需要锁住范围内的所有顶点。该锁以因子为单位,每次访问因子时,首先检测该因子是否是被占用状态,如果没有被占用,则首先将该因子设置为已占用,然后更新因子的状态,更新完毕之后,再将因子设置为空闲状态,同时满足一定阈值时,将已被更新的因子的状态传播给其它顶点。
(4)计算节点都更新完毕之后,获得图的新状态。返回第(2)步继续进行流数据的处理。
4.流式图算法性能评测方法
本发明采用了斯坦福大学提供的Live Journal的社交数据作为实验数据,其中的图数据包括大约480万个顶点和6900万条边。
为了详尽展示不同算法的实时计算能力,本发明分别测试了DD、TC、SSSP和PR算法在全集数据上的实时计算能力。图中图6至图9分别展示了这四个算法的实时性,左图展示的是算法的累计分布图(Cumulative Distribution Function,CDF),右图展示的是每个响应时间(处理一条增量数据所需的时间)所占的百分比图。从算法的CDF图来看,这四个算法的90%的请求都能够在12ms内立即得到响应,符合实时性的要求;从算法的实时性分布图来看,不同算法的响应时间略有不同,但整体的响应时间分布符合长尾效应:(1)DD算法的平均响应时间最短,超过一半的更新请求都能够在1ms的时间内得到响应;(2)TC算法和SSSP算法的平均响应时间比DD算法要长,而且大部分请求的响应时间都集中在2ms或4ms;(3)PR算法的平均响应时间最长,但90%的请求都能够在12ms内得到响应,而请求的响应时间大部分都集中在4ms-8ms之间。
图10展示的是DD、TC和SSSP算法在计算节点总数为1、2、4、6、8、10下的准确率。这三个算法的准确率在不同并发度下均为100%,是因为在实现时本发明采用了基于细粒度分布式锁的更新策略,保证了算法最终计算结果的准确性。
图11展示的是DD、TC、SSSP和PR算法的更新冲突概率图。由图可以看出,这四个算法的更新冲突概率都在3%以下,每个算法的更新冲突概率略有不同。整体上来看,PR算法更新冲突概率最大,这是因为PR算法每次更新时,会以新增的边的两个顶点为中心向外传播,可能会影响整个连通子图内的所有顶点,所以更新冲突概率最大;而SSSP算法是按照以新增边的源顶点为中心,沿着某条路径往外传播的方式,有可能传播到某个顶点就结束(当新增的这条边不能使得其它邻接点的SP值减小时传播结束),因此传播的影响范围没有PR算法大,所以更新冲突的概率相比PR算法会小很多;TC算法只会影响新增边的两个顶点的所有公共邻接点,影响范围更小,更新冲突的概率就更小;至于DD算法,按照影响范围来看应该是最小的,但是由于本实验的人为设计,即将顶点编号相近的边尽量安排在不同的计算节点上,这将导致多个计算节点同时争取更新同一个顶点的状态,所以更新冲突的概率也比较高,如果在自然分发的情况下,因为DD算法的更新只会影响到新增这条边的两个顶点,影响范围最小,所以更新冲突概率是最小的。
基于状态更新传播的流式图计算模型从用户的角度出发来定义状态,只保存用户关心的数据,相比较传统的基于顶点的编程模型来说表达能力更强。在此本发明选取了单源点最短路径(Single Source Shortest Path,简写为SSSP)算法来说明如何在该模型上如何进行算法设计。
下面结合图再进行详细说明。
1.流式场景下SSSP算法的特征分析方法
这一步对应权利要求1中的(1),用于判断SSSP算法是否可以进行流式化。SSSP算法是解决有向图中,给定一个源点,求解这个源点到图中其它各个顶点的最短路径问题。最短路径问题是图论算法中的经典问题,也是诸如路径规划、物流规划、GPS导航、社交网络等现实世界中许多应用的基本问题。
假设系统中新增的边e=(v1,v2),边的方向为v1指向v2。图12为SSSP算法的特征分析图,一共有如图12所示的(a)v1,v2均为新顶点;(b)v2为新顶点,v1已经存在于系统中;(c)v1为新顶点,v2已经存在于系统中;(d)v1,v2均已经存在于系统中这4种情况,而前面的3种情况只可能是增加边的事件触发(因为不可能删除原图中根本就不存在的顶点),而第4种情况可能是增加、更新和删除这三种类型的事件。在图中,黑色顶点是源点,白色的顶点是图中已经存在的顶点。在每个子图中,左边部分是原图,中间灰色的顶点和连线是新增的边(新增边的两个顶点编号为v1,v2),右图为新增边之后的新图。
针对以上4种情况,有如下分析:
(a)v1,v2均为新顶点
如图12中的(a)所示,v1,v2为原图中不存在的新增加的顶点,对于这两个新增加的顶点,原图中的任何顶点都无法到达这两个顶点,因此这两个顶点的SP值为无穷大。
(b)v2为新顶点,v1已经存在于系统中
如图12中的(b)所示,v1为原图中已经存在的顶点,v2为原图中不存在的新增加的顶点,且有v1指向v2,此时,因为指向v1的顶点集合没有变化,所以v1的SP值不会发生改变;而又有v1指向v2,因此v2可由v1到达,所以v2的SP值更新为其中为v1的SP值,dise为边e的权重。
(c)v1为新顶点,v2已经存在于系统中
如图12中的(c)所示,v2为原图中已经存在的顶点,v1为原图中不存在的新增加的顶点,且有v1指向v2。此时,因为是v1指向v2,而v1又是新增加的顶点,那么没有任何顶点指向v1,即v1是不可达的,则更新v1的SP值为无穷大;而指向v2的顶点,相比较原图的情况只增加了v1,又因为v1是SP值是无穷大,所以v2的SP值不会发生变化。
(d)v1,v2均已经存在于系统中
①ADD和UPDATE事件
如图12中的(d)所示,v1,v2均为原图中已经存在的顶点。因为是v1指向v2顶点,所以指向v1顶点的集合没有改变,因此v1的SP值也不会发生改变;而指向v2的顶点集合中增加了v1,这使得可能存在一条更短的路径从v1指向v2,因此,
即取v2的原来的SP值和从v1过来到达v2的值的最小值。如果v2的SP值变小,则v2的后续顶点的SP值可能因为v2的变小而变小,因此当v2的SP值变小时,需要将这种变化传播给v2所有指向的邻接点,同时,这些邻接点又可能继续将这种影响传播出去;而当v2的值没有发生改变时,说明从v1过来的路径不是最短路径,v2的值不受影响,其后续顶点的值也不会发生变化。当所有顶点的值不再发生变化时,图的状态更新完毕,算法运行结束。
②DELETE事件
从左往右看图12中的(d),是新增边的过程;从右往左看图12中的(d),则是删除边的过程。当删除原图中的边时,首先要考虑删除的这条边是否会影响v2的SP值。在原图中,当时,说明v2的最短路径并不是从v1过来的,即删除(v1,v2)这条边并不会影响v2的SP值,而且也不会影响v1的SP值;当时,并不是说v2的最短路径一定是从v1过来,因为还有可能存在其它的顶点到达v2的路径和相同,因此需要判断v1是否是到达v2的唯一的最短路径,如果是那么此时删掉v1一定会引起v2的SP值发生改变,则更新v2的SP值,并且将这种改变传播给邻接点,否则删除这条边不会影响任何顶点的SP值。
在分析完流式场景下的算法细节之后,可以得到SSSP算法的如下特征:
(1)影响范围:以这条边的某个顶点为起点,沿着某条路径往其它顶点传播影响。
(2)计算方法:利用原始状态进行增量式计算。
(3)计算顺序:最终计算结果和被影响的顶点的计算顺序无关。
(4)计算性质:更新函数为Min运算。
(5)计算次数:被影响的顶点可能会参与计算多次。
SSSP算法满足以下三个特点,故本发明可以实现面向流式图数据的算法。
(1)计算方法满足增量计算特性。
(2)计算顺序满足序列一致性。
(3)计算性质满足代数运算的交换律和结合律。
2.基于状态更新传播的流式图计算模型
这一步对应发明内容中的步骤(2),根据1的分析结果构建流式图计算模型。下面将介绍在流式数据场景下,如何实现SSSP算法。基于状态更新传播的流式图计算模型有三个概念:State,Event,Transform,下面将详细介绍如何定义这三个基本组件:
(1)State:图的State由每个顶点对应的邻接点的信息组成,State={s1,s2,…,sn},n=|V|,其中sk=(vk,spk),表示顶点vk到源点的最短路径为spk;
(2)Event:图的Event为图到达一条边相关的事件,那么Event构成的序列就形成事件流,即Event Stream=z1,z2,…,zm,其中zk=(ek,TYPE),TYPE∈{ADD,UPDATE,DELETE},这三种状态对应的事件分别为增加一条边,更新一条边和删除一条边;
(3)Transform:图的状态在事件流的驱动下的转换函数,如算法1所示。
3.基于细粒度分布式锁的状态更新方法
上述算法对应发明内容中的步骤(3),实现SSSP算法基于细粒度分布式锁的状态更新方法。算法2-7行是获取v1,v2顶点(v1为源顶点,v2为目标顶点)对应的状态,8-10行对应图12中的(a)情况,即新增的两个顶点都是最新的顶点,则其SP值更新为无穷大;11-12行对应图12中的(b)情况,源顶点是原图中已经存在的顶点,目标顶点是新增顶点,则更新目标顶点的SP值为源顶点的SP值加上边的权重;13-14行对应图12中的(c)情况,源顶点是新增的顶点,目标顶点是原图中已经存在的顶点,则目标顶点的SP值保持不变,同时更新源顶点的SP值为无穷大;15-24行对应图12中的(d)情况,而这种情况根据事件类型的不同,又可以分为新增&更新,删除这两类情况,对于新增和更新事件,需要考虑这条边是否能够使得目标顶点的SP值变小,如果使得目标顶点的SP值变小,则将这种影响继续传播给目标顶点的邻接点,否则不做任何操作;算法中的SPREAD-TO-OUT-NEIGHBOR()函数即为影响传播函数,将这个影响继续传播给该顶点的所有出去的邻接点;而对于删除事件,首先需要考虑原图中源顶点v1是到达目标顶点v2的唯一最短路径顶点,只有满足这个条件,删除这条边才会影响目标顶点的SP值,如果删除的这条边恰好是这样的关键路径,则重新计算v2的SP值,同时将这种变化通过SPREAD-TO-OUT-NEIGHBOR()函数传播出去;算法中的ONLY-SHORTEST-PATH(v1,v2)即为判断v1是否是到v2的唯一最短路径,FIND-SHORTEST-PATH(v2,v1)计算除去v1顶点之后,到达v2顶点的最短路径的值。
4.测试结果
这一步对应权利要求1中的(4),从实时性、准确性和更新冲突概率三个方面对实现的算法进行性能评测。
(1)实时性
图8为SSSP算法实时性图,其中左图展示的是算法的累计分布图(CumulativeDistribution Function,CDF),右图展示的是每个响应时间(处理一条增量数据所需的时间)所占的百分比图。由图可知,SSSP算法大部分请求的响应时间都集中在2ms或4ms,符合实时性的要求。
(2)准确性
SSSP算法用来计算各个顶点到源点的最短距离,对于此算法,本发明的正确率计算公式为:
其中即将比对每个顶点实际计算的值跟真实值是否相同,计算正确的顶点所占的比例即为该算法的准确率。
图10为SSSP算法准确率测试结果图,本发明在D1-D10数据集上分别进行测试,同时为了考虑不同并发度对计算结果准确性的影响,本发明分别测试了算法在计算节点总数为1、2、4、6、8、10下的准确率。算法的准确率在不同并发度下均为100%,是因为在实现时本文采用了基于细粒度分布式锁的更新策略,保证了算法最终计算结果的准确性。
(3)更新冲突概率
更新冲突概率实验架构图见图13所示。本发明首先将全集数据按照边的源顶点和目标顶点的大小顺序排序,然后将数据集采用Round-robin的方式分配给10个计算节点分别进行计算。这样做的目的是通过对边进行排序和按序发送给各个计算节点来最大限度地提高计算节点之间发生更新冲突的概率。
图11为算法更新冲突概率图。SSSP算法是按照以新增边的源顶点为中心,沿着某条路径往外传播的方式,有可能传播到某个顶点就结束(当新增的这条边不能使得其它邻接点的SP值减小时传播结束),因此传播的影响范围和更新冲突的概率都比较小,在合理范围之内。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (6)
1.一种基于状态更新传播的流式图计算方法,其特征在于,包括以下步骤:
步骤一:挑选流式化处理的图算法;
步骤二:针对步骤一中的流式化处理的图算法,构建基于状态更新传播的流式图计算模型;
步骤三:利用步骤二构建的基于状态更新传播的流式图计算模型,对步骤(1)中选取的流式化处理的图算法进行基于细粒度分布式锁的状态更新,实现流式图计算的并行化;
步骤四:对步骤三中的流式图计算进行并行化后,进行多维度测试,验证基于状态更新传播的流式图计算方法的可行性。
2.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤一中,挑选流式化处理的图算法实现过程如下:
(1)对流式场景下的图算法从五个方面进行特征分析,所述五个方面包括影响范围、计算方法、计算顺序、计算特性和计算次数,得到分析结果;
(2)根据步骤(1)中的分析结果,判断流式场景下的图算法是否满足以下三个特点:计算方法采用增量计算形式、计算顺序满足序列一致性、计算性质满足代数运算的交换律和结合律;
(3)挑选出的同时满足上述三个特点的流式场景下的图算法进行流式化。
3.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤二中,基于状态更新传播的流式图计算模型包括三个组件:状态、事件和转换;
所述状态(State),反映静态图数据当前的特征信息,所述特征信息以顶点为单位进行体现,也可以由用户自定义的特征信息来体现;所述基于状态更新传播的流式图计算方法将状态抽象成一个接口,该接口对整个图或者单个图中节点的状态进行更改或获取,同时传播图中节点的状态到其邻接点;用户扩展该接口来实现更加复杂的状态信息管理;
所述事件(Event),事件触发图由T1时刻的State1转换为T2时刻的State2,事件是由事件值(Event Value)和事件类型(Event Type)组成;所述事件的值分为两种:其中一种事件由顶点编号和顶点的值组成,另一种事件由边起点、边终点以及边值组成;所述事件的类型分为三种:新增(ADD)、删除(DELETE)和更新(UPDATE);两种事件的值和三种事件的类型组合出6种事件:新增边,删除边,更新边;新增顶点,删除顶点,更新顶点;所述6种事件基本涵盖了所有的图变化的情形;由事件抽象成的接口可以获取指定事件的值和类型;
所述转换(Transform)是由事件触发的图的更新过程,即图是如何根据相应的事件来由State1转换成State2;转换函数是动态图计算模型中的计算逻辑,详细定义了图如何根据到达的事件,从一个状态转变成另外一个状态,称之为状态更新的图计算模型的驱动程序,驱动图从一系列的事件流转换成一系列对应的状态流;由状态抽象成接口根据事件转换静态图数据的状态。
4.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤三中,基于细粒度分布式锁的状态更新方法实现步骤如下:
(1)根据不同的流式场景下的图算法,将用户关心的静态图数据的特征信息抽象成与当前静态图数据对应的特定的状态,这些状态以顶点为单位进行保存,或以边或者以顶点和边混合的方式来组织,所述状态是高度能够自定义,利用开源的分布式内存数据网格Hazelcast来作为存储层,在各个计算节点上存储静态图数据的状态信息;
(2)在(1)中将静态图数据抽象成状态信息后,开始接收事件流,将事件流按照某种分片规则,即动态图数据的哈希划分算法分发到不同的计算节点上;
(3)分别在各个计算节点上独立进行状态更新;根据流式场景下图算法的影响范围和计算次数的不同,将静态图数据的状态更新的问题域划分成独立状态和关联状态两种问题;对于独立状态,图2所示为独立状态的存储和更新过程图,因为状态内的各个图节点之间不会相互影响,因此独立状态并发地更新,即按照状态的组织形式,将静态图数据的状态分布式地存储在多个计算节点上,而且每个计算节点上的状态都能够同时进行更新,并向用户实时反馈更新结果;对于关联状态,采用开源的分布式内存数据网格Hazelcast提供的分布式锁结构对状态进行更新,即每次只需要锁住组成状态的单个因子本身,而不需要锁住流式场景下图算法的影响范围内的所有顶点;Hazelcast提供的分布式锁以因子为单位,每次访问因子时,首先检测所述因子是否是被占用状态,如果没有被占用,则首先将所述因子设置为已占用,然后更新所述因子的状态,更新完毕之后,再将所述因子设置为空闲状态,同时满足设定阈值时,将已被更新的所述因子的状态传播给其它顶点;
(4)计算节点都更新完毕之后,获得静态图数据的新状态,返回第(2)步继续进行动态图数据的处理。
5.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤四中验证基于状态更新传播的流式图计算方法的可行性从实时性、准确性、更新冲突概率三个方面进行算法的性能评测;
实时性指流式场景下的图算法的实时计算能力,其评测的是处理一条动态图数据所需要的时间,时间越短代表流式场景下的图算法性能越好;
准确性方面,通过将流式场景下的图算法计算的结果与批式场景下的图算法计算的结果进行比较,得到准确性;
更新冲突概率方面,将数据集按照边的源顶点和目标顶点的大小顺序排序,然后将数据集采用Round-robin的方式分配给计算节点分别进行计算,目的是通过对边进行排序和按序发送给各个计算节点来最大限度地提高计算节点之间发生更新冲突的概率,当有多个计算节点同时竞争获得同一个图节点的状态时,更新冲突的次数增加,以此来得到评测结果。
6.一种基于状态更新传播的流式图计算系统,其特征在于:包括接入层、计算层、存储层和访问层;
接入层:将动态图数据以流的形式分配到位于计算层的各个计算节点;这些动态图数据的数据源可以以文件的形式存储,也可以存储在如Kafka,HBase等其它分布式系统中;系统提供了接口,能够很好的将这些数据源对接到系统;
计算层:各个计算节点访问存储层中的相关存储节点的静态图数据的状态,并且根据图状态和当前接收的动态图数据以及对动态图数据的处理过程来触发图状态的更新,同时将所述更新同步到相关存储节点中,以便除当前计算节点外的其它计算节点能够立刻使用,该层又分为:应用层、服务层、API层和核心层;
其中应用层面向用户的上层运用,这些运用涵盖了典型的业务场景,包括链接分析、欺诈检测、社区发现,是针对某个具体问题的具体应用;该层组合了服务层提供的各种库函数,为特定的业务场景定制解决方案,一般来说由用户来实现;服务层提供给用户使用的丰富的库函数和图算法;API层屏蔽了底层的实现细节,向用户提供了一个统一的流式图数据的处理接口,用户可以组合这些接口完成流式场景下的图算法;核心层抽象出图和流的概念,并且通过一个统一的计算模型将两者结合起来;采用基于状态更新传播的流式图计算模型作为计算模型,采用面向用户视角的状态作为编程模型,提供了实时图计算的能力;
存储层:该层采用分布式存储架构,负责图状态的存储;系统内的状态分散到各个存储节点上进行存储和备份,同时还提供了持久化接口,也将这些状态异步备份到永久性介质上,进一步提高系统的可靠性;状态是从用户的视角进行定义的,直接反映了用户关心的数据,所以在同一时刻,系统可能存在多种不同类型的状态,这些状态对系统内部由计算节点直接访问,对系统外部由用户根据访问节点,实时访问中间计算结果;该层利用开源产品分布式内存数据网格Hazelcast来存储图的状态信息,Hazelcast提供了细粒度的分布式锁结构,使用该接口来锁住顶点的状态;
访问层:向最终用户提供接口,用户作为访问节点,允许用户在任意时刻访问图的状态;在本层本发明使用RESTful规范来设计数据的访问规则,利用Jetty作为内嵌的服务器,向用户提供数据访问能力。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810721794.9A CN109033234B (zh) | 2018-07-04 | 2018-07-04 | 一种基于状态更新传播的流式图计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810721794.9A CN109033234B (zh) | 2018-07-04 | 2018-07-04 | 一种基于状态更新传播的流式图计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033234A true CN109033234A (zh) | 2018-12-18 |
CN109033234B CN109033234B (zh) | 2021-09-14 |
Family
ID=65521605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810721794.9A Active CN109033234B (zh) | 2018-07-04 | 2018-07-04 | 一种基于状态更新传播的流式图计算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033234B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309750A (zh) * | 2020-03-31 | 2020-06-19 | 中国邮政储蓄银行股份有限公司 | 图数据库的数据更新方法和装置 |
CN111723246A (zh) * | 2019-03-20 | 2020-09-29 | 京东数字科技控股有限公司 | 一种数据处理的方法、装置和存储介质 |
CN112000848A (zh) * | 2020-08-20 | 2020-11-27 | 南京智慧图谱信息技术有限公司 | 一种图数据处理方法、装置、电子设备及存储介质 |
CN113157981A (zh) * | 2021-03-26 | 2021-07-23 | 支付宝(杭州)信息技术有限公司 | 一种图网络关系扩散方法和装置 |
CN113238952A (zh) * | 2021-05-25 | 2021-08-10 | 中国科学院软件研究所 | 基于应用程序状态转换图的智能辅助引导测试方法及装置 |
CN113806302A (zh) * | 2021-11-11 | 2021-12-17 | 支付宝(杭州)信息技术有限公司 | 图状态数据管理方法及装置 |
CN113836750A (zh) * | 2021-11-03 | 2021-12-24 | 西南交通大学 | 一种列控系统车载设备现场测试案例执行距离的估算方法 |
CN114493856A (zh) * | 2022-04-11 | 2022-05-13 | 支付宝(杭州)信息技术有限公司 | 用于处理数据的方法、系统、装置和介质 |
CN115470377A (zh) * | 2021-06-11 | 2022-12-13 | 清华大学 | 流式图数据处理方法及系统 |
CN115550226A (zh) * | 2022-07-27 | 2022-12-30 | 京东城市(北京)数字科技有限公司 | 一种分布式系统的流量监控方法及装置 |
US11949548B2 (en) | 2019-12-17 | 2024-04-02 | Zte Corporation | Method for service status analysis, server, and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150154262A1 (en) * | 2012-04-05 | 2015-06-04 | Microsoft Corporation | Platform for Continuous Graph Update and Computation |
CN106528773A (zh) * | 2016-11-07 | 2017-03-22 | 山东首讯信息技术有限公司 | 一种基于Spark平台支持空间数据管理的图计算系统及方法 |
CN107025099A (zh) * | 2016-02-01 | 2017-08-08 | 北京大学 | 一种基于双队列模型的异步图计算实现方法及系统 |
US9767217B1 (en) * | 2014-05-28 | 2017-09-19 | Google Inc. | Streaming graph computations in a distributed processing system |
-
2018
- 2018-07-04 CN CN201810721794.9A patent/CN109033234B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150154262A1 (en) * | 2012-04-05 | 2015-06-04 | Microsoft Corporation | Platform for Continuous Graph Update and Computation |
US9767217B1 (en) * | 2014-05-28 | 2017-09-19 | Google Inc. | Streaming graph computations in a distributed processing system |
CN107025099A (zh) * | 2016-02-01 | 2017-08-08 | 北京大学 | 一种基于双队列模型的异步图计算实现方法及系统 |
CN106528773A (zh) * | 2016-11-07 | 2017-03-22 | 山东首讯信息技术有限公司 | 一种基于Spark平台支持空间数据管理的图计算系统及方法 |
Non-Patent Citations (1)
Title |
---|
申林等: "IncGraph:支持实时计算的大规模增量图处理系统", 《计算机科学与探索》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723246A (zh) * | 2019-03-20 | 2020-09-29 | 京东数字科技控股有限公司 | 一种数据处理的方法、装置和存储介质 |
CN111723246B (zh) * | 2019-03-20 | 2024-04-05 | 京东科技控股股份有限公司 | 一种数据处理的方法、装置和存储介质 |
US11949548B2 (en) | 2019-12-17 | 2024-04-02 | Zte Corporation | Method for service status analysis, server, and storage medium |
CN111309750A (zh) * | 2020-03-31 | 2020-06-19 | 中国邮政储蓄银行股份有限公司 | 图数据库的数据更新方法和装置 |
CN112000848A (zh) * | 2020-08-20 | 2020-11-27 | 南京智慧图谱信息技术有限公司 | 一种图数据处理方法、装置、电子设备及存储介质 |
CN113157981A (zh) * | 2021-03-26 | 2021-07-23 | 支付宝(杭州)信息技术有限公司 | 一种图网络关系扩散方法和装置 |
CN113238952A (zh) * | 2021-05-25 | 2021-08-10 | 中国科学院软件研究所 | 基于应用程序状态转换图的智能辅助引导测试方法及装置 |
CN115470377A (zh) * | 2021-06-11 | 2022-12-13 | 清华大学 | 流式图数据处理方法及系统 |
CN113836750A (zh) * | 2021-11-03 | 2021-12-24 | 西南交通大学 | 一种列控系统车载设备现场测试案例执行距离的估算方法 |
CN113836750B (zh) * | 2021-11-03 | 2023-04-14 | 西南交通大学 | 一种列控系统车载设备现场测试案例执行距离的估算方法 |
CN113806302A (zh) * | 2021-11-11 | 2021-12-17 | 支付宝(杭州)信息技术有限公司 | 图状态数据管理方法及装置 |
CN114493856A (zh) * | 2022-04-11 | 2022-05-13 | 支付宝(杭州)信息技术有限公司 | 用于处理数据的方法、系统、装置和介质 |
CN115550226A (zh) * | 2022-07-27 | 2022-12-30 | 京东城市(北京)数字科技有限公司 | 一种分布式系统的流量监控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109033234B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033234A (zh) | 一种基于状态更新传播的流式图计算方法及系统 | |
Iyer et al. | Time-evolving graph processing at scale | |
Peng et al. | Efficient probabilistic k-core computation on uncertain graphs | |
Gong et al. | Evolution of social-attribute networks: measurements, modeling, and implications using google+ | |
Delaney et al. | On consistency and network latency in distributed interactive applications: A survey—Part I | |
Andersen et al. | Trust-based recommendation systems: an axiomatic approach | |
US20180097684A1 (en) | Reachability-Based Coordination for Cyclic Dataflow | |
Foschini et al. | On the complexity of time-dependent shortest paths | |
CN104063507A (zh) | 一种图计算方法及引擎 | |
Cutler et al. | Extremal graphs for homomorphisms | |
Vu et al. | Distributed adaptive model rules for mining big data streams | |
Xie et al. | Dynamic interaction graphs with probabilistic edge decay | |
CN103810260A (zh) | 基于拓扑特性的复杂网络社团发现方法 | |
US8918358B2 (en) | Information integration flow freshness cost | |
US20130096967A1 (en) | Optimizer | |
US10853370B2 (en) | Devices and/or methods to provide a query response based on ephemeral data | |
Yin et al. | A new algorithmic model for graph analysis of streaming data | |
Ni et al. | Efficient closeness centrality computation in time-evolving graphs | |
Briquemont et al. | Conflict-free partially replicated data types | |
Su et al. | A multi-stage metaheuristic algorithm for shortest simple path problem with must-pass nodes | |
Chiu et al. | Automatic complexity reduction in reinforcement learning | |
Kaepke et al. | A comparative evaluation of big data frameworks for graph processing | |
Wang et al. | Learning bayesian networks from markov random fields: an efficient algorithm for linear models | |
Prasanna | Goffish: Graph-oriented framework for foresight and insight using scalable heuristics | |
Bali | Streaming graph analytics framework design |
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 |