图划分方法、装置、计算机设备和存储介质

文档序号:1875567 发布日期:2021-11-23 浏览:9次 >En<

阅读说明:本技术 图划分方法、装置、计算机设备和存储介质 (Graph partitioning method and device, computer equipment and storage medium ) 是由 李云波 张琛 万化 李健 陶学慎 朱仁欢 李洁 赵贇 于 2021-07-30 设计创作,主要内容包括:本申请涉及一种图划分方法、装置、计算机设备和存储介质,涉及图计算技术领域,其中,该图划分方法应用于图划分系统的目标计算节点中,所述图划分系统包括多个计算节点,所述目标计算节点为所述多个计算节点中的任意一个,目标计算节点在对边划分时,可以获取到各个计算节点的存储状态信息,存储状态信息用于指示计算节点已经存储的各个边,然后根据各个计算节点的存储状态信息以及边包括的两个顶点将与该边的关联度较高的计算节点确定为该边对应的候选计算节点,以供候选计算节点存储该边。这样在划分读取到的每个边时,是基于计算节点已经存储的各个边来确定读取到的边应该划分到哪个计算节点,因此,提高了划分结果的合理性。(The application relates to a graph partitioning method, a graph partitioning device, computer equipment and a storage medium, and relates to the technical field of graph computation, wherein the graph partitioning method is applied to a target computing node of a graph partitioning system, the graph partitioning system comprises a plurality of computing nodes, the target computing node is any one of the computing nodes, when a target computing node partitions a side, the target computing node can acquire storage state information of each computing node, the storage state information is used for indicating each side which is stored by the computing node, and then the computing node with higher association degree with the side is determined as a candidate computing node corresponding to the side according to the storage state information of each computing node and two vertex points included by the side, so that the candidate computing node can store the side. In this way, when each read edge is divided, the calculation node to which the read edge should be divided is determined based on each edge already stored by the calculation node, so that the rationality of the division result is improved.)

图划分方法、装置、计算机设备和存储介质

技术领域

本申请涉及图计算技术领域,特别是涉及一种图划分方法、装置、计算机设备和存储介质。

背景技术

图是用于表示对象之间关联关系的一种抽象数据结构,使用顶点和边进行描述,其中,顶点用来表征对象,边用来表征对象之间的关联关系。图计算,便是以图作为数据模型来表达问题并予以解决的计算方法。现在的主流图计算系统在图计算过程中,通常需要将整张图加载到内存。然而,随着时代的发展,图的规模越来越大,占用内存越来越多。而单台计算机设备的内存有限,因此,单台计算机设备不能处理超大规模图数据,而需要将超大规模图数据划分多个小图,然后由不同的计算机设备分别对各个小图进行处理。

现有技术中,计算机设备一般是逐一读取超大规模图数据中的每个边,然后将读取到的每个边随机划分给某一个计算机设备,以各个计算机设备中存储的边的数量相等或者大致相等为原则进行划分。

然而,该种的图划分方法,在划分过程中,容易将多临近边放入不同计算机设备,导致跨分区通信量增大,最终使得图计算阶段计算效率降低。因此,划分结果不合理。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高划分结果合理性的图划分方法、装置、计算机设备和存储介质。

一种图划分方法,应用于图划分系统的目标计算节点中,图划分系统包括多个计算节点,目标计算节点为多个计算节点中的任意一个,该方法包括:

获取目标边集合,目标边集合是对原始图数据集进行初始划分后得到的多个边集合中的任一个,目标边集合包括多个边;

依次读取目标边集合中的各个边,对于读取到的每个边,根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点,以触发候选计算节点存储边,并更新候选计算节点的存储状态信息;

其中,存储状态信息用于指示计算节点已经存储的各个边。

在其中一个实施例中,根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点,包括:

根据边包括的顶点和各计算节点的存储状态信息,确定边包括的顶点对应的顶点信息,顶点信息用于指示边包括的顶点在各计算节点的分布状态;

根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点。

在其中一个实施例中,根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点,包括:

若边包括的顶点对应的顶点信息指示边包括的两个顶点分别出现在不同的计算节点中,则将边缓存至目标计算节点的本地缓存队列中;

根据各计算节点的本地缓存队列中存储的边,确定目标计算节点的本地缓存队列中存储的各个边对应的候选计算节点。

在其中一个实施例中,根据各计算节点的本地缓存队列中存储的边,确定目标计算节点的本地缓存队列中存储的各个边对应的候选计算节点,包括:

从本地缓存队列中读取目标边,目标边为本地缓存队列中缓存的边中的任意一个;

从除目标计算节点之外的其他计算节点的本地缓存队列中获取与目标边共顶点的边的信息;

根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,从各计算节点中确定目标边对应的候选计算节点。

在其中一个实施例中,从除目标计算节点之外的其他计算节点的本地缓存队列中获取与目标边共顶点的边的信息,包括:

根据目标边包括的两个顶点生成顶点请求,将顶点请求发送给其他计算节点,顶点请求用于指示其他计算节点将其他计算节点的本地缓存队列中与目标边共顶点的边的信息发送至目标计算节点;

接收其他计算节点发送的其他计算节点的本地缓存队列中的与目标边共顶点的边的信息。

在其中一个实施例中,根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,从各计算节点中确定目标边对应的候选计算节点,包括:

根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,统计各计算节点存储的边中与目标边的第一顶点共顶点的边的数量,得到第一数量;统计各计算节点存储的边中与目标边的第二顶点共顶点的边的数量,得到第二数量;

根据第一数量和第二数量从各计算节点中确定目标边对应的候选计算节点。

在其中一个实施例中,根据第一数量和第二数量从各计算节点中确定目标边对应的候选计算节点,包括:

根据第一数量和第二数量确定最大数量对应的计算节点;

从最大数量对应的计算节点中基于预设策略确定目标边对应的候选计算节点。

在其中一个实施例中,依次读取目标边集合中的各个边之后,该方法还包括:

检测边包括的两个顶点中的任意一个顶点是否被除目标计算节点之外的其他计算节点锁定;

若被其他计算节点锁定,则持续检测边包括的两个顶点中的任意一个顶点是否被除目标计算节点之外的其他计算节点锁定,直至边包括的两个顶点均未被其他计算节点锁定;

若未被其他计算节点锁定,则在图划分系统维护的共享列表中标记边包括的两个顶点处于锁定状态,并根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点。

在其中一个实施例中,根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点,包括:

若边包括的顶点对应的顶点信息指示边包括的两个顶点同时出现在同一个计算节点中,则从同时出现边包括的两个顶点的计算节点中基于预设策略确定边对应的候选计算节点。

在其中一个实施例中,根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点,包括:

若边包括的顶点对应的顶点信息指示边包括的两个顶点中有且只有一个顶点出现在计算节中,则从出现边包括的两个顶点中的一个顶点的计算节点中基于预设策略确定边对应的候选计算节点。

在其中一个实施例中,根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点,包括:

若边包括的顶点对应的顶点信息指示边包括的两个顶点在各计算节点中均未出现,则从各计算节点中基于预设策略确定边对应的候选计算节点。

在其中一个实施例中,预设策略为选择负载最小的计算节点。

一种图划分装置,应用于图划分系统的目标计算节点中,图划分系统包括多个计算节点,目标计算节点为多个计算节点中的任意一个,该装置包括:

获取模块,用于获取目标边集合,目标边集合是对原始图数据集进行初始划分后得到的多个边集合中的任一个,目标边集合包括多个边;

划分模块,用于依次读取目标边集合中的各个边,对于读取到的每个边,根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点,以触发候选计算节点存储边,并更新候选计算节点的存储状态信息;其中,存储状态信息用于指示计算节点已经存储的各个边。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述实施例中任一项所述的方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一项所述的方法的步骤。

上述图划分方法、装置、计算机设备和存储介质,可以提高划分结果的合理性。其中,该图划分方法首先将原始图数据集进行初始划分,得到多个边集合,然后各个计算节点并发对不同的边集合中的边进行划分,这样相比于单计算节点划分的方式,提高了划分效率。目标计算节点在对边划分时,可以获取到各个计算节点的存储状态信息,存储状态信息用于指示计算节点已经存储的各个边,然后根据各个计算节点的存储状态信息以及边包括的两个顶点确定边对应的候选计算节点,这样在划分读取到的每个边时,是基于计算节点已经存储的各个边来确定读取到的边应该划分到哪个计算节点,也就是说,是基于读取到的边与其他边之间的关系对读取到的边进行划分,因此,提高了划分结果的合理性。

附图说明

图1为一个实施例中图划分系统的示意图;

图2为一个实施例中图划分方法的流程示意图;

图3为一个实施例中原始图数据集未初始划分之前的示意图;

图4为一个实施例中各计算节点获取到边集合的示意图;

图5为一个实施例中各计算节点的存储状态信息共享的示意图;

图6为一个实施例中确定读取到的边对应的候选计算节点的方法的流程示意图;

图7为一个实施例中目标计算节点划分本地缓存队列中存储的边的方法的流程示意图;

图8为一个实施例中目标计算节点获取与目标边共顶点的边的信息的方法的流程示意图;

图9为一个实施例中目标计算节点获取其他计算节点的本地缓存队列中的与目标边共顶点的边的信息的方法的流程示意图;

图10为另一个实施例中图划分方法的流程示意图;

图11中示出了采用三种方法的图划分时间的对比示意图;

图12示出了一种缓存窗口的大小对副本因子的影响的示意图;

图13示出了另一种缓存窗口的大小对副本因子的影响的示意图;

图14示出了一种计算节点的数量对副本因子的影响的示意图;

图15示出了另一种计算节点的数量对副本因子的影响的示意图;

图16为一个实施例中图划分装置的结构框图;

图17为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

现在的主流图计算系统在图计算之前,通常需要将整张图加载到内存。然而,随着时代的发展,图的规模越来越大,占用内存越来越多。而单台计算机设备的内存有限,因此,单台计算机设备不能处理超大规模图数据,而需要将超大规模图数据划分多个小图,然后由不同的计算机设备分别对各个小图进行处理,即分布式图计算。

在分布式的环境中进行图计算的过程中,不同计算机设备(即不同分区)之间需要进行通信,即跨分区通信。由于图中存在超级节点,所谓超级节点即拥有的边数对全图总边数占比显著非。若与超级节点共边的顶点被划分到与超级节点不同的计算机设备(分区)中,就会导致在图计算的过程中消耗大量的通信资源,使得通信代价大幅增加,最终使得整个图计算时间变长。

为了降低图计算过程的通信开销,在进行图划分时,仅以各个计算机设备(分区)中存储的边的数量相等或者大致相等为原则进行划分,会出现划分结果不合理的问题,这样会导致后续的图计算时间变长,效率变低。

进一步的,由于单机内存中无法将全图放入内存,因此,当前的图划分方法一般是流式图划分方法,所谓流式图划分方法,即图数据以边流的形式依次进入计算机设备中进行划分的方法,该方法每次只能读到一条边的信息,因此划分边时所依据的信息量较少,对局部和全局信息并未充分利用,这样,就会导致划分结果不合理。

基于此,本申请实施例提供的图划分方法,提出了多计算节点并行进行划分,提高划分效率,与此同时,多个计算节点的存储状态信息共享,使得各个计算节点对读取到的边进行划分时,能够获取最大化局部和全局信息,从而提高划分结果的合理性,为后续图计算过程减少通信开销,提高处理效率。

下面,将对本申请实施例提供的图划分方法所涉及到的实施环境进行简要说明。

如图1所示,该实施环境为图划分系统,其中,图划分系统包括多个计算节点,图1中示例性地示出了4个计算节点,分别为P1、P2、P3和P4,各个计算节点执行相同的任务。其中,P1、P2、P3和P4之间的连线表示各个计算节点之间可以通过网络进行通信。各个计算节点还可以将自身的存储状态信息共享给其他计算节点。

可选的,本申请实施例中,计算节点可以为终端或者服务器,其中,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。终端例如是台式电脑、笔记本电脑等。

如图2所示,提供了一种图划分方法,该方法可以应用于图1所示的图划分系统包括的多个计算节点,为了便于叙述,下面以该方法应用于图划分系统的目标计算节点中为例进行说明,其中,目标计算节点为图划分系统包括的多个计算节点中的任意一个,该方法包括,包括以下步骤:

步骤201,目标计算节点获取目标边集合。

其中,目标边集合是对原始图数据集进行初始划分后得到的多个边集合中的任一个,目标边集合包括多个边。

本申请实施例中,图划分系统包括的多个计算节点中随机选取一个计算节点作为主计算节点,其中,随机选取的主计算节点可以是本申请实施例中的目标计算节点。

主计算节点主要用于对原始图数据集进行初始划分。主计算节点可以将整个数据集对等的分为k块数据,k表示图划分系统包括的多个计算节点的数量。主计算节点将原始图数据集均等分为k块后,得到k个边集合,通过通信网络将边集合传输给图划分系统包括的各个计算节点(包括主计算节点自身)。

这样,每个计算节点被分配到一个边集合。例如,原始图数据集包括的边的总数为E,那么每个边集合中包括的边的数量可以为条。不能整除时,多余的边随机分配给各个计算节点。

如图3所示,图3为原始图数据集未初始划分之前的示意图,图3中示出的图划分系统包括四个计算节点,分别为P1、P2、P3和P4,其中,P1为主计算节点,由P1对原始图数据集进行初始划分。图4为各计算节点获取到边集合的示意图。

步骤202,目标计算节点依次读取目标边集合中的各个边,对于读取到的每个边,根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点,以触发候选计算节点存储边,并更新候选计算节点的存储状态信息。

其中,目标计算节点依次读取目标边集合中的各个边,即目标边集合包括的边以边流的形式依次进入目标计算节点。

目标计算节点对于读取到的每个边,根据本申请实施例所提供的图划分方法进行处理,当图划分系统包括的各个计算节点将自身分配到的边集合中的边处理完毕,即整个图划分过程完成。

下面,对目标计算节点处理读取到的每个边的过程进行说明:

首先,目标计算节点读取到边之后,可以获取到该边包括的两个顶点,该两个顶点具有顶点标识,顶点标识用于区分各个顶点。

其次,目标计算节点可以获取到图划分系统包括的各个计算节点(包括目标计算节点)的存储状态信息。其中,存储状态信息用于指示计算节点已经存储的各个边,边由顶点构成,因此也可以理解为,存储状态信息为顶点存储状态信息。

可选的,本申请实施例中,目标计算节点可以向其他计算节点共享自身的存储状态信息。相应的,其他计算节点也可以将自身的存储状态信息共享给目标计算节点,目标计算节点基于其他计算节点的共享获取其他计算节点的存储状态信息。

可选的,本申请实施例中,图划分系统维护有共享列表,各个计算节点可以在共享列表中更新数据,还可以从共享列表中读取数据。如图5所示,图5中示出了四个计算节点P1、P2、P3和P4,其中,计算节点P1、P2、P3和P4可以将自身的存储状态信息A(P1)、A(P2)、A(P3)和A(P4)写入共享列表中,从而在共享列表中形成多个计算节点的存储状态信息的并集A(P1)∪A(P2)∪A(P3)∪A(P4)。其中,各个计算节点也可以从共享列表中读取到其他计算节点的存储状态信息。基于此,目标计算节点可以从该共享列表中获取图划分系统包括的各计算节点的存储状态信息。

最后,目标计算节点根据该边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点。

其中,目标计算节点可以根据该边包括的顶点和各计算节点的存储状态信息(包括目标计算节点自身的存储状态信息在内)确定与该边的关联度比较高的计算节点,并将该关联度比较高的计算节点确定为该边对应的候选计算节点。

其中,各计算节点与该边的关联度由各计算节点中存储的与该边共顶点的边的数量表示,数量越大,关联度越高,数量越少,关联度越低。

其中,确定各计算节点与该边的关联度的方法可以是:目标计算节点可以统计各个计算节点中已经存储的与该边共顶点的边的数量,然后,目标计算节点可以根据各个计算节点中已经存储的与该边共顶点的边的数量确定各计算节点与该边的关联度。

可选的,本申请实施例提供的划分算法,在确定边对应的候选计算节点时,其主要依据是当前的各个计算节点的顶点信息,并基于该些顶点信息对各个计算节点进行评估打分,从而选出更合适的分区(即候选计算节点)。其中,划分算法打分时,是需要统计各个计算节点内的已经划分存储的边的顶点信息的,所以各个计算节点内已经划分存储的边越多,对划分算法的增益是越大的。

在实际应用中,该边对应的候选计算节点可能是目标计算节点自身,也可能是除目标计算节点之外的其他计算节点。

若该边对应的候选计算节点是目标计算节点自身,则目标计算节点存储该边。由于存储该边之后,目标计算节点的存储状态信息发生了变化,因此目标计算节点还需要更新自身的存储状态信息。

若该边对应的候选计算节点是除目标计算节点之外的其他计算节点,则目标计算节点可以将该边发送给候选计算节点,候选计算节点接收到该边之后,进行存储,并更新候选计算节点的存储状态信息。

可选的,目标计算节点以及候选计算节点,在图划分系统维护的共享列表中更新各自的存储状态信息。

本申请实施例提供的图划分方法,首先将原始图数据集进行初始划分,得到多个边集合,然后各个计算节点并发对不同的边集合中的边进行划分,这样相比于单计算节点划分的方式,提高了划分效率。目标计算节点在对边划分时,可以获取到各个计算节点的存储状态信息,存储状态信息用于指示计算节点已经存储的各个边,然后根据各个计算节点的存储状态信息以及边包括的两个顶点将与该边的关联度较高的计算节点确定为该边对应的候选计算节点,以供候选计算节点存储该边。这样在划分读取到的每个边时,是基于计算节点已经存储的各个边来确定读取到的边应该划分到哪个计算节点,也就是说,是基于读取到的边与其他边之间的关系对读取到的边进行划分,因此,提高了划分结果的合理性。

在本申请的一个实施例中,如图6所示,目标计算节点从各计算节点中确定读取到的边对应的候选计算节点的过程包括以下内容:

步骤601,目标计算节点根据边包括的顶点和各计算节点的存储状态信息,确定边包括的顶点对应的顶点信息。

其中,顶点信息用于指示边包括的顶点在各计算节点的分布状态。

可选的,边包括的顶点对应的顶点信息可以包括以下内容:边包括的顶点在各计算节点中是否存在以及边包括的顶点在各计算节点中的数量。

例如,图划分系统包括4个计算节点,分别为P1、P2、P3和P4,其中,目标计算节点为该四个计算节点中的任意一个,例如目标计算节点为P2。目标计算节点P2读取到的边为A边,A边包括两个顶点A1和A2。那么A边包括的顶点对应的顶点信息可以为:计算节点P1中已经存储的边中包括顶点A1的边的数量和包括顶点A2的边的数量、计算节点P2中已经存储的边中包括顶点A1的边的数量和包括顶点A2的边的数量、计算节点P3中已经存储的边中包括顶点A1的边的数量和包括顶点A2的边的数量、计算节点P4中已经存储的边中包括顶点A1的边的数量和包括顶点A2的边的数量。

其中,数量可以为0,数量为0表示计算节点中不存在该边的包括的顶点。

步骤602,目标计算节点根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点。

本申请实施例中,目标计算节点根据边包括的顶点对应的顶点信息确定该边对应的候选计算节点的过程以下内容:

S1,若边包括的顶点对应的顶点信息指示边包括的两个顶点同时出现在同一个计算节点中,则目标计算节点从同时出现边包括的两个顶点的计算节点中基于预设策略确定边对应的候选计算节点。

例如,图划分系统包括4个计算节点,分别为P1、P2、P3和P4,其中,目标计算节点为该四个计算节点中的任意一个,例如目标计算节点为P2。目标计算节点P2读取到的边为A边,A边包括两个顶点A1和A2。

在计算节点P1中同时存在A1和A2,在目标计算节点P2中也同时存在A1和A2,在计算节点P3中也同时存在A1和A2,这种情况下,计算节点P1、P2、P3为同时出现边包括的两个顶点的计算节点,则从计算节点P1、P2、P3中基于预设策略确定边对应的候选计算节点。

可选的,预设策略为选择负载最小的计算节点,即从计算节点P1、P2、P3选择负载最小的计算节点作为该边对应的候选计算节点。

各个计算节点的负载是根据各个计算节点中已经存储的边的数量确定的,因此,目标计算节点可以通过各个计算节点的存储状态信息确定各个计算节点的负载。

可选的,预设策略为统计各计算节点中与该边共顶点的边的数量,选择最大数量对应的计算节点作为该边对应的候选计算节点。若最大数量对应的计算节点有多个,则选择其中负载最小的,或者随机选取一个作为该边对应的候选计算节点。

S2,若边包括的顶点对应的顶点信息指示边包括的两个顶点中有且只有一个顶点出现在计算节中,则目标计算节点从出现边包括的两个顶点中的一个顶点的计算节点中基于预设策略确定边对应的候选计算节点。

承接上文举例,目标计算节点为P2,目标计算节点P2读取到的边为A边,A边包括两个顶点A1和A2,顶点A1出现在目标计算节点P2以及计算节点P3和P4中,顶点A2没有出现在任何一个计算节点中,这种情况下,目标计算节点P2以及计算节点P3和P4为出现边包括的两个顶点中的一个顶点的计算节点。则目标计算节点从计算节点P2、P3和P4中基于预设策略确定边对应的候选计算节点。

可选的,预设策略为:选择负载最小的计算节点。

可选的,预设策略为:统计各计算节点中与该边共顶点的边的数量,选择最大数量对应的计算节点作为该边对应的候选计算节点。

S3,若边包括的顶点对应的顶点信息指示边包括的两个顶点在各计算节点中均未出现,则从各计算节点中基于预设策略确定边对应的候选计算节点。

承接上文举例,目标计算节点为P2,目标计算节点P2读取到的边为A边,A边包括两个顶点A1和A2,目标计算节点P2和计算节点P1、P3和P4中均没有存储顶点A1,也均没有存储顶点A2,则目标计算节点P2从P1、P2、P3和P4中基于预设策略确定边对应的候选计算节点。

可选的,预设策略为:选择负载最小的计算节点。

可选的,预设策略为:统计各计算节点中与该边共顶点的边的数量,选择最大数量对应的计算节点作为该边对应的候选计算节点。

需要说明的是,本申请实施例还可以将上述S1、S2、S3公开的方案组合起来对边进行划分。

S4,若边包括的顶点对应的顶点信息指示边包括的两个顶点分别出现在不同的计算节点中,则将边缓存至目标计算节点的本地缓存队列中。根据各计算节点的本地缓存队列中存储的边,确定目标计算节点的本地缓存队列中存储的各个边对应的候选计算节点。

承接上文举例,目标计算节点为P2,目标计算节点P2读取到的边为A边,A边包括两个顶点A1和A2,其中,顶点A1出现在目标计算节点P2和计算节点P3中,顶点A2出现在计算节点P1和计算节点P4中,也即两个顶点分别出现在不同的计算节点中。这种情况下,目标计算节点P2无法确定将A边划分到哪个计算节点中,即无法确定A边对应的候选计算节点。这种情况下,目标计算节点P2可以将A边缓存至目标计算节点的本地缓存队列中。

下面对目标计算节点的本地缓存队列进行说明。

本申请实施例中,目标计算节点可以基于自身的内存容量设定缓存窗口。缓存窗口以缓存队列的形式存储数据。目标计算节点对缓存队列初始化之后,缓存队列就可以用于存储目标计算节点暂时无法确定候选计算节点的边。

下面,对目标计算节点将边缓存至目标计算节点的本地缓存队列中的过程进行说明。

目标计算节点确定本地缓存队列是否已满,若没有存满,则目标计算节点将该边缓存到本地存储队列中。

若已满,则目标计算节点停止处理目标边集合中的边,并从本地缓存队列中读取排列在最前面的边,然后根据各计算节点的本地缓存队列中存储的边,确定排列在最前面的边对应的候选计算节点,在将排列在最前面的边划分之后,将上述无法确定候选计算节点的边存入缓存队列中,然后目标计算节点可以继续处理目标边集合中的边。

当目标边集合中的边划分完成后,目标计算节点可以根据各计算节点的本地缓存队列中存储的边,确定目标计算节点的本地缓存队列中存储的各个边对应的候选计算节点,详细内容参见下文叙述。

本申请实施例通过根据边包括的顶点和各计算节点的存储状态信息,确定边包括的顶点对应的顶点信息,然后基于边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点,也即将边划分到候选计算节点中存储。该种划分方法是基于边包括的顶点在各计算节点的分布状态来对读取到的边进行划分,在分布式的条件下获取各计算节点的存储状态信息,并基于各计算节点的存储状态信息确定边对应的候选计算节点,不仅优化了图划分结果的性能,同时大幅降低图划分的时间。

需要说明的是,各个计算节点均设置有本地的缓存窗口,各个计算节点的本地缓存窗口的大小基于各个计算节点自身的内存设置。由于各个计算节点可以获取其他计算节点的缓存窗口内的缓存队列中存储的边的数据,因此,对整个图划分系统而言,相当于是多个计算节点的缓存窗口之和对应的容量来缓存边,缓存窗口的容量越大,处理缓存窗口内的边时可以获取到的信息也越多,因此便于各计算节点获取到更多的全局信息,从而提高边划分的合理性。而若缓存窗口的容量较小,就会导致缓存窗口中存储的边的数量较少,也即是缓存窗口内的信息量有限,导致边划分性能较差。

可选的,本申请实施例提供的划分算法,在确定边对应的候选计算节点时,不仅依据当前的各个计算节点的顶点信息,还依赖于缓存窗口内缓存的边的顶点信息。具体的,根据各个计算节点已经划分存储的边的顶点信息以及缓存窗口内的边的顶点信息对各个计算节点进行打分,从而选出更合适的候选计算节点。其中,各个计算节点中,缓存窗口内缓存的边越多,其缓存的顶点信息就越多,对划分算法的增益就越大。

基于此,缓存窗口的容量对确定候选计算节点也会产生影响。主要是因为,随着缓存窗口容量的变大,在对缓存窗口中每条边进行划分时,划分算法能够从缓存窗口中拿到更多的其他边的顶点信息,同时基于现有各个计算节点的顶点及边状态,相较于没有缓存窗口或缓存窗口容量较小的方案,基于更大容量的分布式缓存窗口方案能够避免划分算法划分时陷入局部最优的的境况,从而提升划分质量。

下面,如图7所示,对目标计算节点划分本地缓存队列中存储的边的过程进行说明。

步骤701,目标计算节点从本地缓存队列中读取目标边。

本申请实施例中,在目标边集合中的边划分完成后,无论本地缓存队列是否存满,目标计算节点均会划分本地缓存队列中存储的边。

其中,目标边为本地缓存队列中缓存的边中的任意一个。可选的,目标边可以是本地缓存队列中排列在最前面的边。

步骤702,目标计算节点从除目标计算节点之外的其他计算节点的本地缓存队列中获取与目标边共顶点的边的信息。

在一种可选的实现方式中,目标计算节点可以将本地缓存队列中缓存的边共享给其他计算节点,相应的,目标计算节点也可以获取到其他计算节点共享的其他计算节点的本地缓存队列中的边的信息。

其中,目标计算节点可以从其他计算节点的本地缓存队列中获取与目标边共顶点的边的信息。其中与目标边共顶点的边的信息包括与目标边共顶点的边包括的两个顶点。

在一种可选的实现方式中,如图8所示,目标计算节点获取与目标边共顶点的边的信息的过程包括以下步骤:

步骤801,目标计算节点根据目标边包括的两个顶点生成顶点请求,将顶点请求发送给其他计算节点。

其中,顶点请求用于指示其他计算节点将其他计算节点的本地缓存队列中与目标边共顶点的边的信息发送至目标计算节点。

步骤802,目标计算节点接收其他计算节点发送的其他计算节点的本地缓存队列中的与目标边共顶点的边的信息。

本申请实施例中,顶点请求中携带有目标边包括的两个顶点,例如目标边为e(u,v),目标计算节点通过发送顶点请求向其他计算节点索取与顶点u,v相关的信息,其他计算节点在接收到顶点请求之后,可以分别在各自的本地缓存队列中提取与顶点u,v共顶点的边,即与顶点u邻接的边以及与顶点v邻接的边,并将与目标边共顶点的边发送给目标计算节点。这样,目标计算节点就可以接收到其他计算节点发送的其他计算节点的本地缓存队列中的与目标边共顶点的边的信息。

如图9所示,图9中,目标计算节点为P1,目标边为e(u,v),其中,目标计算节点P1分别向计算节点P2、计算节点P3和计算节点P4发送顶点请求,分别用箭头1,2,3来表示,顶点请求用于指示计算节点P2、计算节点P3和计算节点P4分别从各自的本地缓存队列中提取与顶点u或顶点v共顶点的边,计算节点P2、计算节点P3和计算节点P4分别将与顶点u或顶点v共顶点的边发送给目标计算节点P1,其中,1’,2’,3’表示分区计算节点P2、计算节点P3和计算节点P4分别向目标计算节点P1的反馈信息。若计算节点P2、计算节点P3和计算节点P4的本地缓存队列中不存在与顶点u或顶点v共顶点的边,则返回空。

步骤703,目标计算节点根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,从各计算节点中确定目标边对应的候选计算节点。

在一种可选的实现方式中,目标计算节点根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,统计各计算节点存储的边中与目标边的第一顶点共顶点的边的数量,得到第一数量;统计各计算节点存储的边中与目标边的第二顶点共顶点的边的数量,得到第二数量;根据第一数量和第二数量从各计算节点中确定目标边对应的候选计算节点。

其中,目标计算节点统计各计算节点存储的边中与目标边的第一顶点共顶点的边的数量,得到第一数量;统计各计算节点存储的边中与目标边的第二顶点共顶点的边的数量,得到第二数量的过程可以包括:

例如目标边为e(u,v),目标计算节点可以遍历各计算节点的存储状态信息以及各计算节点的本地缓存队列中与目标边共顶点的边的信息,寻找顶点v的邻接节点,一个邻接节点记作1分,得到第一数量。寻找顶点u的邻接节点,一个邻接节点记作1分,得到第二数量。

其中,目标计算节点根据第一数量和第二数量从各计算节点中确定目标边对应的候选计算节点的过程包括:根据第一数量和第二数量确定最大数量对应的计算节点;从最大数量对应的计算节点中基于预设策略确定目标边对应的候选计算节点。

可选的,预设策略为:选择负载最小的计算节点。即当遍历完各个计算节点之后,寻找得分最高的计算节点。如果得分最高的计算节点数量大于1,在得分最高的计算节点中选取负载最低的计算节点作为目标边对应的候选计算节点。如果选取的计算节点的数量仍然大于1,那么随机从该得分最高且负载最低的计算节点中选取一个作为目标边e(u,v)对应的候选计算节点。

在另一种可选的实现方式中,目标计算节点可以根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,确定目标边包括的顶点的顶点信息,其中目标边包括的顶点的顶点信息表示目标边包括的顶点在各计算节点的分布状态。然后,目标计算节点可以根据目标边包括的顶点的顶点信息从各计算节点中确定目标边对应的候选计算节点。

其中,若目标边包括的顶点对应的顶点信息指示目标边包括的两个顶点同时出现在同一个计算节点中,则目标计算节点从同时出现目标边包括的两个顶点的计算节点中基于预设策略确定目标边对应的候选计算节点。

若目标边包括的顶点对应的顶点信息指示目标边包括的两个顶点中有且只有一个顶点出现在计算节中,则目标计算节点从出现目标边包括的两个顶点中的一个顶点的计算节点中基于预设策略确定目标边对应的候选计算节点。

若目标边包括的顶点对应的顶点信息指示目标边包括的两个顶点在各计算节点中均未出现,则从各计算节点中基于预设策略确定目标边对应的候选计算节点。

若目标边包括的顶点对应的顶点信息指示边包括的两个顶点分别出现在不同的计算节点中,则统计各计算节点中,与目标边共顶点的边的数量,选取数量最大的计算节点中的负载最小的计算节点作为目标边对应的候选计算节点。

需要说明的是,虽然确定目标边对应的候选计算节点的过程与上述实施例中S1、S2和S3中的过程类似,但本申请实施例中的技术构思是,在暂时无法确定将边划分至哪个计算节点时,则缓存至本地缓存队列,而随着各个计算节点划分存储的边越来越多,这样各个计算节点可以获取到的顶点的信息就越多,在此基础上,对本地缓存队列中的边进行划分时所依据的全局信息更多,因此更利于划分算法作出更好的划分决策。

本申请实施例中,目标计算节点根据各计算节点的存储状态信息和与目标边共顶点的边的信息可以确定出各计算节点中,已经划分过的以及没有划分过的与目标边共顶点的边,也就是说,获取到了目标边包括的两个顶点的全局分布信息,并基于该全局分布信息从各计算节点中确定目标边对应的候选计算节点,因此对目标边的划分结果更合理。

在实际应用中,由于图划分系统包括的多个计算节点并发划分,因此可能出现两个以上的计算节点在同一时间读取到的边为共顶点的边,多个计算节点分别独立地对共顶点的边进行划分,就会导致各个计算节点忽略其他计算节点当前正在处理的,与自身读取到的边共顶点的边的信息,这样,对边进行划分时,所获取的全局信息减少,就会导致划分结果出现不合理。为了避免多个计算节点在同一时间对共顶点的边进行划分,如图10所示,本申请实施例提供了另一种图划分方法,该图划分方法包括:

步骤1001,目标计算节点获取目标边集合。

其中,目标边集合是对原始图数据集进行初始划分后得到的多个边集合中的任一个,目标边集合包括多个边。

步骤1002,目标计算节点依次读取目标边集合中的各个边,对于读取到的每个边,目标计算节点检测边包括的两个顶点中的任意一个顶点是否被除目标计算节点之外的其他计算节点锁定。

本申请实施例中,多个计算节点在并行进行边划分时,可以将当前正在划分的边包括的两个顶点锁定,并将当前正在划分的边包括的两个顶点的锁定状态共享给图划分系统包括的各个计算节点。这样,目标计算节点在对读取到的边进行划分时,可以通过读取其他计算节点已经锁定的顶点来确定目标计算节点读取到的边包括的两个顶点是否被其他计算节点锁定。

可选的,本申请实施例中,图划分系统维护的共享列表中包含有锁定表格,锁定表格用于供各个计算节点临时存储当前正在进行划分的边包括的两个顶点。可以理解为,计算节点将当前正在划分的边包括的两个顶点写入锁定表格,即表示该两个顶点处于锁定状态。当计算节点对该边划分完成或者将该边存入本地缓存队列之后,计算节点可以从锁定表格中将该边包括的两个顶点移出,即对该边包括的两个顶点解锁。

目标计算节点可以遍历锁定表格上已经写入的顶点,以确定当前读取到的边包括的两个顶点是否在锁定表格上,若在,则表示目标计算节点当前读取到的边包括的两个顶点被除目标计算节点之外的其他计算节点锁定。若不在,则表示目标计算节点当前读取到的边包括的两个顶点未被其他计算节点锁定。

步骤1003,若被其他计算节点锁定,则目标计算节点持续检测边包括的两个顶点中的任意一个顶点是否被除目标计算节点之外的其他计算节点锁定,直至边包括的两个顶点均未被其他计算节点锁定。

例如,锁定表格中已经写入了边e(u,v)包括的两个顶点u和顶点v,若目标计算节点当前读取到的边为e(u,h),由于顶点u被锁定,因此,目标计算节点读取到的边包括的两个顶点被其他计算节点锁定,这种情况下,目标计算节点不能立即对边e(u,h)进行划分,而需要持续检测当前读取到的边e(u,h)包括的两个顶点u和顶点h是否被其他计算节点锁定,直至边e(u,h)包括的两个顶点均未被其他计算节点锁定。

本申请实施例中,若目标计算节点当前读取到的边包括的两个顶点被其他计算节点锁定,则表示目标计算节点暂时不能对边e(u,h)进行划分,而是需要等待顶点u和顶点h均处于未被锁定状态时,才能对边e(u,h)进行划分。

步骤1004,若未被其他计算节点锁定,则目标计算节点在图划分系统维护的共享列表中标记边包括的两个顶点处于锁定状态,并根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点。

例如,锁定表格中已经写入了边e(u,v)包括的两个顶点u和顶点v,若目标计算节点当前读取到的边为e(m,n),顶点m和顶点n并未在锁定表格中,因此目标计算节点当前读取到的边包括的两个顶点中的任一个顶点均未被其他计算节点锁定,这种情况下,目标计算节点可以将顶点m和顶点n写入锁定表格,以标记该两个顶点处于锁定状态。然后,目标计算节点可以根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边e(m,n)对应的候选计算节点。

承接上文举例,当顶点u从锁定状态变为未被锁定状态,这种情况下,目标计算节点可以确定边e(u,h)包括的两个顶点u和顶点h未被其他计算节点锁定,然后目标计算节点将顶点u和顶点h写入锁定表格进行锁定,以在图划分系统维护的共享列表中标记边e(u,h)包括的两个顶点处于锁定状态。然后再对边e(u,h)进行划分。

本申请实施例中,目标计算节点在对读取到的边划分完成或者将该边存入本地缓存队列之后,可以将该边从锁定表格中移出,这样即表示该边包括的两个顶点不再被锁定。

本申请实施例中,通过建立锁机制,目标计算节点对当前读取到的边包括的两个顶点进行上锁,此时,若其他计算节点读取到的边包含该两个顶点中的任意一个顶点,则其他计算节点处于挂起等待,当目标计算节点对当前读取到的边划分完成或者存入本地存储队列时,将当前读取到的边包括的两个顶点释放,其他计算节点发现该两个顶点处于未被锁定的状态时,可以继续处理之前未完成的流程。通过该种方式,可以在对边进行划分时,可以获取到尽可能多的边的信息,从而能够更准确更合理地对边进行划分。

下面通过对比验证本申请提供的图划分方法的优越性,评价图划分方法主要从图划分时间、图划分性能和负载均衡三项指标来进行,下面分别从这三个方面进行对比说明。

如表1所示,表1示出了多个原始图数据集来源及其原始图数据集包含的顶点数量和边数量。

表1

原始图数据集来源 顶点数量 边数量
DBLP 317,080 1,049,866
com-Orkut 3,072,441 117,185,083
com-Livejournal 3,997,962 34,681,189
web-Google 875,713 5,105,039

其中,DBLP为集成数据库系统(英文:DataBase systems and LogicProgramming,缩写:DBLP),com-Orkut是谷歌推出的社交服务网络,com-Livejournal为综合性交友网站,web-Google为谷歌web网。其中顶点表示用户,边表示用户之间的关联关系。

下面从图划分时间来评估本申请实施例提供的图划分方法。

分别采用本申请实施例提供的图划分方法以及两种现有的流图划分方法对表1中示出的四种原始图数据集进行划分,其中,现有的流图划分方法分别为Oblivious和HDRF(英文:High Degree Replicate First,中文:高度复制优先),得到的结果如图11所示。图11中示出了采用三种方法的图划分时间的对比示意图(为简化表述,在图11中用“本方案”表示本申请实施例提供的图划分方法)。根据图11可以看出,采用本申请实施例提供的图划分方法在时间上可以大幅降低。

下面从负载均衡方面来评估本申请实施例提供的图划分方法。

负载均衡指数计算公式可以表示如下:

其中MAX(Pi)表示计算节点Pi存储的边数,E表示总边数,P表示图划分系统包括的计算节点的数量,如表2所示,其示出了Oblivious、HDRF以及本申请实施例提供的图划分方法的负载均衡指数。

表2

DBLP web-google com-livejournal com-orkut
Oblivious ≤1‰ ≤1‰ ≤1‰ ≤1‰
HDRF ≤1‰ ≤1‰ ≤1‰ ≤1‰
本方案 ≤1‰ ≤1‰ ≤1‰ ≤1%

下面从图划分性能方面来评估本申请实施例提供的图划分方法。

图划分性能具体由副本因子大小来表示,副本因子越小代表图划分质量越高,反之越差。图划分性能可以从不同分区数量和不同窗口大小两个维度来衡量。

首先,对比划分性能与窗口大小。

本申请实施例中,各个计算节点可以基于自身的内存容量设定缓存窗口。缓存窗口以缓存队列的形式存储数据。不同缓存窗口的大小对副本因子会产生不同的影响,其中,副本因子的计算表达式为:

如图12所示,其示出了采用本申请实施例提供的图划分方法以及两种现有的流图划分方法对表1中DBLP这一原始图数据集进行划分时,各个计算节点的不同缓存窗口的大小对副本因子的影响。图13示出了采用本申请实施例提供的图划分方法以及两种现有的流图划分方法对表1中com-Livejournal这一原始图数据集进行划分时,各个计算节点的不同缓存窗口的大小对副本因子的影响。

其中,如图12和图13所示,随着窗口大小的增加,副本因子呈现持续降低的趋势。在DBLP这一原始图数据集上,当窗口大小等于总边数15%时,本方案相较于Oblivious方法,能够降低16.7%的副本产生;本方案相较于HDRF方法,能够降低12.5%的副本产生。而在com-Livejournal这一原始图数据集上,本方案相较于Oblivious方法,能够降低约20%的副本产生;本方案相较于HDRF方法,能够降低15.7%的副本产生。降低副本的产生意等价于降低图计算阶段的通信开销。根据图12和图13可以看出,相较于该两种现有的流图划分方法,本方案能明显降低副本因子,从而在图计算阶段降低由于数据同步引入的通信开销,使得图计算迭代速度加快。

其次,对比划分性能与图划分系统包括的计算节点的数量。

如图14所示,其示出了采用本申请实施例提供的图划分方法以及两种现有的流图划分方法对表1中DBLP这一原始图数据集进行划分时,图划分系统包括的计算节点的数量对副本因子的影响。图15示出了采用本申请实施例提供的图划分方法以及两种现有的流图划分方法对表1中com-Livejournal这一原始图数据集进行划分时,图划分系统包括的计算节点的数量对副本因子的影响。

根据图14和图15所示,在分布式的情景下,增加图划分系统包括的计算节点会增加图划分的复杂度,同时会影响图划分算法性能。因此所有的算法的运行结果,即副本因子,均呈上升趋势。在DBLP这一原始图数据集上,随着计算节点的数量增加,Oblivious和HDRF流图划分方法大幅升高副本因子指数,而本方案相较于Oblivious和HDRF方法,大幅降低了副本因子指数,分别降低了19.8%和15.2%。在com-Livejournal这一原始图数据集上,本方案相较于Oblivious和HDRF方法,本方案仍然大幅降低了副本因子指数,分别降低了17%和10.5%。

综上所述,本方案在副本因子和划分时间的两个用于衡量面向流图划分性能的关键指标上,相较于竞争方案大幅提升了性能和降低了时间和通信开销。

应该理解的是,虽然图2-10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-10中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图16所示,提供了一种图划分装置1600,应用于图划分系统的目标计算节点中,图划分系统包括多个计算节点,目标计算节点为多个计算节点中的任意一个,包括:获取模块1601和划分模块1602,其中:

获取模块1601,用于获取目标边集合,目标边集合是对原始图数据集进行初始划分后得到的多个边集合中的任一个,目标边集合包括多个边;

划分模块1602,用于依次读取目标边集合中的各个边,对于读取到的每个边,根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点,以触发候选计算节点存储边,并更新候选计算节点的存储状态信息;其中,存储状态信息用于指示计算节点已经存储的各个边。

在其中一个实施例中,划分模块1602具体用于:

根据边包括的顶点和各计算节点的存储状态信息,确定边包括的顶点对应的顶点信息,顶点信息用于指示边包括的顶点在各计算节点的分布状态;

根据边包括的顶点对应的顶点信息从各计算节点中确定边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:

若边包括的顶点对应的顶点信息指示边包括的两个顶点分别出现在不同的计算节点中,则将边缓存至目标计算节点的本地缓存队列中;

根据各计算节点的本地缓存队列中存储的边,确定目标计算节点的本地缓存队列中存储的各个边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:从本地缓存队列中读取目标边,目标边为本地缓存队列中缓存的边中的任意一个;

从除目标计算节点之外的其他计算节点的本地缓存队列中获取与目标边共顶点的边的信息;

根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,从各计算节点中确定目标边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:根据目标边包括的两个顶点生成顶点请求,将顶点请求发送给其他计算节点,顶点请求用于指示其他计算节点将其他计算节点的本地缓存队列中与目标边共顶点的边的信息发送至目标计算节点;

接收其他计算节点发送的其他计算节点的本地缓存队列中的与目标边共顶点的边的信息。

在其中一个实施例中,划分模块1602具体用于:根据目标边包括的顶点、各计算节点的存储状态信息以及与目标边共顶点的边的信息,统计各计算节点存储的边中与目标边的第一顶点共顶点的边的数量,得到第一数量;统计各计算节点存储的边中与目标边的第二顶点共顶点的边的数量,得到第二数量;

根据第一数量和第二数量从各计算节点中确定目标边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:根据第一数量和第二数量确定最大数量对应的计算节点;

从最大数量对应的计算节点中基于预设策略确定目标边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:检测边包括的两个顶点中的任意一个顶点是否被除目标计算节点之外的其他计算节点锁定;

若被其他计算节点锁定,则持续检测边包括的两个顶点中的任意一个顶点是否被除目标计算节点之外的其他计算节点锁定,直至边包括的两个顶点均未被其他计算节点锁定;

若未被其他计算节点锁定,则在图划分系统维护的共享列表中标记边包括的两个顶点处于锁定状态,并根据边包括的顶点和各计算节点的存储状态信息,从各计算节点中确定边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:若边包括的顶点对应的顶点信息指示边包括的两个顶点同时出现在同一个计算节点中,则从同时出现边包括的两个顶点的计算节点中基于预设策略确定边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:若边包括的顶点对应的顶点信息指示边包括的两个顶点中有且只有一个顶点出现在计算节中,则从出现边包括的两个顶点中的一个顶点的计算节点中基于预设策略确定边对应的候选计算节点。

在其中一个实施例中,划分模块1602具体用于:若边包括的顶点对应的顶点信息指示边包括的两个顶点在各计算节点中均未出现,则从各计算节点中基于预设策略确定边对应的候选计算节点。

在其中一个实施例中,预设策略为选择负载最小的计算节点。

关于图划分装置的具体限定可以参见上文中对于图划分方法的限定,在此不再赘述。上述图划分装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图17所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储边。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图划分方法。

本领域技术人员可以理解,图17中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据关联分析方法、装置、计算机设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!