CN103970860B - 一种数据处理的方法、装置及系统 - Google Patents
一种数据处理的方法、装置及系统 Download PDFInfo
- Publication number
- CN103970860B CN103970860B CN201410191495.0A CN201410191495A CN103970860B CN 103970860 B CN103970860 B CN 103970860B CN 201410191495 A CN201410191495 A CN 201410191495A CN 103970860 B CN103970860 B CN 103970860B
- Authority
- CN
- China
- Prior art keywords
- summit
- value
- calculate node
- report message
- calculate
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
Abstract
本发明实施例提供了一种数据处理的方法,装置及系统,涉及通信领域,用于提高对分布式图数据处理系统的内存资源的利用率。计算节点包括:接收单元,用于接收第二计算节点发送的第一报告消息;处理单元,用于确定第二图顶点的状态信息是否为已发送状态;还用于在确定第二图顶点的状态信息为已发送状态时,获取第二图顶点的第二值;还用于根据第二图顶点的第二值及第一规则,或者根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值;还用于删除所述第一报告消息。本发明适用于块同步处理BSP模型的分布式图数据处理系统。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据处理的方法、装置及系统。
背景技术
随着社交网络、万维网络、知识图谱、生物信息网络等应用的发展,图数据规模日益增大,导致大规模图数据的处理成为焦点。现有技术通常采用基于BSP(BulkSynchronous Process,块同步处理)模型的分布式图数据处理系统来实现对大规模图数据的处理。
在现有的基于BSP模型的分布式图数据处理系统中,计算节点将分配给自身的图数据分成多次迭代来进行处理,在每一次迭代中,计算节点首先从消息库中获取上一次迭代中其他计算节点发送至该计算节点的所有消息,以及从节点库中获取该计算节点的当前值,然后调用用户预设的函数信息,从而根据该计算节点的当前值及用户预设的函数信息来更新该计算节点的当前值,或者,根据获取到的所有消息、该计算节点的当前值及用户预设的函数信息来更新该计算节点的当前值并将更新后的当前值发送至与该计算节点相关联的其他计算节点。
但在上述实现方法中,计算节点需要将上一次迭代中其他计算节点发送至该计算节点的所有消息均存储在消息库中,以便在本次迭代中通过其他计算节点发送的所有消息来更新此计算节点的当前值。这样,当图数据规模较大时,将其他计算节点发送的所有消息均缓存在消息库,会占用较大的内存空间,而分布式图数据处理系统的内存资源有限,若将其他节点发送的所有消息均缓存在消息库,可能导致其他数据无法存储在消息库中,从而降低了对分布式图数据处理系统的内存资源的利用率。
发明内容
本发明的实施例提供一种数据处理的方法、装置及系统,用于提高对分布式图数据处理系统的内存资源的利用率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种计算节点,包括:接收单元,用于接收第二计算节点发送的第一报告消息;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识;处理单元,用于确定所述第二图顶点的状态信息是否为已发送状态;其中,所述第二图顶点的状态信息用于记录所述计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态;所述处理单元,还用于在确定所述第二图顶点的状态信息为已发送状态时,获取所述第二图顶点的第二值;其中,所述第二图顶点的第二值为所述计算节点向所述第二计算节点发送的值;所述处理单元,还用于根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;所述处理单元,还用于删除所述第一报告消息。
在第一方面的第一种可能的实现方式中,所述处理单元,具体用于在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;所述处理单元,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,还包括:所述处理单元,还用于在确定所述第二图顶点的状态信息为未发送状态时,确定所述第二图顶点的第一值;发送单元,用于向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态;其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识;所述处理单元,还用于根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述处理单元,具体用于在确定所述图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值;所述处理单元,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
结合第一方面,或第一方面的第一至第三任一种可能的实现方式,在第一方面的第四种可能的实现方式中,还包括:存储单元,用于存储所述第二图顶点的列表;所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述处理单元,具体用于确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定所述第二图顶点的当前值存在,则将所述第二图顶点的当前值确定为所述第二图顶点的第一值;若确定所述第二图顶点的当前值为不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
结合第一方面,或第一方面的第一至第五任一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述发送单元,还用于向所述第二计算节点发送第一响应消息。
结合第一方面,或第一方面的第一至第六任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述发送单元,还用于向所述第二计算节点发送第二响应消息。
第二方面,本发明实施例提供了一种计算节点,包括:第一计算节点接收第二计算节点发送的第一报告消息;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识;所述第一计算节点确定所述第二图顶点的状态信息是否为已发送状态;其中,所述第二图顶点的状态信息用于记录所述第一计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态;若确定所述第二图顶点的状态信息为已发送状态,则所述第一计算节点获取所述第二图顶点的第二值;其中,所述第二图顶点的第二值为所述第一计算节点向所述第二计算节点发送的值;所述第一计算节点根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;所述第一计算节点删除所述第一报告消息。
在第二方面的第一种可能的实现方式中,所述第一计算节点根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值包括:所述第一计算节点在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;所述第一计算节点根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值包括:所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,还包括:若确定所述第二图顶点的状态信息为未发送状态,则确定所述第二图顶点的第一值,并向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态;其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识;所述第一计算节点根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第一计算节点根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值包括:所述第一计算节点在确定所述图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值;所述第一计算节点根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值包括:所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
结合第二方面。或第二方面的第一至第三任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第一计算节点存储有所述第二图顶点的列表;所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述确定所述第二图顶点的第一值包括:所述第一计算节点确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定所述第二图顶点的当前值存在,则将所述第二图顶点的当前值确定为所述第二图顶点的第一值;若确定所述第二图顶点的当前值不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
结合第二方面,或第二方面的第一至第五任一种可能的实现方式,在第二方面的第六种可能的实现方式中,在所述第一计算节点确定所述第二图顶点的状态信息是否为已发送状态之前,还包括:所述第一计算节点向所述第二计算节点发送第一响应消息。
结合第二方面,或第二方面的第一至第六任一种可能的实现方式,在第二方面的第七种可能的实现方式中,在所述第一计算节点删除所述第一报告消息之后,还包括:所述第一计算节点向所述第二计算节点发送第二响应消息。
第三方面,本发明实施例提供了一种计算节点,包括:接收器,用于接收第二计算节点发送的第一报告消息;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识;处理器,用于确定所述第二图顶点的状态信息是否为已发送状态;其中,所述第二图顶点的状态信息用于记录所述计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态;所述处理器,还用于在确定所述第二图顶点的状态信息为已发送状态时,获取所述第二图顶点的第二值;其中,所述第二图顶点的第二值为所述计算节点向所述第二计算节点发送的值;所述处理器,还用于根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;所述处理器,还用于删除所述第一报告消息。
在第三方面的第一种可能的实现方式中,所述处理器,具体用于在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;所述处理器,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
结合第三方面,或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,还包括:所述处理器,还用于在确定所述第二图顶点的状态信息为未发送状态时,确定所述第二图顶点的第一值;发送器,用于向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态;其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识;所述处理器,还用于根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理器,具体用于在确定所述图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值;所述处理器,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
结合第三方面,或第三方面的第一至第三任一种可能的实现方式,在第三方面的第四种可能的实现方式中,还包括:存储器,用于存储所述第二图顶点的列表;所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述处理器,具体用于确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定所述第二图顶点的当前值存在,则将所述第二图顶点的当前值确定为所述第二图顶点的第一值;若确定所述第二图顶点的当前值为不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
结合第三方面,或第三方面的第一至第五任一种可能的实现方式,在第三方面的第六种可能的实现方式中,所述发送器,还用于向所述第二计算节点发送第一响应消息。
结合第三方面,或第三方面的第一至第六任一种可能的实现方式,在第三方面的第七种可能的实现方式中,所述发送器,还用于向所述第二计算节点发送第二响应消息。
第四方面,本发明实施例提供了一种数据处理的系统,包括:第一计算节点及第二计算节点;所述第一计算节点为上述实施例所述的第一计算节点;所述第二计算节点,用于获取第一图顶点的第一值,并根据第二规则向所述第一计算节点发送第一报告消息,并将所述第一图顶点的状态信息标记为已发送状态;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
本发明实施例提供了一种数据处理的方法、装置及系统,第一计算节点在接收到第二计算节点发送的第一报告消息后,解析此第一报告消息,从而确定与第一图顶点关联的第二图顶点,并确定第二图顶点的状态信息是否为已发送状态,若确定第二图顶点的状态信息为已发送状态,则获取第二图顶点的第二值,并根据第二图顶点的第二值及第一规则更新第二图顶点的第二值,或者,根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值,并在更新完第二图顶点的第二值后,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种计算节点的功能示意图;
图2为本发明实施例提供的另一种计算节点的功能示意图;
图3为本发明实施例提供的另一种计算节点的功能示意图;
图4为本发明实施例提供的另一种计算节点的功能示意图;
图5为本发明实施例提供的一种数据处理的方法的流程示意图;
图6为本发明实施例提供的另一种数据处理的方法的流程示意图;
图7为本发明实施例提供的另一种数据处理的方法的流程示意图;
图8为本发明实施例提供的一种计算节点的结构示意图;
图9为本发明实施例提供的另一种计算节点的结构示意图;
图10为本发明实施例提供的一种数据处理的系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明中的第一计算节点与第二计算节点均可以是物理机,或者是同一个物理机上的节点,或者是不同物理机上的节点,本发明对此不做限制。
如图1所示,其为本发明实施例提供的一种计算节点的功能示意图,可参考图1所示,所述计算节点包括:接收单元101,处理单元102。其中,
所述接收单元101,用于接收第二计算节点发送的第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
需要说明的是,第一图顶点的第一值可以是具体的数字,也可以是一个集合。
需要说明的是,在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点未接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点的当前值;在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点根据所述其他节点发送的报告消息更新后的当前值。
所述处理单元102,用于确定所述第二图顶点的状态信息是否为已发送状态。
其中,所述第二图顶点的状态信息用于记录所述第一计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态。
具体的,所述处理单元102,在所述接收单元101接收到第二计算节点发送的第一报告消息后,解析出第一报告消息中携带的第二图顶点的顶点标识,从而根据顶点标识确定第二计算节点向第一计算节点处理的图数据的第二图顶点发送消息,此时,第一计算节点获取第二图顶点的状态信息,即第一计算节点根据第二图顶点的顶点标识在存储器中查找第二图顶点,进而在第二图顶点的列表中查找第二图顶点的状态信息,并确定第二图顶点的状态信息是否为已发送状态。
需要说明的是,所述第二图顶点的状态信息还用于记录所述第一计算节点是否向与第二图顶点关联的其他计算节点发送所述第二图顶点的消息的状态。
所述处理单元102,还用于在确定所述第二图顶点的状态信息为已发送状态时,获取所述第二图顶点的第二值。
其中,所述第二图顶点的第二值为所述第一计算节点向所述第二计算节点发送的值。
需要说明的是,所述第二图顶点的第二值可以是具体的数字,也可以是一个集合。
具体的,所述处理单元102在确定第二图顶点的状态信息为已发送状态时,则说明已经向第二计算节点发送携带有第二图顶点的第二值的消息,以使得第二计算节点根据第二图顶点的第二值对与第二图顶点关联的第一图顶点进行更新,为了使得所述处理单元102在更新第二图顶点时与第二计算节点更新第一图顶点时同步,则所述处理单元102需要获取第二图顶点的第二值,即根据第二图顶点的顶点标识查找第二图顶点,进而在第二图顶点的列表中查找第二图顶点的第二值。
所述处理单元102,还用于根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
其中,所述第一规则为用户根据图数据定义的处理规则。
具体的,所述处理单元102根据图数据的不同,对第二图顶点的第二值的更新的方法也不同,具体如下:
所述处理单元102,具体用于在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
所述处理单元102,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
所述处理单元102,还用于删除所述第一报告消息。
具体的,所述处理单元102在所述接收单元101接收到第一报告消息后,根据第一报告消息确定发送与第一图顶点关联的第二图顶点,及根据第一图顶点的第一值更新第二图顶点的第二值后,将所述接收单元101接收到的第一报告消息删除,以便减小对内存的占有率。
需要说明的是,所述接收单元101还可以接收到其他计算节点发送的报告消息,在接收到其他计算节点发送的报告消息之后,所述处理单元102执行的步骤与上述步骤相同,本发明在此不再赘述。
进一步的,所述计算节点,如图2所示,还包括:发送单元103。
所述发送单元103,用于向所述第二计算节点发送第一响应消息。
具体的,所述发送单元103在所述接收单元101接收到第二计算节点发送的第一报告消息之后,向第二计算节点发送第一响应消息。
需要说明的是,所述发送单元103在所述接收单元101在接收到其他计算节点发送的报告消息后,均需要向此计算节点发送响应消息,以使得此计算节点确定所述计算节点是否接收到发送的报告消息,本发明在此不再赘述。
所述处理单元102,还用于在确定所述第二图顶点的状态信息为未发送状态时,确定第二图顶点的第一值。
具体的,所述处理单元102在确定第二图顶点的状态信息为未发送状态时,则说明所述发送单元103没有向第二计算节点发送携带有第二图顶点的第二值的消息,此时,所述处理单元102确定第二图顶点的第一值。
所述发送单元103,还用于向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态。
其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识。所述第二图顶点的第一值可以是具体的数字,也可以是一个集合。
具体的,所述发送单元103在所述处理单元102确定第二图顶点的状态信息为未发送状态时,为了保证所述处理单元102在更新第二图顶点时与第二计算节点更新第一图顶点时同步,需要向第二计算节点发送携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息,此时,第二计算节点接收第一计算节点发送的携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息,以使得第二计算节点可以根据第二图顶点的第一值对第一图顶点进行更新。进一步的,第二计算节点在接收到第一计算节点发送的携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息之后,向所述计算节点发送接收到第二报告消息的响应消息,以使得所述发送单元103在所述接收单元101接收到第二计算节点发送的接收到第二报告消息的响应消息之后,确定第二计算节点已接收到第二报告消息,并将第二图顶点的状态信息标记为已发送状态。
进一步的,所述计算节点,如图2所示,还包括:存储单元104。
所述存储单元104,用于存储所述第二图顶点的列表。所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
需要说明的是,所述存储单元104还存储有除第二图顶点之外的其他图顶点的列表;所述列表记录有所述其他图顶点的第二值及所述其他图顶点的当前值。
所述处理单元102,具体用于确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定第二图顶点的当前值存在,则将第二图顶点的当前值确定为第二图顶点的第一值。
具体的,所述处理单元102在所述存储单元104中查找到第二图顶点的当前值后,确定第二图顶点的当前值是否存在,若确定第二图顶点的当前值存在,则说明根据其他计算节点发送的关于第二图顶点的报告消息进行了计算,则此时第二图顶点的第一值为所述存储单元104中存储的第二图顶点的当前值,即将第二图顶点的当前值确定为第二图顶点的第一值。
进一步的,所述处理单元102获取第二图顶点的当前值的过程如下:
所述处理单元102在所述接收单元101接收到第三计算节点发送的第三报告消息时,根据第二图顶点的第二值及所述第一规则确定第二图顶点的当前值;或者,
根据所述第三图顶点的第一值、所述第二图顶点的第二值及所述第一规则确定所述第二图顶点的当前值。
其中,所述第三报告消息携带所述第三计算节点处理的第三图顶点的第一值,及与所述第一计算节点处理的与所述第三图顶点关联的第二图顶点的顶点标识。
需要说明的是,在所述第三计算节点向所述第一计算节点发送第三报告消息之前,所述第三计算节点未接收到其他计算节点发送的关于第三图顶点的报告消息时,所述第三图顶点的第一值为所述第三图顶点的当前值;在所述第三计算节点向所述第一计算节点发送第一报告消息之前,所述第三计算节点接收到其他计算节点发送的关于第三图顶点的报告消息时,所述第三图顶点的第一值为所述第三计算节点根据所述其他节点发送的报告消息更新后的当前值。
若确定第二图顶点的当前值不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
具体的,所述处理单元102在所述存储单元104中查找到第二图顶点的当前值后,确定第二图顶点的当前值是否存在,若确定第二图顶点的当前值不存在,则说明所述接收单元101没有接收到其他计算节点发送的关于第二图顶点的报告消息,此时第二图顶点的第一值为所述存储单元104中存储的第二图顶点的第二值,即将第二图顶点的第二值确定为第二图顶点的第一值。
需要说明的是,所述处理单元102确定第二图顶点的第一值的方法还可以是其他方法,例如,所述处理单元102将向其他计算节点发送的报告消息中携带的第二图顶点的值均存储在所述存储单元104中,在确定第二图顶点的状态信息为未发送状态时,则获取第二图顶点的当前值作为第二图顶点的第一值;在确定第二图顶点的状态信息为已发送状态时,则将所述存储单元104中存储的第二图顶点向第二计算节点发送的值确定为第二图顶点的第一值,本发明对此不作限制。
所述处理单元102,还用于根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
具体的,所述处理单元102根据图数据的不同,对所述第二图顶点的第一值的更新的方法也不同,具体如下:
所述处理单元102,具体用于在确定所述图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
所述处理单元102,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
所述接收单元101,还用于向所述第二计算节点发送第二响应消息。
具体的,所述接收单元101在所述处理单元102对第二图顶点的第二值更新完成后,需要向第二计算节点发送第二响应消息,此时,第二计算节点接收所述计算节点发送的第二响应消息,从而第二计算节点根据第二响应消息确定所述计算节点对接收到的第一报告消息已经进行了处理。
需要说明的是,所述处理单元102在所述接收单元101接收到第二计算节点及其他计算节点发送的携带有第二图顶点的顶点标识的第二响应消息后,说明每个计算节点在本次迭代中均完成了对与第二图顶点关联的图顶点的一次更新。在所述接收单元101接收到第二计算节点及其他计算节点发送的携带有第一计算节点处理的图数据,除第二图顶点之外的其他顶点标识的响应消息时,说明第一计算节点在本次迭代结束,此时,所述处理单元102将第二图顶点的当前值替换为第二图顶点的第二值,并将其他图顶点的当前值替换为其他图顶点的第二值,以使得下一次迭代时,所述处理单元102触发所述发送单元103根据第二规则向第二计算节点及其他计算节点发送携带有第二图顶点的第二值的报告消息及携带有其他图顶点的第二值的报告消息。
需要说明的是,所述处理单元102在所述接收单元101接收到第二计算节点及其他计算节点发送的携带有第一计算节点处理的图数据的除第二图顶点之外的其他顶点标识的报告消息之后的处理方法与所述处理单元102在所述接收单元101接收到第二计算节点及其他计算节点发送的携带有第二图顶点的顶点标识的报告消息的处理方法相同,本发明在此不再赘述。
需要说明的是,所述处理单元102在对每个计算节点完成一次更新后,且确定与其相关联的其他计算节点均完成一次更新后,则触发所述发送单元103向分配给自身图数据任务的主节点发送已完成更新的响应消息,此时,主节点在接收到每一个计算节点发送的响应消息后,发送同步信号,从而完成了一次迭代。
本发明实施例提供了一种计算节点,所述计算节点在接收到第二计算节点发送的第一报告消息后,解析此第一报告消息,从而确定与第一图顶点关联的第二图顶点,并确定第二图顶点的状态信息是否为已发送状态,若确定第二图顶点的状态信息为已发送状态,则获取第二图顶点的第二值,并根据第二图顶点的第二值及第一规则更新第二图顶点的第二值,或者,根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值,并在更新完第二图顶点的第二值后,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
如图3所示,其为本发明实施例提供的一种计算节点的功能示意图,可参考图3所示,所述计算节点包括:处理单元301,发送单元302。其中,
所述处理单元301,用于获取第一图顶点的第一值。
其中,所述第一图顶点的第一值可以是具体的数字,也可以是一个集合。
具体的,所述处理单元301在所述发送单元302向所述第一计算节点发送第一报告消息之前,未接收到其他计算节点发送的关于第一图顶点的报告消息时,第一图顶点的第一值为第一图顶点的当前值,即所述处理单元301根据第一图顶点的顶点标识找到第一图顶点的列表,并在第一图顶点的列表中查找第一图顶点的当前值,即获取第一图顶点的第一值。
在所述发送单元302向所述第一计算节点发送第一报告消息之前,接收到其他计算节点发送的关于第一图顶点的报告消息时,第一图顶点的第一值为所述处理单元301根据所述其他节点发送的关于第一图顶点的报告消息更新后的当前值,即所述处理单元301根据第一图顶点的顶点标识找到第一图顶点的列表,并在第一图顶点的列表中查找更新后的第一图顶点的当前值,即获取第一图顶点的第一值。
所述发送单元302,用于根据第二规则向第一计算节点发送第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。所述第二规则为所述计算节点确定向哪些计算节点发送报告消息的规则。
具体的,所述发送单元302,在所述处理单元301获取到第一图顶点的第一值后,向与第一图顶点相关联的管理第二图顶点的第一计算节点发送携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息。
所述处理单元301,还用于将所述第一图顶点的状态信息标记为已发送状态。
其中,所述第一图顶点的状态信息用于记录所述第二计算节点是否向所述第一计算节点发送所述第一图顶点的消息的状态。
进一步的,所述计算节点,如图4所示,还包括:接收单元303。
所述接收单元303,用于接收所述第一计算节点发送的第一响应消息。
其中,所述第一响应消息携带有第一图顶点的顶点标识及已接收到第一报告消息的消息。
具体的,所述接收单元303在接收到所述第一计算节点发送的第一响应消息后,使得所述处理单元301根据第一响应消息确定所述第一计算节点接收到第一报告消息,而不需要触发所述发送单元302再次向第一计算节点重复发送第一报告消息。
所述接收单元303,还用于接收所述第一计算节点发送的第二报告消息。
其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识。
具体的,所述接收单元303在接收到第一计算节点发送的第二报告消息后,使得所述处理单元301触发所述发送单元302向第一计算节点发送接收到第二报告消息的响应消息,以使得第一计算节点在接收到第二计算节点发送的接收到第二报告消息的响应消息之后,确定第二计算节点已接收到第二报告消息。
所述接收单元303,还用于接收所述第一计算节点发送的第二响应消息。
其中,所述第二响应消息携带有第一图顶点的顶点标识及所述第一计算节点对所述第二图顶点已进行更新的消息。
本发明实施例提供了一种计算节点,所述计算节点在获取到第一图顶点的第一值后,根据第二规则向第一计算节点发送第一报告消息,并将第一图顶点的状态信息标记为已发送状态,以使得第一计算节点在接收到所述计算节点发送的第一报告消息后,更新第二图顶点的值,并在更新完第二图顶点的值,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
本发明实施例提供了一种数据处理的方法,如图5所示,包括:
501、第一计算节点接收第二计算节点发送的第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
需要说明的是,第一图顶点的第一值可以是具体的数字,也可以是一个集合。
需要说明的是,在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点未接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点的当前值;在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点根据所述其他节点发送的报告消息更新后的当前值。
502、所述第一计算节点确定所述第二图顶点的状态信息是否为已发送状态。
其中,所述第二图顶点的状态信息用于记录所述第一计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态。
具体的,第一计算节点在接收到第二计算节点发送的第一报告消息后,解析出第一报告消息中携带的第二图顶点的顶点标识,从而根据顶点标识确定第二计算节点向第一计算节点处理的图数据的第二图顶点发送消息,此时,第一计算节点在存储器中获取第二图顶点的状态信息,即第一计算节点根据第二图顶点的顶点标识在存储器中查找第二图顶点,进而在第二图顶点的列表中查找第二图顶点的状态信息,并确定第二图顶点的状态信息是否为已发送状态。
需要说明的是,所述第二图顶点的状态信息还用于记录所述第一计算节点是否向与第二图顶点关联的其他计算节点发送所述第二图顶点的消息的状态。
503、若确定所述第二图顶点的状态信息为已发送状态,则所述第一计算节点获取所述第二图顶点的第二值。
其中,所述第二图顶点的第二值为所述第一计算节点向所述第二计算节点发送的值。
需要说明的是,第二图顶点的第二值可以是具体的数字,也可以是一个集合。
具体的,第一计算节点在确定第二图顶点的状态信息为已发送状态时,则说明第一计算节点已经向第二计算节点发送携带有第二图顶点的第二值的消息,以使得第二计算节点根据第二图顶点的第二值对与第二图顶点关联的第一图顶点进行更新,为了使得第一计算节点在更新第二图顶点时与第二计算节点更新第一图顶点时同步,第一计算节点需要获取第二图顶点的第二值,即第一计算节点根据第二图顶点的顶点标识在存储器中查找第二图顶点,进而在第二图顶点的列表中查找第二图顶点的第二值。
需要说明的是,第一计算节点在向第二计算节点发送携带有第二图顶点的第二值的消息的同时,还向与第二图顶点关联的其他计算节点处理的图顶点发送携带有第二图顶点的第二值,具体方法与第一计算节点向第二计算节点发送携带有第二图顶点的第二值的消息的方法相同,本发明在此不再赘述。
504、所述第一计算节点根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
其中,所述第一规则为用户根据图数据定义的处理规则。
具体的,第一计算节点根据图数据的不同,对第二图顶点的第二值的更新的方法也不同,具体如下:
所述第一计算节点在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
505、所述第一计算节点删除所述第一报告消息。
具体的,第一计算节点在接收到第一报告消息后,根据第一报告消息确定发送与第一图顶点关联的第二图顶点,及根据第一图顶点的第一值更新第二图顶点的第二值后,将接收到的第一报告消息删除,以便减小对内存的占有率。
需要说明的是,第一计算节点还可以接收到其他计算节点发送的报告消息,在接收到其他计算节点发送的报告消息之后,执行的步骤与第一计算节点接收到第二计算节点的第一报告消息的处理步骤相同,本发明在此不再赘述。
本发明实施例提供了一种数据处理的方法,第一计算节点在接收到第二计算节点发送的第一报告消息后,解析此第一报告消息,从而确定与第一图顶点关联的第二图顶点,并确定第二图顶点的状态信息是否为已发送状态,若确定第二图顶点的状态信息为已发送状态,则获取第二图顶点的第二值,并根据第二图顶点的第二值及第一规则更新第二图顶点的第二值,或者,根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值,并在更新完第二图顶点的第二值后,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
本发明实施例提供了一种数据处理的方法,如图6所示,
601、第二计算节点获取第一图顶点的第一值。
其中,第一图顶点的第一值可以是具体的数字,也可以是一个集合。
具体的,在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点未接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点的当前值,即第二计算节点根据第一图顶点的顶点标识在存储器中找到第一图顶点的列表,并在第一图顶点的列表中查找第一图顶点的当前值,即获取第一图顶点的第一值。
在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第二计算节点根据所述其他节点发送的报告消息更新后的当前值,即第二计算节点根据第一图顶点的顶点标识在存储器中找到第一图顶点的列表,并在第一图顶点的列表中查找更新后的第一图顶点的当前值,即获取第一图顶点的第一值。
602、所述第二计算节点根据第二规则向第一计算节点发送第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。所述第二规则为所述计算节点确定向哪些计算节点发送报告消息的规则。
具体的,第二计算节点在获取到第一图顶点的第一值后,向与第一图顶点相关联的管理第二图顶点的第一计算节点发送携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息。
603、所述第二计算节点将所述第一图顶点的状态信息标记为已发送状态。
其中,所述第一图顶点的状态信息用于记录所述第二计算节点是否向所述第一计算节点发送所述第一图顶点的消息的状态。
需要说明的是,所述第一图顶点的状态信息还用于记录所述第二计算节点是否向与第一图顶点关联的其他计算节点发送所述第一图顶点的消息的状态。
本发明实施例提供了一种数据处理的方法,第二计算节点在获取到第一图顶点的第一值后,根据第二规则向第一计算节点发送第一报告消息,并将第一图顶点的状态信息标记为已发送状态,以使得第一计算节点在接收到第二计算节点发送的第一报告消息后,更新第二图顶点的值,并在更新完第二图顶点的值,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
本发明实施例提供了一种数据处理的方法,如图7所示,
701、第二计算节点获取第一图顶点的第一值。
其中,第一图顶点的第一值可以是具体的数字,也可以是一个集合。
具体的,可参考步骤501,本发明在此不再赘述。
702、所述第二计算节点根据第二规则向第一计算节点发送第一报告消息;第一计算节点接收第二计算节点发送的第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
具体的,第二计算节点在获取到第一图顶点的第一值后,向与第一图顶点相关联的管理第二图顶点的第一计算节点发送携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息。
此时,第一计算节点接收第二计算节点发送的携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息。
具体的,第一计算节点接收第二计算节点发送的携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息的说明可参考步骤501,本发明在此不再赘述。
需要说明的是,第二计算节点在获取到第一图顶点的第一值后,还需要根据第二规则向与第一图顶点相关联的其他计算节点处理的图顶点发送携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息,本发明在此不再赘述。
703、所述第一计算节点向所述第二计算节点发送第一响应消息;所述第二计算节点接收所述第一计算节点发送的第一响应消息。
其中,所述第一响应消息携带有第一图顶点的顶点标识及已接收到第一报告消息的消息。
具体的,第一计算节点在接收到第二计算节点发送的第一报告消息之后,向第二计算节点发送第一响应消息,此时,第二计算节点接收第一计算节点发送的第一响应消息,从而第二计算节点根据第一响应消息确定第一计算节点接收到第一报告消息,而不需要再次向第一计算节点重复发送第一报告消息。
需要说明的是,第一计算节点在接收到其他计算节点发送的报告消息后,均需要向此计算节点发送响应消息,以使得此计算节点确定第一计算节点是否接收到发送的报告消息,本发明在此不再赘述。
704、所述第二计算节点将所述第一图顶点的状态信息标记为已发送状态。
其中,所述第一图顶点的状态信息用于记录所述第二计算节点是否向所述第一计算节点发送第一图顶点的消息的状态。
705、所述第一计算节点确定所述第二图顶点的状态信息是否为已发送状态。
其中,所述第二图顶点的状态信息用于记录所述第一计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态。
具体的,可参考步骤502,本发明在此不再赘述。
需要说明的是,第一计算节点根据确定所述第二图顶点的状态信息的不同,执行的步骤也不同,若确定所述第二图顶点的状态信息为已发送状态,则执行步骤706-707,710-711;若确定所述第二图顶点的状态信息为未发送状态,则执行步骤708-711。
706、若确定所述第二图顶点的状态信息为已发送状态,则所述第一计算节点获取所述第二图顶点的第二值。
其中,所述第二图顶点的第二值为所述第一计算节点向所述第二计算节点发送的值。所述第二图顶点的第二值可以是具体的数字,也可以是一个集合。
具体的,可参考步骤503,本发明在此不再赘述。
707、所述第一计算节点根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
其中,所述第一规则为用户根据图数据定义的处理规则。
具体的,第一计算节点根据图数据任务的不同,对第二图顶点的第二值的更新的方法也不同,具体如下:
所述第一计算节点在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
708、若确定所述第二图顶点的状态信息为未发送状态,则所述第一计算节点确定所述第二图顶点的第一值,并向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态;所述第二计算节点接收所述第一计算节点发送的所述第二报告消息。
其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识。
具体的,第一计算节点在确定第二图顶点的状态信息为未发送状态时,则说明第一计算节点没有向第二计算节点发送携带有第二图顶点的第二值的消息,此时,第一计算节点确定第二图顶点的第一值,而为了保证第一计算节点在更新第二图顶点时与第二计算节点更新第一图顶点时同步,此时,需要向第二计算节点发送携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息,此时,第二计算节点接收第一计算节点发送的携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息,以使得第二计算节点可以根据第二图顶点的第一值对第一图顶点进行更新。进一步的,第二计算节点在接收到第一计算节点发送的携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息之后,向第一计算节点发送接收到第二报告消息的响应消息,以使得第一计算节点在接收到第二计算节点发送的接收到第二报告消息的响应消息之后,确定第二计算节点已接收到第二报告消息,并将第二图顶点的状态信息标记为已发送状态。
进一步的,所述第一计算节点存储有所述第二图顶点的列表;所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
所述确定所述第二图顶点的第一值包括:
所述第一计算节点确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定所述第二图顶点的当前值存在,则将所述第二图顶点的当前值确定为所述第二图顶点的第一值。
具体的,第一计算节点在存储器中查找到第二图顶点的当前值后,确定第二图顶点的当前值是否存在,若确定第二图顶点的当前值存在,则说明第一计算节点根据其他计算节点发送的关于第二图顶点的报告消息对第二图顶点进行了计算,则此时第二图顶点的第一值为存储器中存储的第二图顶点的当前值,即将第二图顶点的当前值确定为第二图顶点的第一值。
需要说明的是,所述第一计算节点还存储有除第二图顶点之外的其他图顶点的列表;所述列表记录有所述其他图顶点的第二值及所述其他图顶点的当前值。
进一步的,所述第二图顶点的当前值的获取过程如下:
所述第一计算节点接收第三计算节点发送的第三报告消息,并根据所述第二图顶点的第二值及所述第一规则确定第二图顶点的当前值;或者,
根据所述第三图顶点的第一值、所述第二图顶点的第二值及所述第一规则确定第二图顶点的当前值。
其中,所述第三报告消息携带所述第三计算节点处理的第三图顶点的第一值,及与所述第一计算节点处理的与所述第三图顶点关联的第二图顶点的顶点标识。
需要说明的是,在所述第三计算节点向所述第一计算节点发送第三报告消息之前,所述第三计算节点未接收到其他计算节点发送的关于第三图顶点的报告消息时,所述第三图顶点的第一值为所述第三图顶点的当前值;在所述第三计算节点向所述第一计算节点发送第一报告消息之前,所述第三计算节点接收到其他计算节点发送的关于第三图顶点的报告消息时,所述第三图顶点的第一值为所述第三计算节点根据所述其他节点发送的报告消息更新后的当前值。
若确定所述第二图顶点的当前值不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
具体的,第一计算节点在存储器中查找到第二图顶点的当前值后,确定第二图顶点的当前值是否存在,若确定第二图顶点的当前值不存在,则说明第一计算节点没有接收到其他计算节点发送的关于第二图顶点的报告消息,此时第二图顶点的第一值为存储器中存储的第二图顶点的第二值,即将第二图顶点的第二值确定为第二图顶点的第一值。
需要说明的是,第一计算节点确定第二图顶点的第一值的方法还可以是其他方法,例如,第一计算节点将向其他计算节点发送的报告消息中携带的第二图顶点的值均进行存储,在第一计算节点确定第二图顶点的状态信息为未发送状态时,则获取第二图顶点的当前值作为第二图顶点的第一值;在确定第二图顶点的状态信息为已发送状态时,则将存储的第一计算节点向第二计算节点发送的第二图顶点的值确定为第二图顶点的第一值,本发明对此不作限制。
709、所述第一计算节点根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
具体的,第一计算节点根据图数据任务的不同,对第二图顶点的第一值的更新的方法也不同,具体如下:
所述第一计算节点在确定所述图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
710、所述第一计算节点删除所述第一报告消息。
具体的,可参考步骤505,本发明在此不再赘述。
711、所述第一计算节点向所述第二计算节点发送第二响应消息。所述第二计算节点接收所述第一计算节点发送的第二响应消息。
其中,所述第二响应消息携带有第一图顶点的顶点标识及所述第一计算节点对所述第二图顶点已进行更新的消息。
具体的,第一计算节点在对第二图顶点的第二值更新完成后,需要向第二计算节点发送第二响应消息,此时,第二计算节点接收第一计算节点发送的第二响应消息,从而第二计算节点根据第二响应消息确定第一计算节点对接收到的第一报告消息已经进行了处理。
需要说明的是,第一计算节点在接收到第二计算节点及其他计算节点发送的携带有第二图顶点的顶点标识的第二响应消息后,说明每个计算节点在本次迭代中均完成了对与第二图顶点关联的图顶点的一次更新。在第一计算节点接收到第二计算节点及其他计算节点发送的携带有第一计算节点处理的图数据,除第二图顶点之外的其他顶点标识的响应消息时,说明第一计算节点在本次迭代结束,第一计算节点将第二图顶点的当前值替换为第二图顶点的第二值,并将其他图顶点的当前值替换为其他图顶点的第二值,以使得下一次迭代时,第一计算节点根据第二规则向第二计算节点及其他计算节点发送携带有第二图顶点的第二值的报告消息及携带有其他图顶点的第二值的报告消息。
需要说明的是,第一计算节点还可以接收到第二计算节点及其他计算节点发送的携带有第一计算节点处理的图数据的除第二图顶点之外的其他顶点标识的报告消息,之后的处理方法与第一计算节点接收第二计算节点及其他计算节点发送的携带有第二图顶点的顶点标识的报告消息的处理方法相同,本发明在此不再赘述。
需要说明的是,每个计算节点在完成一次更新后,且确定与其相关联的其他计算节点均完成一次更新后,则向分配给自身图数据任务的主节点发送已完成更新的响应消息,此时,主节点在接收到每一个计算节点发送的响应消息后,发送同步信号,从而完成了一次迭代。
需要说明的是,上述步骤为在一次迭代时,第一计算节点的计算过程及第二计算节点的发送过程,其他计算节点的计算过程及发送过程与第一计算节点的计算过程及第二计算节点的发送过程相同。
本发明实施例提供了一种数据处理的方法,第二计算节点在获取到第一图顶点的第一值后,根据第二规则向第一计算节点发送第一报告消息,第一计算节点在接收到第二计算节点发送的第一报告消息后,解析此第一报告消息,从而确定与第一图顶点关联的第二图顶点,并确定第二图顶点的状态信息是否为已发送状态,若确定第二图顶点的状态信息为已发送状态,则获取第二图顶点的第二值,并根据第二图顶点的第二值及第一规则更新第二图顶点的第二值,或者,根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值,并在更新完第二图顶点的第二值后,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
如图8所示,其为本发明实施例所提供的一种计算节点的结构示意图。参考图8所示,该计算节点包括:接收器801,发送器802,存储器803,以及分别与接收器801、发送器802、存储器803连接的处理器804。
其中,存储器803中存储一组程序代码,且处理器804用于调用存储器803中存储的程序代码。接收器801,发送器802及处理器804用于执行以下操作:
所述接收器801,用于接收第二计算节点发送的第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
需要说明的是,第一图顶点的第一值可以是具体的数字,也可以是一个集合。
需要说明的是,在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点未接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点的当前值;在所述第二计算节点向所述第一计算节点发送第一报告消息之前,所述第二计算节点接收到其他计算节点发送的关于第一图顶点的报告消息时,所述第一图顶点的第一值为所述第一图顶点根据所述其他节点发送的报告消息更新后的当前值。
所述处理器804,用于确定所述第二图顶点的状态信息是否为已发送状态。
其中,所述第二图顶点的状态信息用于记录所述第一计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态。
具体的,所述处理器804,在所述接收器801接收到第二计算节点发送的第一报告消息后,解析出第一报告消息中携带的第二图顶点的顶点标识,从而根据顶点标识确定第二计算节点向第一计算节点处理的图数据的第二图顶点发送消息,此时,第一计算节点获取第二图顶点的状态信息,即第一计算节点根据第二图顶点的顶点标识在存储器中查找第二图顶点,进而在第二图顶点的列表中查找第二图顶点的状态信息,并确定第二图顶点的状态信息是否为已发送状态。
需要说明的是,所述第二图顶点的状态信息还用于记录所述第一计算节点是否向与第二图顶点关联的其他计算节点发送所述第二图顶点的消息的状态。
所述处理器804,还用于在确定所述第二图顶点的状态信息为已发送状态时,获取所述第二图顶点的第二值。
其中,所述第二图顶点的第二值为所述第一计算节点向所述第二计算节点发送的值。
需要说明的是,所述第二图顶点的第二值可以是具体的数字,也可以是一个集合。
具体的,所述处理器804在确定第二图顶点的状态信息为已发送状态时,则说明已经向第二计算节点发送携带有第二图顶点的第二值的消息,以使得第二计算节点根据第二图顶点的第二值对与第二图顶点关联的第一图顶点进行更新,为了使得所述处理器804在更新第二图顶点时与第二计算节点更新第一图顶点时同步,则所述处理器804需要获取第二图顶点的第二值,即根据第二图顶点的顶点标识查找第二图顶点,进而在第二图顶点的列表中查找第二图顶点的第二值。
所述处理器804,还用于根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
其中,所述第一规则为用户根据图数据定义的处理规则。
具体的,所述处理器804根据图数据的不同,对第二图顶点的第二值的更新的方法也不同,具体如下:
所述处理器804,具体用于在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
所述处理器804,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
所述处理器804,还用于删除所述第一报告消息。
具体的,所述处理器804在所述接收器801接收到第一报告消息后,根据第一报告消息确定发送与第一图顶点关联的第二图顶点,及根据第一图顶点的第一值更新第二图顶点的第二值后,将所述接收器801接收到的第一报告消息删除,以便减小对内存的占有率。
需要说明的是,所述接收器801还可以接收到其他计算节点发送的报告消息,在接收到其他计算节点发送的报告消息之后,所述处理器804执行的步骤与上述步骤相同,本发明在此不再赘述。
所述发送器802,用于向所述第二计算节点发送第一响应消息。
具体的,所述发送器802在所述接收器801接收到第二计算节点发送的第一报告消息之后,向第二计算节点发送第一响应消息。
需要说明的是,所述发送器802在所述接收器801在接收到其他计算节点发送的报告消息后,均需要向此计算节点发送响应消息,以使得此计算节点确定所述计算节点是否接收到发送的报告消息,本发明在此不再赘述。
所述处理器804,还用于在确定所述第二图顶点的状态信息为未发送状态时,确定第二图顶点的第一值。
具体的,所述处理器804在确定第二图顶点的状态信息为未发送状态时,则说明所述发送器802没有向第二计算节点发送携带有第二图顶点的第二值的消息,此时,所述处理器804确定第二图顶点的第一值。
所述发送器802,还用于向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态。
其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识。所述第二图顶点的第一值可以是具体的数字,也可以是一个集合。
具体的,所述发送器802在所述处理器804确定第二图顶点的状态信息为未发送状态时,为了保证所述处理器804在更新第二图顶点时与第二计算节点更新第一图顶点时同步,需要向第二计算节点发送携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息,此时,第二计算节点接收第一计算节点发送的携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息,以使得第二计算节点可以根据第二图顶点的第一值对第一图顶点进行更新。进一步的,第二计算节点在接收到第一计算节点发送的携带有第二图顶点的第一值及第一图顶点的顶点标识的第二报告消息之后,向所述计算节点发送接收到第二报告消息的响应消息,以使得所述发送器802在所述接收器801接收到第二计算节点发送的接收到第二报告消息的响应消息之后,确定第二计算节点已接收到第二报告消息,并将第二图顶点的状态信息标记为已发送状态。
所述存储器803,用于存储所述第二图顶点的列表。所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
所述处理器804,具体用于确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定第二图顶点的当前值存在,则将第二图顶点的当前值确定为第二图顶点的第一值。
具体的,所述处理器804在所述存储器803中查找到第二图顶点的当前值后,确定第二图顶点的当前值是否存在,若确定第二图顶点的当前值存在,则说明根据其他计算节点发送的关于第二图顶点的报告消息进行了计算,则此时第二图顶点的第一值为所述存储器803中存储的第二图顶点的当前值,即将第二图顶点的当前值确定为第二图顶点的第一值。
进一步的,所述处理器804获取第二图顶点的当前值的过程如下:
所述处理器804在所述接收器801接收到第三计算节点发送的第三报告消息时,根据第二图顶点的第二值及所述第一规则确定第二图顶点的当前值;或者,
根据所述第三图顶点的第一值、所述第二图顶点的第二值及所述第一规则确定所述第二图顶点的当前值。
其中,所述第三报告消息携带所述第三计算节点处理的第三图顶点的第一值,及与所述第一计算节点处理的与所述第三图顶点关联的第二图顶点的顶点标识。
需要说明的是,在所述第三计算节点向所述第一计算节点发送第三报告消息之前,所述第三计算节点未接收到其他计算节点发送的关于第三图顶点的报告消息时,所述第三图顶点的第一值为所述第三图顶点的当前值;在所述第三计算节点向所述第一计算节点发送第一报告消息之前,所述第三计算节点接收到其他计算节点发送的关于第三图顶点的报告消息时,所述第三图顶点的第一值为所述第三计算节点根据所述其他节点发送的报告消息更新后的当前值。
若确定第二图顶点的当前值不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
具体的,所述处理器804在所述存储器803中查找到第二图顶点的当前值后,确定第二图顶点的当前值是否存在,若确定第二图顶点的当前值不存在,则说明所述接收器801没有接收到其他计算节点发送的关于第二图顶点的报告消息,此时第二图顶点的第一值为所述存储器803中存储的第二图顶点的第二值,即将第二图顶点的第二值确定为第二图顶点的第一值。
需要说明的是,所述处理器804确定第二图顶点的第一值的方法还可以是其他方法,例如,所述处理器804将向其他计算节点发送的报告消息中携带的第二图顶点的值均存储在所述存储器803中,在确定第二图顶点的状态信息为未发送状态时,则获取第二图顶点的当前值作为第二图顶点的第一值;在确定第二图顶点的状态信息为已发送状态时,则将所述存储器803中存储的第二图顶点向第二计算节点发送的值确定为第二图顶点的第一值,本发明对此不作限制。
所述处理器804,还用于根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
具体的,所述处理器804根据图数据的不同,对所述第二图顶点的第一值的更新的方法也不同,具体如下:
所述处理器804,具体用于在确定所述图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
所述处理器804,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
所述接收器801,还用于向所述第二计算节点发送第二响应消息。
具体的,所述接收器801在所述处理器804对第二图顶点的第二值更新完成后,需要向第二计算节点发送第二响应消息,此时,第二计算节点接收所述计算节点发送的第二响应消息,从而第二计算节点根据第二响应消息确定所述计算节点对接收到的第一报告消息已经进行了处理。
需要说明的是,所述处理器804在所述接收器801接收到第二计算节点及其他计算节点发送的携带有第二图顶点的顶点标识的第二响应消息后,说明每个计算节点在本次迭代中均完成了对与第二图顶点关联的图顶点的一次更新。在所述接收器801接收到第二计算节点及其他计算节点发送的携带有第一计算节点处理的图数据,除第二图顶点之外的其他顶点标识的响应消息时,说明第一计算节点在本次迭代结束,此时,所述处理器804将第二图顶点的当前值替换为第二图顶点的第二值,并将其他图顶点的当前值替换为其他图顶点的第二值,以使得下一次迭代时,所述处理器804触发所述发送器802根据第二规则向第二计算节点及其他计算节点发送携带有第二图顶点的第二值的报告消息及携带有其他图顶点的第二值的报告消息。
需要说明的是,所述处理器804在所述接收器801接收到第二计算节点及其他计算节点发送的携带有第一计算节点处理的图数据的除第二图顶点之外的其他顶点标识的报告消息之后的处理方法与所述处理器804在所述接收器801接收到第二计算节点及其他计算节点发送的携带有第二图顶点的顶点标识的报告消息的处理方法相同,本发明在此不再赘述。
需要说明的是,所述处理器804在对每个计算节点完成一次更新后,且确定与其相关联的其他计算节点均完成一次更新后,则触发所述发送器802向分配给自身图数据任务的主节点发送已完成更新的响应消息,此时,主节点在接收到每一个计算节点发送的响应消息后,发送同步信号,从而完成了一次迭代。
本发明实施例提供了一种计算节点,所述计算节点在接收到第二计算节点发送的第一报告消息后,解析此第一报告消息,从而确定与第一图顶点关联的第二图顶点,并确定第二图顶点的状态信息是否为已发送状态,若确定第二图顶点的状态信息为已发送状态,则获取第二图顶点的第二值,并根据第二图顶点的第二值及第一规则更新第二图顶点的第二值,或者,根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值,并在更新完第二图顶点的第二值后,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
如图9所示,其为本发明实施例所提供的一种计算节点的结构示意图。参考图9所示,该计算节点包括:发送器901,接收器902,存储器903,以及分别与发送器901、接收器902、存储器903连接的处理器904。
其中,存储器903中存储一组程序代码,且处理器904用于调用存储器903中存储的程序代码。发送器901,接收器902及处理器904用于执行以下操作:
所述处理器904,用于获取第一图顶点的第一值。
其中,所述第一图顶点的第一值可以是具体的数字,也可以是一个集合。
具体的,所述处理器904在所述发送器901向所述第一计算节点发送第一报告消息之前,未接收到其他计算节点发送的关于第一图顶点的报告消息时,第一图顶点的第一值为第一图顶点的当前值,即所述处理器904根据第一图顶点的顶点标识找到第一图顶点的列表,并在第一图顶点的列表中查找第一图顶点的当前值,即获取第一图顶点的第一值。
在所述发送器901向所述第一计算节点发送第一报告消息之前,接收到其他计算节点发送的关于第一图顶点的报告消息时,第一图顶点的第一值为所述处理器904根据所述其他节点发送的关于第一图顶点的报告消息更新后的当前值,即所述处理器904根据第一图顶点的顶点标识找到第一图顶点的列表,并在第一图顶点的列表中查找更新后的第一图顶点的当前值,即获取第一图顶点的第一值。
所述发送器901,用于根据第二规则向第一计算节点发送第一报告消息。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。所述第二规则为所述计算节点确定向哪些计算节点发送报告消息的规则。
具体的,所述发送器901,在所述处理器904获取到第一图顶点的第一值后,向与第一图顶点相关联的管理第二图顶点的第一计算节点发送携带有第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识的第一报告消息。
所述处理器904,还用于将所述第一图顶点的状态信息标记为已发送状态。
其中,所述第一图顶点的状态信息用于记录所述第二计算节点是否向所述第一计算节点发送所述第一图顶点的消息的状态。
所述接收器902,用于接收所述第一计算节点发送的第一响应消息。
其中,所述第一响应消息携带有第一图顶点的顶点标识及已接收到第一报告消息的消息。
具体的,所述接收器902在接收到所述第一计算节点发送的第一响应消息后,使得所述处理器904根据第一响应消息确定所述第一计算节点接收到第一报告消息,而不需要触发所述发送器901再次向第一计算节点重复发送第一报告消息。
所述接收器902,还用于接收所述第一计算节点发送的第二报告消息。
其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识。
具体的,所述接收器902在接收到第一计算节点发送的第二报告消息后,使得所述处理器904触发所述发送器901向第一计算节点发送接收到第二报告消息的响应消息,以使得第一计算节点在接收到第二计算节点发送的接收到第二报告消息的响应消息之后,确定第二计算节点已接收到第二报告消息。
所述接收器901,还用于接收所述第一计算节点发送的第二响应消息。
其中,所述第二响应消息携带有第一图顶点的顶点标识及所述第一计算节点对所述第二图顶点已进行更新的消息。
本发明实施例提供了一种计算节点,所述计算节点在获取到第一图顶点的第一值后,根据第二规则向第一计算节点发送第一报告消息,并将第一图顶点的状态信息标记为已发送状态,以使得第一计算节点在接收到第二计算节点发送的第一报告消息后,更新第二图顶点的值,并在更新完第二图顶点的值,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
本发明实施例提供了一种数据处理的系统,如图10所示,包括第一计算节点1001及第二计算节点1002。
所述第一计算节点1001为上述实施例所述的第一计算节点。
所述第二计算节点1002,用于获取第一图顶点的第一值,并根据第二规则向所述第一计算节点1001发送第一报告消息,并将所述第一图顶点的状态信息标记为已发送状态。
其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
所述第二计算节点1002,还用于接收所述第一计算节点1001发送的第一响应消息。
所述第二计算节点1002,还用于接收所述第一计算节点1001发送的第二报告消息。
所述第二计算节点1002,还用于接收所述第一计算节点1001发送的第二响应消息。
本发明实施例提供了一种数据处理的方法,装置及系统,第二计算节点在获取到第一图顶点的第一值后,根据第二规则向第一计算节点发送第一报告消息,第一计算节点在接收到第二计算节点发送的第一报告消息后,解析此第一报告消息,从而确定与第一图顶点关联的第二图顶点,并确定第二图顶点的状态信息是否为已发送状态,若确定第二图顶点的状态信息为已发送状态,则获取第二图顶点的第二值,并根据第二图顶点的第二值及第一规则更新第二图顶点的第二值,或者,根据第一图顶点的第一值,第二图顶点的第二值及第一规则更新第二图顶点的第二值;若为未发送状态,则确定第二图顶点的第一值,并根据第二图顶点的第一值及第一规则更新第二图顶点的第一值,或者,根据第一图顶点的第一值,第二图顶点的第一值及第一规则更新第二图顶点的第一值,并在更新完第二图顶点的第一值或第二值后,删除接收到的第一报告消息。这样,第一计算节点在接收到第二计算节点发送的第一报告消息之后,直接根据此第一报告消息对第二图顶点的值进行更新,并在更新完第二图顶点的值后,删除接收到的第一报告消息,而不需要将第一报告消息进行存储,在等到与第二图顶点关联的其他图顶点所在的计算节点发送消息时才进行对第二图顶点进行更新,从而减小了对内存的占有,使得其他数据能够存储在消息库中,从而提高了对分布式图数据处理系统的内存资源的利用率。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (18)
1.一种计算节点装置,其特征在于,包括:
接收单元,用于接收第二计算节点发送的第一报告消息;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识;
处理单元,用于确定所述第二图顶点的状态信息是否为已发送状态;其中,所述第二图顶点的状态信息用于记录所述计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态;
所述处理单元,还用于在确定所述第二图顶点的状态信息为已发送状态时,获取所述第二图顶点的第二值;其中,所述第二图顶点的第二值为所述计算节点向所述第二计算节点发送的值;
所述处理单元,还用于根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;
所述处理单元,还用于删除所述第一报告消息。
2.根据权利要求1所述的计算节点装置,其特征在于,
所述处理单元,具体用于在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;
所述处理单元,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
3.根据权利要求1或2所述的计算节点装置,其特征在于,还包括:
所述处理单元,还用于在确定所述第二图顶点的状态信息为未发送状态时,确定所述第二图顶点的第一值;
发送单元,用于向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态;其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识;
所述处理单元,还用于根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
4.根据权利要求3所述的计算节点装置,其特征在于,
所述处理单元,具体用于在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值;
所述处理单元,具体用于在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
5.根据权利要求1或2或4任一项所述的计算节点装置,其特征在于,还包括:
存储单元,用于存储所述第二图顶点的列表;所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
6.根据权利要求5所述的计算节点装置,其特征在于,
所述处理单元,具体用于确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定所述第二图顶点的当前值存在,则将所述第二图顶点的当前值确定为所述第二图顶点的第一值;
若确定所述第二图顶点的当前值为不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
7.根据权利要求1或2或4任一项所述的计算节点装置,其特征在于,
所述发送单元,还用于向所述第二计算节点发送第一响应消息。
8.根据权利要求1或2或4任一项所述的计算节点装置,其特征在于,
所述发送单元,还用于向所述第二计算节点发送第二响应消息。
9.一种数据处理的方法,其特征在于,包括:
第一计算节点接收第二计算节点发送的第一报告消息;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识;
所述第一计算节点确定所述第二图顶点的状态信息是否为已发送状态;其中,所述第二图顶点的状态信息用于记录所述第一计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态;
若确定所述第二图顶点的状态信息为已发送状态,则所述第一计算节点获取所述第二图顶点的第二值;其中,所述第二图顶点的第二值为所述第一计算节点向所述第二计算节点发送的值;
所述第一计算节点根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;
所述第一计算节点删除所述第一报告消息。
10.根据权利要求9所述的方法,其特征在于,所述第一计算节点根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值包括:
所述第一计算节点在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;
所述第一计算节点根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值包括:
所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值。
11.根据权利要求9或10所述的方法,其特征在于,还包括:
若确定所述第二图顶点的状态信息为未发送状态,则确定所述第二图顶点的第一值,并向所述第二计算节点发送第二报告消息,并将所述第二图顶点的状态信息标记为已发送状态;其中,所述第二报告消息携带有所述第二图顶点的第一值及所述第一图顶点的顶点标识;
所述第一计算节点根据所述第二图顶点的第一值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
12.根据权利要求11所述的方法,其特征在于,所述第一计算节点根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值包括:
所述第一计算节点在确定图数据与所述第一图顶点的第一值无关时,根据所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值;
所述第一计算节点根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值包括:
所述第一计算节点在确定所述图数据与所述第一图顶点的第一值有关时,根据所述第一图顶点的第一值,所述第二图顶点的第一值及第一规则更新所述第二图顶点的第一值。
13.根据权利要求9或10或12任一项所述的方法,其特征在于,所述第一计算节点存储有所述第二图顶点的列表;所述列表记录有所述第二图顶点的第二值及所述第二图顶点的当前值。
14.根据权利要求13所述的方法,其特征在于,所述确定所述第二图顶点的第一值包括:
所述第一计算节点确定所述列表中记录的所述第二图顶点的当前值是否存在;若确定所述第二图顶点的当前值存在,则将所述第二图顶点的当前值确定为所述第二图顶点的第一值;
若确定所述第二图顶点的当前值不存在,则将所述第二图顶点的第二值确定为所述第二图顶点的第一值。
15.根据权利要求9或10或12任一项所述的方法,其特征在于,在所述第一计算节点确定所述第二图顶点的状态信息是否为已发送状态之前,还包括:
所述第一计算节点向所述第二计算节点发送第一响应消息。
16.根据权利要求9或10或12任一项所述的方法,其特征在于,在所述第一计算节点删除所述第一报告消息之后,还包括:
所述第一计算节点向所述第二计算节点发送第二响应消息。
17.一种计算节点装置,其特征在于,包括:
接收器,用于接收第二计算节点发送的第一报告消息;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识;
处理器,用于确定所述第二图顶点的状态信息是否为已发送状态;其中,所述第二图顶点的状态信息用于记录所述计算节点是否向所述第二计算节点发送所述第二图顶点的消息的状态;
所述处理器,还用于在确定所述第二图顶点的状态信息为已发送状态时,获取所述第二图顶点的第二值;其中,所述第二图顶点的第二值为所述计算节点向所述第二计算节点发送的值;
所述处理器,还用于根据所述第二图顶点的第二值及第一规则,或者根据所述第一图顶点的第一值,所述第二图顶点的第二值及第一规则更新所述第二图顶点的第二值;
所述处理器,还用于删除所述第一报告消息。
18.一种数据处理的系统,包括:第一计算节点及第二计算节点;
所述第一计算节点为权利要求1-8中任一项所述的计算节点;
所述第二计算节点,用于获取第一图顶点的第一值,并根据第二规则向所述第一计算节点发送第一报告消息,并将所述第一图顶点的状态信息标记为已发送状态;其中,所述第一报告消息携带所述第二计算节点处理的第一图顶点的第一值,及与所述第一计算节点处理的与所述第一图顶点关联的第二图顶点的顶点标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410191495.0A CN103970860B (zh) | 2014-05-07 | 2014-05-07 | 一种数据处理的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410191495.0A CN103970860B (zh) | 2014-05-07 | 2014-05-07 | 一种数据处理的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970860A CN103970860A (zh) | 2014-08-06 |
CN103970860B true CN103970860B (zh) | 2017-05-24 |
Family
ID=51240357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410191495.0A Active CN103970860B (zh) | 2014-05-07 | 2014-05-07 | 一种数据处理的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970860B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657507B (zh) * | 2015-03-16 | 2017-12-08 | 华为技术有限公司 | 基于分布式系统的图数据的模式检测方法和装置 |
CN108958902B (zh) * | 2017-05-25 | 2021-07-20 | 创新先进技术有限公司 | 图计算方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833481A (zh) * | 2010-05-14 | 2010-09-15 | 北京大学 | 一种用于检测组合服务中并发安排不当的伙伴服务的方法 |
CN102255724A (zh) * | 2011-07-04 | 2011-11-23 | 北京科技大学 | 一种基于超图模型的组播密钥管理方法 |
CN103593433A (zh) * | 2013-11-12 | 2014-02-19 | 中国科学院信息工程研究所 | 一种面向海量时序数据的图数据处理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521782B2 (en) * | 2011-07-20 | 2013-08-27 | Salesforce.Com, Inc. | Methods and systems for processing large graphs using density-based processes using map-reduce |
-
2014
- 2014-05-07 CN CN201410191495.0A patent/CN103970860B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833481A (zh) * | 2010-05-14 | 2010-09-15 | 北京大学 | 一种用于检测组合服务中并发安排不当的伙伴服务的方法 |
CN102255724A (zh) * | 2011-07-04 | 2011-11-23 | 北京科技大学 | 一种基于超图模型的组播密钥管理方法 |
CN103593433A (zh) * | 2013-11-12 | 2014-02-19 | 中国科学院信息工程研究所 | 一种面向海量时序数据的图数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103970860A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107104824A (zh) | 一种网络拓扑确定方法和装置 | |
CN107219997A (zh) | 一种用于验证数据一致性的方法及装置 | |
CN107196848B (zh) | 消息推送方法及装置 | |
CN107147724A (zh) | 一种消息推送方法、服务器及计算机可读存储介质 | |
CN108062243A (zh) | 执行计划的生成方法、任务执行方法及装置 | |
CN108289034A (zh) | 一种故障发现方法和装置 | |
CN106888245A (zh) | 一种数据处理方法、装置及系统 | |
CN107872494A (zh) | 一种消息推送方法和装置 | |
CN109152005A (zh) | 一种上行波束指示方法、ue、基站及存储介质 | |
CN104301990B (zh) | 一种数据同步的方法及装置 | |
CN107135149A (zh) | 一种用于推荐社交用户的方法与设备 | |
CN103581317B (zh) | 一种网络资源共享的方法 | |
CN110046994A (zh) | 一种受理区块链存证交易的方法及系统 | |
CN106470150A (zh) | 关系链存储方法及装置 | |
CN109739684A (zh) | 基于向量时钟的分布式键值数据库的副本修复方法与装置 | |
CN103970860B (zh) | 一种数据处理的方法、装置及系统 | |
CN107566270A (zh) | 一种资源访问的处理方法及装置 | |
CN106802865A (zh) | 用于软件测试的应答模拟装置及方法 | |
CN109600254A (zh) | 全链路日志的生成方法及相关系统 | |
CN108696418B (zh) | 一种社交网络中隐私保护方法及装置 | |
CN106131134A (zh) | 一种消息内容合并去重方法及系统 | |
CN107249192A (zh) | 一种共享网络切片的状态监控方法及装置 | |
CN109921920A (zh) | 一种故障信息处理方法与相关装置 | |
CN106293996B (zh) | 数据同步方法、主设备、备份设备和系统 | |
CN105634999B (zh) | 一种介质访问控制地址的老化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |