CN116955714A - 图结构处理方法及图结构处理系统 - Google Patents

图结构处理方法及图结构处理系统 Download PDF

Info

Publication number
CN116955714A
CN116955714A CN202310466827.0A CN202310466827A CN116955714A CN 116955714 A CN116955714 A CN 116955714A CN 202310466827 A CN202310466827 A CN 202310466827A CN 116955714 A CN116955714 A CN 116955714A
Authority
CN
China
Prior art keywords
node
nodes
storage
processing
array
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.)
Pending
Application number
CN202310466827.0A
Other languages
English (en)
Inventor
许杰
欧阳文
陶阳宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310466827.0A priority Critical patent/CN116955714A/zh
Publication of CN116955714A publication Critical patent/CN116955714A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种图结构处理方法及图结构处理系统,属于计算机技术领域。该方法包括:第一处理设备将图结构包含的每个节点对集合分发给第二处理设备,第二处理设备基于分发的节点对集合中的节点对,确定出节点对集合中节点的邻居节点数量,第一处理设备基于每个节点对集合中节点的邻居节点数量,确定图结构中节点的邻居节点数量;确定用于存储图结构中节点的邻居节点的第一存储设备,第一存储设备基于节点的邻居节点数量,分配存储空间;第二处理设备对分发的节点对集合进行处理,得到节点数组,向第一存储设备发送节点数组;第一存储设备将节点数组中的邻居节点存储在对应的存储空间中。本申请能够提升对图结构的处理效率。

Description

图结构处理方法及图结构处理系统
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种图结构处理方法及图结构处理系统。
背景技术
随着计算机技术的发展,图结构的应用越来越广泛,图结构包括多个节点及多个节点之间的连接关系,节点用于表征用户或物品,进而使得图结构能够表征多个用户之间的关系,或者,表征用户与物品之间的关系。图结构能够应用在多种场景下,例如,在推荐场景下,能够利用图结构中各个节点之间的连接关系,为用户推荐物品等。而在此之前,需要从图结构中提取各个节点之间的连接关系。目前从图结构中提取各个节点之间的连接关系的方案,不适用于大规模的图结构,在对大规模的图结构进行处理时的效率低。
发明内容
本申请实施例提供了一种图结构处理方法及图结构处理系统,能够提升对图结构的处理效率。所述技术方案如下:
一方面,提供了一种图结构处理方法,应用于图结构处理系统,所述图结构处理系统包括处理子系统和第一存储子系统,所述处理子系统包括多个处理设备,所述第一存储子系统包括多个存储设备,所述方法包括:
第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备,所述节点对集合包括所述图结构中具有连接关系的节点对,所述第一处理设备为所述多个处理设备中的任一个;
所述第二处理设备基于分发的节点对集合中的节点对,确定出所述节点对集合中节点的邻居节点数量,所述节点的邻居节点数量为所述节点对集合中与所述节点具有连接关系的节点的数量;
所述第一处理设备从所述第二处理设备中,获取所述每个节点对集合中节点的邻居节点数量,基于所述每个节点对集合中节点的邻居节点数量,确定所述图结构中节点的邻居节点数量;从所述多个存储设备中,确定用于存储所述图结构中节点的邻居节点的第一存储设备,向所述第一存储设备发送所述节点的邻居节点数量;
所述第一存储设备基于所述节点的邻居节点数量,分配用于存储所述节点的邻居节点的存储空间;
所述第二处理设备对分发的节点对集合进行处理,得到节点数组,所述节点数组包括节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组;
所述第一存储设备将所述节点数组中的邻居节点,存储在对应的存储空间中。
另一方面,提供了一种图结构处理系统,所述图结构处理系统包括处理子系统和第一存储子系统,所述处理子系统包括多个处理设备,所述第一存储子系统包括多个存储设备;
第一处理设备,用于基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备,所述节点对集合包括所述图结构中具有连接关系的节点对,所述第一处理设备为所述多个处理设备中的任一个;
所述第二处理设备,用于基于分发的节点对集合中的节点对,确定出所述节点对集合中节点的邻居节点数量,所述节点的邻居节点数量为所述节点对集合中与所述节点具有连接关系的节点的数量;
所述第一处理设备,还用于从所述第二处理设备中,获取所述每个节点对集合中节点的邻居节点数量,基于所述每个节点对集合中节点的邻居节点数量,确定所述图结构中节点的邻居节点数量;从所述多个存储设备中,确定用于存储所述图结构中节点的邻居节点的第一存储设备,向所述第一存储设备发送所述节点的邻居节点数量;
所述第一存储设备,用于基于所述节点的邻居节点数量,分配用于存储所述节点的邻居节点的存储空间;
所述第二处理设备,还用于对分发的节点对集合进行处理,得到节点数组,所述节点数组包括节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组;
所述第一存储设备,还用于将所述节点数组中的邻居节点,存储在对应的存储空间中。
在一种可能实现方式中,所述图结构处理系统还包括第二存储子系统,所述第二存储子系统中存储有所述图结构包含的多个节点对集合;
所述第二存储子系统,用于基于所述图结构中节点之间的连接关系,对所述图结构进行分割,得到所述图结构包含的多个节点对集合,所述节点对集合中的节点具有直接或间接连接关系;
所述第一处理设备,用于响应于对所述图结构的关系提取指令,基于所述第二存储子系统中存储的所述多个节点对集合,将所述每个节点对集合分发给所述多个处理设备中的第二处理设备。
在另一种可能实现方式中,所述第二处理设备,用于确定分发的节点对集合包含的节点,对于每个节点,将分发的节点对集合中包含所述节点的节点对数量,确定为所述节点的邻居节点数量。
在另一种可能实现方式中,所述第一处理设备,用于基于所述每个节点对集合中节点的邻居节点数量,将同一节点的邻居节点数量和,确定为所述图结构中所述节点的邻居节点数量。
在另一种可能实现方式中,所述第一处理设备,用于对于所述图结构中的任一节点,对所述节点的标识进行哈希计算,得到哈希值;基于所述哈希值,对所述存储设备的数量进行取模,得到第一数值,将所述多个存储设备中排序序号为所述第一数值的存储设备,确定为用于存储所述节点的邻居节点的第一存储设备。
在另一种可能实现方式中,所述第一存储设备,用于确定所述邻居节点数量与单位数据量的乘积,从所述第一存储设备的存储空间中,分配用于存储所述节点的邻居节点、且容量为所述乘积的存储空间,所述单位数据量指示存储一个节点所需占用的数据量。
在另一种可能实现方式中,所述第二处理设备,用于对所述节点对集合进行分割,得到n个节点对子集合,n为大于1的整数;对第i个节点对子集合进行处理,得到所述第i个节点对子集合对应的节点数组,所述第i个节点对子集合对应的节点数组包括所述第i个节点对子集合中的节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组,i为小于n的正整数;在第i个节点对子集合对应的节点数组被存储成功的情况下,对第i+1个节点对子集合进行处理,得到所述第i+1个节点对子集合对应的节点数组,所述第i+1个节点对子集合对应的节点数组包括所述第i+1个节点对子集合中的节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组。
在另一种可能实现方式中,所述第一处理设备,还用于在任一第二处理设备处于异常状态的情况下,从除处于异常状态的第二处理设备以外的处理设备中,确定第三处理设备,将分发给处于异常状态的第二处理设备的节点对集合分发给所述第三处理设备,以使所述第三处理设备确定出所述节点对集合中节点的邻居节点数量。
在另一种可能实现方式中,所述第二处理设备,还用于在所述节点数组被存储失败的情况下,再次向为用于存储所述节点的邻居节点的第一存储设备发送所述节点数组,以使所述第一存储设备重新将所述节点数组中的邻居节点,存储在对应的存储空间中。
在另一种可能实现方式中,所述第一存储设备,用于基于所述存储空间中已存储的邻居节点,对所述节点数组进行校验,得到校验结果,所述校验结果指示所述节点数组中的邻居节点是否已存储;在所述校验结果指示所述节点数组中的邻居节点未存储的情况下,将所述节点数组中的邻居节点,存储在所述存储空间中。
在另一种可能实现方式中,所述第一存储设备,用于在所述节点数组是历史存储失败的节点数组的情况下,基于所述存储空间中的邻居节点,对所述节点数组进行校验,得到校验结果;或者,在所述节点数组对应的节点对集合的第一重试参数大于1的情况下,基于所述存储空间中已存储的邻居节点,对所述节点数组进行校验,得到校验结果,所述第一重试参数指示所述第一处理设备将所述节点对集合分发给处理设备的次数。
在另一种可能实现方式中,所述第一存储设备,还用于在接收到所述节点数组的情况下,获取所述节点数组的第二重试参数,所述第二重试参数指示所述第一存储设备接收到所述节点数组的次数;在所述第二重试参数大于1的情况下,确定所述节点数组是历史存储失败的节点数组。
在另一种可能实现方式中,所述第一存储设备,还用于在所述节点数组不是历史存储失败的节点数组、且所述节点数组对应的节点对集合的第一重试参数不大于1的情况下,将所述节点数组中的邻居节点,存储在对应的存储空间中。
本申请实施例提供的方案,通过图结构处理系统,能够将图结构包含的多个节点对集合分发给处理设备进行处理,以使多个处理设备在对节点对集合进行处理的过程中,与多个存储设备交互,将图结构中各个节点及对应的邻居节点存储在存储子系统中,通过将图结构分成多个节点对集合并行进行处理,这种处理方式能够适用于大规模的图结构,由于大规模的图结构的数据量大,通过将大规模的图结构分成多个节点对集合,即可快速获取到图结构中的节点及节点的邻居节点,且能够节省从图结构中提取节点及邻居节点的耗时,提升了对大规模的图结构的处理效率,且能够保证处理大规模的图结构的稳定性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种图结构处理系统的示意图;
图2是是本申请实施例提供的一种图结构处理方法的流程图;
图3是本申请实施例提供的一种图结构的示意图;
图4是是本申请实施例提供的另一种图结构处理方法的流程图;
图5是是本申请实施例提供的另一种图结构处理方法的流程图;
图6是是本申请实施例提供的另一种图结构处理方法的流程图;
图7是是本申请实施例提供的另一种图结构处理方法的流程图;
图8是是本申请实施例提供的另一种图结构处理方法的流程图;
图9是是本申请实施例提供的另一种图结构处理方法的流程图;
图10是本申请实施例提供的另一种图结构处理系统的示意图;
图11是本申请实施例提供的一种终端的结构示意图;
图12是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请所使用的术语“第一”、“第二”、“第三”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一处理设备称为第二处理设备,且类似地,可将第二处理设备称为第一处理设备。
本申请所使用的术语“至少一个”、“多个”、“每个”、“任一”,至少一个包括一个、两个或两个以上,多个包括两个或两个以上,而每个是指对应的多个中的每一个,任一是指多个中的任意一个。举例来说,多个节点包括3个节点,而每个是指这3个节点中的每一个节点,任一是指这3个节点中的任意一个,能够是第一个节点,或者,是第二个节点,或者,是第三个节点。
需要说明的是,本申请所涉及的信息(包括但不限于用户信息、物品信息等)、数据(包括但不限于图结构、节点对集合、等),均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的图结构都是在充分授权的情况下获取的。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是能够无限扩展的,并且能够随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。本申请实施例中,采用云计算的方式,由处理子系统中的多个处理设备,对图结构包含的多个节点对集合进行处理。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。本申请实施例提供的第一存储子系统和第二存储子系统均是采用云存储的方式来存储数据。
本申请实施例提供的图结构处理方法,应用于图结构处理系统,图结构处理系统包括处理子系统和第一存储子系统,处理子系统包括多个处理设备,第一存储子系统包括多个存储设备。可选地,处理设备为终端或服务器。可选地,存储设备为终端或服务器。可选地,服务器是独立的物理服务器,或者,是多个物理服务器构成的服务器集群或者分布式系统,或者,是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,终端是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电及车载终端等,但并不局限于此。可选地,处理子系统和第一存储子系统均是分布式存储系统。
在一些实施例中,处理子系统中的多个处理设备分布在多个地点且通过通信网络互连,多个处理设备能够组成区块链系统。第一存储子系统中的多个存储设备分布在多个地点且通过通信网络互连,多个存储设备能够组成区块链系统。
图1是本申请实施例提供的一种图结构处理系统的示意图。参见图1,该图结构处理系统包括处理子系统101和第一存储子系统102,处理子系统101包括多个处理设备,第一存储子系统102包括多个存储设备,多个处理设备之间能够通过有线或无线通信方式进行连接,多个存储设备能够通过有线或无线通信方式进行连接,且多个处理设备与多个存储设备能够通过有线或无线通信方式进行连接。
其中,第一存储子系统102能够为任意的存储系统,例如,第一存储子系统为PS(Parameter Server,参数服务器),PS用于分布式地存储超大规模参数。
每个处理设备用于对图结构包含的节点对集合进行处理,多个处理设备中的第一处理设备用于为处理设备分发图结构的节点对集合,可选地,第一处理设备为多个处理设备中的管理设备,第一处理设备用于管理多个处理设备中除第一处理设备以外的其他处理设备,也即是用于为除第一处理设备以外的其他处理设备分发节点对集合,而除第一处理设备以外的其他处理设备用于对节点对集合进行处理。
多个存储设备用于存储图结构中各个节点的邻居节点。在本申请实施例中,不同节点的邻居节点可能存储在同一存储设备上,也可能存储在不同的存储设备上。
对于多个处理设备中已分发到节点对集合的第二处理设备,能够对节点对集合进行处理,并与存储设备进行交互,将各个节点对集合中节点的邻居节点存储到存储设备中,实现了图结构中各个节点的邻居节点的提取。
在一种可能实现方式中,图结构处理系统包括第二存储子系统103,图结构包含的多个节点对集合存储与第二存储子系统103中。在本申请实施例中,第一处理设备能够基于第二存储子系统103中存储的多个节点对集合,为处理设备分发节点对集合。可选地,第二存储子系统103为分布式存储系统。
可选地,第二存储子系统103包括多个存储设备,图结构包含的多个节点对集合分布在不同的存储设备中。
图2是本申请实施例提供的一种图结构处理方法的流程图,应用于图结构处理系统,图结构处理系统包括处理子系统和第一存储子系统,处理子系统包括多个处理设备,第一存储子系统包括多个存储设备,如图2所示,该方法包括:
201、第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给多个处理设备中的第二处理设备,节点对集合包括图结构中具有连接关系的节点对,第一处理设备为多个处理设备中的任一个。
在本申请实施例中,图结构包括多个节点以及多个节点之间的连接关系,节点用于表征用户或物品,则该图结构用于表示用户之间的关联关系,或者,用于表示用户与物品之间的关联关系,或者,用于表示物品与物品之间的关联关系。在图结构中具有连接关系的两个节点表征的用户或物品之间具有关联关系。例如,对于图结构中具有连接关系的任两个节点,一个节点用于表征用户,另一个节点用于表征物品,则表示用户对该物品感兴趣,或者表示,用户购买过该物品,或者,表示用户收藏过该物品的链接等。再例如,对于图结构中具有连接关系的任两个节点,两个节点用于表征不同的用户,则表示两个用户之间是好友或者两个用户相似等。图结构中具有连接关系的每两个节点即为一个节点对,图结构包含的多个节点对集合能够构成该图结构,多个节点对集合中,不同的节点对集合包含的节点对不同。
在本申请实施例中,第一处理设备是处理子系统中具有任务分发功能的处理设备,能够为处理子系统中的处理设备分发待处理的图结构的节点对集合。对于处理子系统包括的多个处理设备,将分发到的节点对集合的处理设备,称为第二处理设备,也即是,第一处理设备为每个第二处理设备分发一个或多个节点对集合。
在本申请实施例中,对于待处理的图结构包含的多个节点对集合,第一处理设备能够将每个节点对集合分发给一个第二处理设备,不同的节点对集合可能被分发给同一第二处理设备,也可能被分发给不同的第二处理设备,以便后续接收到分发的节点对集合的第二处理设备能够对分发的节点对集合进行处理。
202、第二处理设备基于分发的节点对集合中的节点对,确定出节点对集合中节点的邻居节点数量,节点的邻居节点数量为节点对集合中与节点具有连接关系的节点的数量。
在本申请实施例中,节点对集合中的节点对包括具有连接关系的两个节点,以节点对包括第一节点和第二节点为例,第一节点能够作为第二节点的邻居节点,而第二节点也能够作为第一节点的邻居节点。也即是,对于图结构中的任一节点,与该节点具有直接连接关系的节点均能够作为该节点的邻居节点。例如,图结构如图3所示,图结构中的节点5的邻居节点包括节点1、节点2、节点6、节点7,节点6的邻居节点包括节点2、节点5、节点7。
第二处理设备在接收到分发的节点对集合后,对于任一节点对集合,通过节点对集合中的节点对包含的节点,即可确定出节点对集合中每个节点的邻居节点数量。在多个第二处理设备接收到分发的节点对集合的情况下,每个第二处理设备能够执行上述步骤202,以获取分发到的每个节点对集合中节点的邻居节点数量。
203、第一处理设备从第二处理设备中,获取每个节点对集合中节点的邻居节点数量,基于每个节点对集合中节点的邻居节点数量,确定图结构中节点的邻居节点数量;从多个存储设备中,确定用于存储图结构中节点的邻居节点的第一存储设备,向第一存储设备发送节点的邻居节点数量。
在本申请实施例中,每个第二处理设备获取到分发到的节点对集合中节点的邻居节点数量后,第一处理设备能够从第二处理设备中,获取每个节点对集合中节点的邻居节点数量,由于不同的节点对集合可能包括相同的节点,则第一处理设备可能获取到同一节点在不同节点对集合中的邻居节点数量,则由第一处理设备对多个节点对集合中节点的邻居节点数量进行汇总,得到图结构中每个节点的邻居节点数量。
在本申请实施例中,第一存储子系统能够存储图结构中各个节点的邻居节点,对于第一存储子系统包括的多个存储设备,将用于存储图结构中节点的邻居节点的存储设备,称为第一存储设备。对于图结构包含的节点,不同节点的邻居节点可能存储在同一存储设备上,也可能存储在不同的存储设备上。例如,图结构中的节点1的邻居节点存储在第一存储子系统中的存储设备1中,图结构中的节点2的邻居节点存储在第一存储子系统中的存储设备2中;或者,图结构中的节点1和节点2的邻居节点均存储在第一存储子系统中的存储设备1中。
在本申请实施例中,对于图结构中的任一节点,第一处理设备在确定用于存储该节点的邻居节点的第一存储设备的情况下,向该第一存储设备发送该节点的邻居节点数量,以使第一存储设备分配用于存储该节点的邻居节点的存储空间。对于图结构中的每个节点,第一处理设备能够按照上述方式,向该节点对应的第一存储设备发送该节点的邻居节点数量。其中,节点对应的第一存储设备即为用于存储该节点的邻居节点的存储设备。
204、第一存储设备基于节点的邻居节点数量,分配用于存储节点的邻居节点的存储空间。
在本申请实施例中,第一存储设备基于节点的邻居节点数量,分配用于存储该节点的邻居节点的存储空间,以使分配的存储空间与该节点的邻居节点数量匹配,以保证分配的存储空间能够存储该节点的邻居节点,且也不会造成存储空间的浪费。在图结构中的节点对应有多个第一存储设备的情况下,每个第一存储设备按照上述方式来分配存储空间。
205、第二处理设备对分发的节点对集合进行处理,得到节点数组,节点数组包括节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备发送节点数组。
在本申请实施例中,对于同一个节点对集合包含的节点对,不同的节点对可能包含相同的节点,包含同一节点的不同节点对包含该节点的不同邻居节点,即在节点对集合中任一节点的邻居节点可能存在于不同的节点对中,因此,第二处理设备对节点对集合中的节点对进行处理,得到包含节点和节点的邻居节点的节点数组,以使得到的节点数组能够表示出节点在该节点对集合中的邻居节点,并向用于存储节点的邻居节点的第一存储设备发送节点数组,而无需再将节点对集合中的节点对发送给第一存储设备,以减少发送的数据量和发送数据的频次。
206、第一存储设备将节点数组中的邻居节点,存储在对应的存储空间中。
在本申请实施例中,第一存储设备已经预先分配了用于存储各个节点的存储空间,在接收到任一第二处理设备发送的节点数组的情况下,能够确定出用于存储该节点数组中节点的邻居节点的存储空间,也即是确定出该邻居节点对应的存储空间,将节点数组中的邻居节点,存储在对应的存储空间中,以完成节点的邻居节点的存储。例如,第一存储设备接收到的节点数组包括节点1及节点1的邻居节点,则将节点1的邻居节点存储在之前已分配的存储空间中。
本申请实施例提供的方案,通过图结构处理系统,能够将图结构包含的多个节点对集合分发给处理设备进行处理,以使多个处理设备在对节点对集合进行处理的过程中,与多个存储设备交互,将图结构中各个节点及对应的邻居节点存储在存储子系统中,通过将图结构分成多个节点对集合并行进行处理,这种处理方式能够适用于大规模的图结构,由于大规模的图结构的数据量大,通过将大规模的图结构分成多个节点对集合,即可快速获取到图结构中的节点及节点的邻居节点,且能够节省从图结构中提取节点及邻居节点的耗时,提升了对大规模的图结构的处理效率,且能够保证处理大规模的图结构的稳定性。
在图2所示实施例的基础上,本申请实施例还能够以图结构处理系统包括第二存储子系统为例,通过处理子系统、第一存储子系统和第二存储子系统来实现对图结构的处理过程,具体过程详见下述实施例。
图4是本申请实施例提供的一种图结构处理方法的流程图,应用于图结构处理系统,如图4所示,该方法包括:
401、第二存储子系统基于图结构中节点之间的连接关系,对图结构进行分割,得到图结构包含的多个节点对集合,节点对集合中的节点具有直接或间接连接关系,节点对集合包括图结构中具有连接关系的节点对。
在本申请实施例中,图结构能够表示出各个节点之间的连接关系,按照图结构中各个节点之间的连接关系,对图结构进行分割,即可得到图结构包含的多个节点对集合,以使分割得到的节点对集合中的节点具有直接或间接连接关系,以保证分割得到的节点对集合能够表示出图结构中部分图结构中节点之间的连接关系。
在一种可能实现方式中,该步骤401包括:第二存储子系统基于图结构中节点之间的连接关系,按照第一数量对图结构进行分割,得到图结构包含的多个节点对集合,以使每个节点对集合中的节点具有直接或间接连接关系,且每个节点对集合包含节点对的数量不大于第一数量。
在本申请实施例中,第一数量为任意的数量。通过第一数量限定分割得到的节点对集合包含的节点对的数量,进而限定了节点对集合的数据量,以避免分割得到的节点对集合的数据量过大,以便后续存储节点对集合和对节点对集合进行处理。
在一种可能实现方式中,第二存储子系统还会存储分割得到的节点对集合,则该方法还包括:将图结构包含的多个节点对集合分别存储在第二存储子系统包括的多个存储设备中。
在本申请实施例中,第二存储子系统是由多个存储设备构成的存储系统,该第二存储子系统中的存储设备与第一存储子系统中的存储设备不同。由于将图结构分割成多个节点对集合,通过将多个节点对集合分别存储在第二存储子系统中的多个存储设备上,以实现多个节点对集合的分布存储,以避免图结构的数量过大而导致同一存储设备无法存储的情况。
可选地,对于第二存储子系统存储节点对集合的过程,包括:将图结构包含的每个节点对集合存储在一个存储设备中,以使不同的节点对集合存储在不同的存储设备中。
在本申请实施例中,采用分布式存储的方式,能够将图结构包含的多个节点对集合均匀存储在各个存储设备中,以保证第二存储子系统中的各个存储设备的存储空间足以存储节点对集合,避免由于存储设备的存储空间不足而导致存储失败的情况,以提升存储成功率。
402、第一处理设备响应于对图结构的关系提取指令,基于第二存储子系统中存储的、该图结构包含的多个节点对集合,将每个节点对集合分发给多个处理设备中的第二处理设备,第一处理设备为多个处理设备中的任一个。
在本申请实施例中,第二存储子系统中存储有图结构包含的多个节点对集合。对图结构的关系提取指令,指示从图结构中提取连接关系以得到图结构中节点的邻居节点,则第一处理设备响应于图结构的关系提取指令,能够将第二存储子系统中存储的、该图结构包含的多个节点对集合,分发给处理子系统中的第二处理设备,以便后续第二处理设备对分发的节点对集合进行处理。
在本申请实施例中,第二存储子系统通过将图结构分割成多个节点对集合,并存储在第二存储子系统中,以便第一处理设备响应于关系提取指令,将多个节点对集合分发给第二处理设备进行处理,不仅能够实现多个节点对集合的分布存储,以避免图结构的数量过大而导致同一存储设备无法存储的情况,并且,也使第一处理设备能够以节点对集合为单位来进行分发给第二处理设备处理,既保证了分发效率,也能够保证后续的处理效率。
在一种可能实现方式中,该步骤402包括:第一处理设备响应于对图结构的关系提取指令,确定第二存储子系统中存储的多个节点对集合的第二数量,在第三数量不小于第二数量的情况下,将每个节点对集合分发给一个第二处理设备,以使不同的节点对集合分发给不同的第二处理设备;在第三数量小于第二数量的情况下,将每个节点对集合分发给一个第二处理设备,以使每个第二处理设备分发到至少一个节点对集合,且至少一个第二处理设备分发到多个节点对集合。
其中,第三数量指示处理子系统中能够处理节点对集合的处理设备的数量。可选地,第三数量为处理子系统包含的处理设备的数量,也即是,处理子系统中的每个处理设备均能够处理节点对集合,并且,处理子系统中的第一处理设备不仅能够为其他处理设备分发节点对集合,还能够处理节点对集合,而在第一处理设备也分发到节点对集合的情况下,该第一处理设备也作为第二处理设备。可选地,第三数量为处理子系统中处于空闲状态的处理设备的数量。在本申请实施例中,处理子系统可能包含处于工作状态的处理设备,也可能包含处于空闲状态的处理设备,通过确定处理子系统中处于空闲状态的处理设备的第三数量,以便后续能够将图结构包含的节点对集合分发给处于空闲状态的处理设备,以避免分发给处于工作状态的处理设备而需等待处理的情况,以保证处理效率。
在本申请实施例中,第三数量不小于第二数量,表示处理子系统中的处理设备足够多,则将每个节点对集合分发给一个第二处理设备,以使不同的节点对集合分发给不同的第二处理设备,以保证对节点对集合的处理效率。第三数量小于第二数量,表示处理子系统中的处理设备不够多,则将每个节点对集合分发给一个第二处理设备,以使每个第二处理设备能够分发到至少一个节点对集合,且至少一个第二处理设备分发到多个节点对集合,以便将多个节点对集合分发完成,且尽可能保证分发的均匀性,以保证后续对节点对集合的处理效率。
可选地,在第三数量小于第二数量、第三数量为处理子系统包含的处理设备的数量的情况下,将存储子系统包含的多个处理设备均作为第二处理设备,以使每个第二处理设备能够分发到至少一个节点对集合;在第三数量小于第二数量、第三数量为处理子系统中处于空闲状态的处理设备的数量的情况下,将处理子系统中处于空闲状态的处理设备均作为第二处理设备,以使每个第二处理设备能够分发到至少一个节点对集合。
可选地,在第三数量小于第二数量的情况下,分发节点对集合的过程,包括:在第三数量小于第二数量的情况下,确定第二数量与第三数量的比值,在比值为整数的情况下,将多个节点对集合平均分发给多个第二节点设备,以使每个第二节点设备分发到的节点对集合的数量为该比值;在比值为小数的情况下,对比值向下取整,得到第一数值,向每个第二节点设备分发第一数值的节点对集合,确定分发后剩余的节点对集合的第四数量,将分发后剩余的节点对集合随机分发给第四数量的第二节点设备。
在本申请实施例中,在比值为整数的情况下,表示能够将多个节点对集合平均分发给多个第二节点设备,以使每个第二节点设备分发到的节点对集合的数量相等。而在比值为小数的情况下,先为每个第二节点设备分发第一数值的节点对集合,之后,再将分发后剩余的节点对集合随机分发给第四数量的第二节点设备,以使第四数量的第二节点设备分发到的节点对集合的数量比其他第二节点设备分发到的节点对集合的数量大1,以尽可能保证节点对集合分发的均匀性,以保证后续对节点对集合的处理效率。
在一种可能实现方式中,对图结构的关系提取指令还指示图结构包含的每个节点对集合的集合标识,则该步骤402包括:第一处理设备响应于对图结构的关系提取指令,将每个集合标识分发给第二处理设备。
在本申请实施例中,关系提取指令指示了第二存储子系统中图结构包含的每个节点对集合的集合标识,以使第一处理设备响应于关系提取指令,能够获知待处理的图结构包含的节点对集合,也即是,能够获知后续对哪些节点对集合进行处理。因此,第一处理设备将每个集合标识分发给第二处理设备,以使第二处理设备后续能够基于集合标识从第二存储子系统获取分发的节点对集合。
其中,集合标识能够以任意的形式表示,例如,集合标识以字符串的形式表示。可选地,集合标识以节点对集合在第二存储子系统中的存储地址标识,则集合标识能够指示节点对集合在第二存储子系统中的存储位置。
在一种可能实现方式中,关系提取指令是由用户通过终端触发,则该方法还包括:终端上安装有图结构处理系统提供的应用,终端通过应用能够显示任一图结构的标识,终端响应于对任一图结构的标识的关系提取操作,向第一处理设备发送对该图结构的关系提取指令。
需要说明的是,本申请实施例是以图结构包含的节点对集合存储在第二存储子系统为例进行说明,而在另一实施例中,无需执行上述步骤401-402,而是采取其他方式,第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给多个处理设备中的第二处理设备。
403、第二处理设备确定分发的节点对集合包含的节点,对于每个节点,将分发的节点对集合中包含节点的节点对数量,确定为节点的邻居节点数量,节点的邻居节点数量为节点对集合中与节点具有连接关系的节点的数量。
在本申请实施例中,第二处理设备对于分发到的节点对集合,基于该节点对集合包含的节点对,能够确定出该节点对集合包含的节点,对于每个节点,包含该节点的节点对中的另一个节点即为该节点的邻居节点,则节点对集合中包含该节点的节点对数量,即为节点对集合中与节点具有连接关系的节点的数量,也即是,节点在节点对集合中的邻居节点数量。需要说明的是,本申请实施例仅是以一个第二处理设备为例进行说明,而在另一实施例中,在为多个第二处理设备分发节点对集合的情况下,每个第二处理设备能够按照上述步骤403,确定出分发到的节点对集合包含的节点及该节点的邻居节点数量。而在一个第二处理设备分发到多个节点对集合的情况下,第二处理设备对于分发到的每个节点对集合,按照上述步骤403,分别确定出每个节点对集合包含的节点及该节点的邻居节点数量。
在申请实施例中,先确定节点对集合包含的节点,而后将包含每个节点的节点对数量,作为每个节点的邻居节点数量,这种确定方式能够提升第二处理设备对节点对集合的处理效率。
在一种可能实现方式中,确定节点对集合包含的节点的过程包括:对节点对集合中节点对包含的节点进行去重,得到节点对集合包含的节点。
在本申请实施例中,在任一节点对集合中,不同的节点对可能包含相同的节点,通过对节点对中的节点进行去重,以去掉重复的节点,进而得到节点对集合包含的节点,保证得到的节点的准确性。
需要说明的是,本申请实施例是以统计的方式统计出节点对集合中每个节点的邻居节点数量,而在另一实施例中,无需执行上述步骤403,而是采取其他方式,第二处理设备基于分发的节点对集合中的节点对,确定出节点对集合中节点的邻居节点数量。
404、第一处理设备从第二处理设备中,获取每个节点对集合中节点的邻居节点数量,基于每个节点对集合中节点的邻居节点数量,确定图结构中节点的邻居节点数量;从多个存储设备中,确定用于存储图结构中节点的邻居节点的第一存储设备,向第一存储设备发送节点的邻居节点数量。
在一种可能实现方式中,确定图结构中节点的邻居节点的过程包括:基于每个节点对集合中节点的邻居节点数量,将同一节点的邻居节点数量和,确定为图结构中节点的邻居节点数量。
在本申请实施例中,考虑到包含同一节点的节点对可能分布在不同的节点对集合中,则第二处理设备在对每个节点对集合进行处理的过程中,能够得到该节点对在不同的节点对集合中的邻居节点数量,第一处理设备将同一节点在多个节点对集合中的邻居节点数量之和,确定为该节点在图结构中的邻居节点数量,以实现对多个节点对集合的处理结果进行汇总,以保证得到的节点的邻居节点数量的准确性。
在一种可能实现方式中,确定第一存储设备的过程包括:对于图结构中的任一节点,对节点的标识进行哈希计算,得到哈希值;基于哈希值,对存储设备的数量进行取模,得到第一数值,将多个存储设备中排序序号为第一数值的存储设备,确定为用于存储节点的邻居节点的第一存储设备。
在本申请实施例中,在存储子系统中多个存储设备按序排列,每个存储设备对应有一个排序序号,排序序号指示存储设备在多个存储设备中的顺序。通过采取哈希路由的方式,确定出用于存储节点的邻居节点的第一存储设备,以便后续能够将图结构中各个节点的邻居节点尽可能均匀存储在多个存储设备中,以避免多个存储设备负载不均衡的情况,以保证存储系统的稳定性。
例如,第一存储子系统包括2个存储设备,对节点的标识进行哈希计算,得到的哈希值为7,7对2取模得到的第一数值为1,则后续将该节点的邻居节点存储在第1个存储设备上。
需要说明的是,本申请实施例是以对节点的标识进行哈希计算为例,获取第一数值,而在另一实施例中,无需对节点的标识进行哈希计算,而是基于节点的标识对存储设备的数量进行取模,得到第一数值。
405、第一存储设备接收第一处理设备发送的节点的邻居节点数量,确定邻居节点数量与单位数据量的乘积,从第一存储设备的存储空间中,分配用于存储节点的邻居节点、且容量为乘积的存储空间,单位数据量指示存储一个节点所需占用的数据量。
其中,单位数据量为任意的数据量,例如,单位数据量为8个字节,也即是,存储一个节点所需占用8个字节。
在本申请实施例中,第一存储设备对于任一节点,将该节点的邻居节点数量与单位数据量的乘积作为容量,为该节点的邻居节点分配存储空间,以便后续能够在该存储空间中个存储该节点的邻居节点,以使分配的存储空间的容量与节点的邻居节点数量匹配,既不会出现存储空间不够的情况,也能够保证存储空间不会浪费,以节省存储空间。需要说明的是,本申请实施例仅是以任一第一存储设备为例进行说明,而在另一实施例中,在确定多个第一存储设备的情况下,每个存储设备基于接收到的节点的邻居节点数量,按照上述步骤405来分配存储空间。
例如,图结构中的节点7分配具有4个邻居节点,第一存储设备中以Long(长整型)类型的方式存储邻居节点进行存储,每个Long类型的节点占用8个字节,则节点7的4个邻居节点需占用32个字节,则用于存储节点7的邻居节点存储空间的容量为32个字节。
需要说明的是,本申请实施例是以邻居节点数量与单位数据量的乘积作为容量来分配存储空间,而在另一实施例中,无需执行上述步骤405,而是采取其他方式,第一存储设备基于节点的邻居节点数量,分配用于存储节点的邻居节点的存储空间。
406、第二处理设备对分发的节点对集合进行处理,得到节点数组,节点数组包括节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备发送节点数组。
在一种可能实现方式中,节点对集合的节点对以节点的标识表示,则得到的节点数组包括节点的标识以及节点的邻居节点的标识。
在一种可能实现方式中,对节点对集合进行处理的过程包括:第二处理设备对于节点对集合中的每个节点,从节点对集合中确定该节点的邻居节点,将该节点及该节点的邻居节点构成一个节点数组,以得到该节点对集合对应的多个节点数组。
在本申请实施例中,对一个节点对集合进行处理,得到多个节点数组,得到的节点数组的数量与节点对集合包含的节点数量相等,也即是,得到节点对集合包含的每个节点对应的节点数组。对于节点对集合中的每个节点,遍历节点对集合中该节点的邻居节点,以保证得到的节点数组的准确性。
在一种可能实现方式中,发送节点数组的过程包括:在得到多个节点数组的情况下,对于每个节点数组,向用于存储该节点数组中节点的邻居节点的第一存储设备发送该节点数组。
在本申请实施例中,不同节点的邻居节点可能存储在不同的存储设备中,因此,对于每个节点数组,在确定用于存储该节点数组中的邻居节点的第一存储设备的情况下,向确定的第一存储设备发送该节点数组,以保证数据存储的准确性。
在一种可能实现方式中,向第一存储设备发送节点数组之前,需要确定用于存储节点的邻居节点的第一存储设备,则第二处理设备确定用于存储节点的邻居节点的第一存储设备的方式,包括以下两种方式。
第一种方式:对于任一节点数组,第二处理设备从多个存储设备中,确定用于存储节点数组中节点的邻居节点的第一存储设备。
需要说明的是,第一种方式与上述步骤404中第一处理设备确定第一存储设备的方式同理,在此不再赘述。
第二种方式:第二处理设备基于节点对集合包含的节点,从第一处理设备获取用于存储节点对集合中节点的邻居节点的第一存储设备。
例如,第二处理设备分发到的节点对集合包括3个节点,即节点1、节点2和节点3,而第一处理设备执行上述步骤404后,能够确定用于存储图结构中每个节点的邻居节点的第一存储设备,则基于节点1、节点2和节点3,能够从第一存储设备中获取用于存储、节点2和节点3的邻居节点的第一存储设备。
可选地,获取第一存储设备的过程,包括:第二处理设备向第一处理设备发送设备获取请求,设备获取请求携带第二处理设备分发到的节点对集合包括的节点,第一处理设备响应于该设备获取请求,确定用于存储节点对集合中每个节点的邻居节点的第一存储设备的设备标识,向第二处理设备发送节点对集合中每个节点对应的设备标识,该设备标识指示用于存储对应的节点的邻居节点的第一存储设备。
其中,设备标识能够以任意的形式表示,例如,设备标识以字符串的形式表示。再例如,设备标识以存储设备的地址表示。
407、第一存储设备将节点数组中的邻居节点,存储在对应的存储空间中。
本申请实施例提供的方案,通过图结构处理系统,能够将图结构包含的多个节点对集合分发给处理设备进行处理,以使多个处理设备在对节点对集合进行处理的过程中,与多个存储设备交互,将图结构中各个节点及对应的邻居节点存储在存储子系统中,通过将图结构分成多个节点对集合并行进行处理,这种处理方式能够适用于大规模的图结构,由于大规模的图结构的数据量大,通过将大规模的图结构分成多个节点对集合,即可快速获取到图结构中的节点及节点的邻居节点,且能够节省从图结构中提取节点及邻居节点的耗时,提升了对大规模的图结构的处理效率,且能够保证处理大规模的图结构的稳定性。
在本申请实施例中,第二存储子系统通过将图结构分割成多个节点对集合,并存储在第二存储子系统中,以便第一处理设备响应于关系提取指令,将多个节点对集合分发给第二处理设备进行处理,不仅能够实现多个节点对集合的分布存储,以避免图结构的数量过大而导致同一存储设备无法存储的情况,并且,也使第一处理设备能够以节点对集合为单位来进行分发给第二处理设备处理,既保证了分发效率,也能够保证后续的处理效率。
并且,通过按照图结构中各个节点的邻居节点数量,分配用于存储各个节点的邻居节点的存储空间,以使存储空间与带存储的邻居节点数量匹配,无需在分配的存储空间不足的情况下,重新分配新的存储空间,并将原来已存储的邻居节点拷贝到新的存储空间中,削弱了频繁申请空间和拷贝数据带来的性能影响,也能够提升对图结构的处理效率。
需要说明的是,在上述图2至图3所示的实施例的基础上,第一存储子系统作为对图结构进行处理的内存系统,用于在对图结构进行处理的过程中,存储图结构中各个节点的邻居节点,而在对图结构处理完成的情况下,第一存储子系统中的第一存储设备,向第二存储子系统发送已存储的图结构中节点的邻居节点,由第二存储子系统存储图结构中各个节点的邻居节点。其中,第二存储子系统为磁盘存储系统,能够长时间存储图结构中各个节点的邻居节点。
在本申请实施例中,在对图结构进行处理的过程中,仅由处理子系统和作为内存系统的第一存储子系统进行交互,而在对图结构处理完成的情况下,第一存储子系统与第二存储子系统交互,将图结构中各个节点的邻居节点存储在第二存储子系统中,这样,在对图结构进行处理的过程中,无需将图结构中节点的邻居节点写入磁盘存储系统,能够写入磁盘存储系统的耗时,进而提升对图结构的处理效率。
需要说明的是,上述图3所示的实施例是以第一存储设备成功存储节点数组中的邻居节点为例进行说明,而在另一实施例中,第一存储设备还会存储失败,如果第一存储设备存储失败,则第二处理设备会重新向第一存储设备发送节点数组,也即是,该方法还包括:第二处理设备在节点数组被存储失败的情况下,再次向为用于存储节点的邻居节点的第一存储设备发送节点数组,以使第一存储设备重新将节点数组中的邻居节点,存储在对应的存储空间中。
在本申请实施例中,第一存储设备接收到第二处理设备发送的节点数组后,在存储接收到的节点数组中的邻居节点的过程中,由于网络不稳定或第一存储设备异常等原因,会导致该节点数组中的邻居节点存储失败,而在第一存储设备的情况下,第二处理设备会重新向第一存储设备发送该节点数组,以便第一存储设备重新对节点数组中的邻居节点进行存储,以使第一存储设备尽可能将节点数组成功存储,进而保证对图结构进行处理的成功率。
可选地,重新尝试对节点数组中的邻居节点进行存储的过程,包括:第一存储设备在对节点数组存储失败的情况下,向发送该节点数组的第二处理设备发送存储失败通知,该存储失败通知指示该节点数组存储失败,则第二处理设备响应于该失败重置,再次向为用于存储节点的邻居节点的第一存储设备发送节点数组,以使第一存储设备重新将节点数组中的邻居节点,存储在对应的存储空间中。
在本申请实施例中,第一存储设备在对节点数组中的邻居节点存储失败的情况下,会通知发送该节点数组的第二处理设备,以使第二处理设备重新发送该节点数组,进而由第一存储设备重新尝试存储该节点数组中的邻居节点,以使第一存储设备尽可能将节点数组成功存储,进而保证对图结构进行处理的成功率。
在上述图3所示的实施例的基础上,本申请实施例中,在任一第二处理设备对分发的节点对集合进行处理的过程中,第二处理设备可能会处于异常状态而导致无法继续对节点对集合进行处理,因此,第一处理设备会重新为该节点对集合分配处理设备,以便由其他处理设备对该节点对集合进行处理,也即是,该方法还包括:第一处理设备在任一第二处理设备处于异常状态的情况下,从除处于异常状态的第二处理设备以外的处理设备中,确定第三处理设备,将分发给处于异常状态的第二处理设备的节点对集合分发给第三处理设备,以使第三处理设备确定出节点对集合中节点的邻居节点数量。
其中,处于异常状态的第二处理设备无法继续对分发到的节点对集合进行处理,例如,第二处理设备宕机或死机,则无法继续对分发到的节点对集合进行处理。
在本申请实施例中,在第二处理设备处于异常状态的情况下,此时,第二处理处理设备无法继续对分发到的节点对集合进行处理,因此,第一处理设备会将该节点对集合重新分发给其他的处理设备,以使其他处理设备对该节点对集合进行处理,进而保证后续节点对集合中节点的邻居节点能够成功存储在存储设备上,保证了节点对集合处理的成功率,进而保证图结构处理的成功率,也无需继续等待处于异常状态的第二处理设备对分发到的节点对集合进行处理,也能够节省对节点对集合进行处理的耗时,进而提升对图结构的处理效率。
在上述图3所示的实施例的基础上,第一存储设备还会在存储节点数组中的邻居节点之前,先对节点数组进行校验,也即是,第一存储设备将节点数组中的邻居节点存储在对应的存储空间中的过程,包括:第一存储设备基于存储空间中已存储的邻居节点,对节点数组进行校验,得到校验结果,校验结果指示节点数组中的邻居节点是否已存储;在校验结果指示节点数组中的邻居节点未存储的情况下,将节点数组中的邻居节点,存储在对应的存储空间中。
在本申请实施例中,第一存储设备在存储节点数组中的邻居节点之前,对节点数组进行校验,以确定节点数组中的邻居节点是否已经存储,仅在节点数组中的邻居节点未存储的情况下,将节点数组中的邻居节点,存储在存储空间中,以避免重复存储的情况,保证存储的邻居节点的准确性。
可选地,获取检验结果的过程包括以下两种方式:
第一种方式:第一存储设备在节点数组是历史存储失败的节点数组的情况下,基于存储空间中的邻居节点,对节点数组进行校验,得到校验结果。
在本申请实施例中,第一存储设备对接收到的节点数组进行存储失败的情况下,会记录历史存储失败的节点数组,如果确定接收到的节点数组是历史存储失败的节点数组,表示第一存储设备历史已尝试存储过该节点数组但未存储成功,那么在对应的存储空间中可能存储有该节点数组包含的某个邻居节点,因此,基于该节点数组对应的存储空间中已存储的邻居节点,对节点数组进行校验,得到校验结果,以保证存储空间存储的邻居节点的准确性,同时,仅在接收到节点数组是历史存储失败的节点数组的情况下,才会对节点数组进行校验,也能够节省第一存储设备的校验过程所需的耗时,进而保证对图结构进行处理的效率。
例如,第一存储设备在接收任一节点数组后,会将节点数组中节点的邻居节点存储在对应的存储空间,但可能存在存储失败的情况,即未能将节点数组中节点的邻居节点存储在对应的存储空间中,这样,第一存储设备会记录历史存储失败的节点数组,而且在节点数组存储失败的情况下,发送该节点数组的第二处理设备会向该第一存储设备重新发送该节点数组,以使该第一存储设备重新尝试存储该节点数组,因此,确定接收到的节点数组是否为历史存储失败的节点数组,进而确定是否要对接收到的节点数组进行校验。
可选地,确定节点数组是否是历史存储失败的节点数组的过程包括:第一存储设备在接收到节点数组的情况下,获取节点数组的第二重试参数,第二重试参数指示第一存储设备接收到节点数组的次数;在第二重试参数大于1的情况下,确定节点数组是历史存储失败的节点数组。
在本申请实施例中,节点数组的第二重试参数指示第一存储设备接收到该节点数组的次数,也能够反映出第二处理设备向该第一存储设备发送该节点数组的次数。第二重试参数能够以任意的形式表示,可选地,第二重试参数为Try Counter(数据传输的重试次数)。在第二处理设备第一次向第一存储设备发送该节点数组的情况下,该节点数组的第二重试参数为1,在第二处理设备第二次向该第一存储设备发送该节点数组的情况下,该节点数组的第二重试参数为2,以此类推。节点数组的第二重试参数大于1,表示节点数组为第二处理设备重新发送的节点数组,也能够反映出第一存储设备在第一次接收到该节点数组时未能成功存储,也即是,该节点数组为历史存储失败的节点数组。
在本申请实施例中,通过获取节点数组的第二重试参数,以第二重试参数来表示节点数组是否为历史存储失败的节点数组,以保证确定的历史存储失败的节点数组的准确性,进而保证后续存储的邻居节点的准确性,以提升处理效率。
可选地,第一存储设备获取节点数组的第二重试参数的过程包括:第二处理设备中存储有节点数组的第二重试参数,第二处理设备向该第一存储设备发送节点数组时,还向该第一存储设备发送该节点数组的第二重试参数,以使第一存储设备接收到该节点数组及该节点数组的第二重试参数;或者,第一存储设备在接收到任一节点数组的情况下,为该节点数组设置第二重试参数。
在本申请实施例中,第二重试参数能够为第一处理存储或者由第一存储设备存储,第一存储设备均能够获取到节点数组的第二重试参数,以便能够验证节点数组是否为历史存储失败的节点数组,以保证验证效率和准确性。
第二种方式:第一存储设备在节点数组对应的节点对集合的第一重试参数大于1的情况下,基于存储空间中已存储的邻居节点,对节点数组进行校验,得到校验结果,第一重试参数指示第一处理设备将节点对集合分发给处理设备的次数。
在本申请实施例中,节点数组对应的节点对集合,表示该节点数组是对该节点对集合进行处理得到。第一处理设备将节点对集合分发给任一第二处理设备进行处理后,如果该第二处理设备在处理过程中处于异常状态,导致无法继续对节点对集合进行处理时,第一处理设备会将该节点对集合重新分发给其他处理设备进行处理。节点对集合的第一重试参数指示了第一处理设备将节点对集合分发给处理设备的次数,而将节点对集合分发给任一处理设备后,处理设备可能会在处理过程中,与第一存储设备交互,由存储设备对该节点对集合的节点数组进行存储。在第一重试参数大于1的情况下,表示第一处理设备将节点对集合分发给处理设备的次数大于1,在之前分发到节点对集合的处理设备与第一存储设备交互过程中,第一存储设备可能已存储了节点数组,或者,还未存储该节点数组。因此,在第一重试参数大于1的情况下,基于存储空间中已存储的邻居节点,对节点数组进行校验,以确定节点数组中的邻居节点是否已经存储,以避免重复存储的情况,保证后续第一存储设备存储的邻居节点的准确性。
在一种可能实现方式中,第一存储设备获取节点对集合的第一重试参数的过程,包括:第一处理设备会记录将节点对集合分发给处理设备的第一重试参数,在将节点对集合分发给任一第二处理设备的情况下,向第二处理设备发送该节点对集合的第一重试参数,第二处理设备接收该节点对集合的第一重试参数,在向第一存储设备发送节点数组的情况下,还会向第一存储设备发送该节点数组对应的节点对集合的第一重试参数,则第一存储设备接收到节点数组对应的节点对集合的第一重试参数。
在本申请实施例中,第一处理设备会记录将节点对集合分发给处理设备的次数,也即是记录该节点对集合的第一重试参数。例如,第一处理设备将节点对集合第一次分发给处理设备1,则记录该节点对集合的第一重试参数为1;而在处理设备1异常后,将该节点对集合重新分发给处理设备3,则记录该节点对集合的第一重试参数为2;而在处理设备3异常后,将该节点对集合重新分发给处理设备5,则记录该节点对集合的第一重试参数为3。
在本申请实施例中,第一处理设备会记节点对集合的第一重试参数,并将第一重试参数发送给分发到该节点对集合的第二处理设备,并由该第二处理设备向第一存储设备发送节点数组时,发送该节点数组对应的节点对集合的第一重试参数,以使第一存储设备能确定出节点对集合的分发次数,以便第一存储设备能够基于该第一重试次数来确定是否进行校验,既能够保证第一存储设备存储的邻居节点的准确性,也能够避免浪费过多的校验时间,从而提升处理效率。
在一种可能实现方式中,第一存储设备将节点数组中的邻居节点存储在对应的存储空间中的过程,还包括:第一存储设备在节点数组不是历史存储失败的节点数组、且节点数组对应的节点对集合的第一重试参数不大于1的情况下,将节点数组中的邻居节点,存储在对应的存储空间中。
在本申请实施例中,第一存储设备在接收到任一第二处理设备发送的节点数组的情况下,确定该节点数组不是历史存储失败的节点数组、且节点数组对应的节点对集合的第一重试参数不大于1,则表示第一存储设备未存储过该节点数组,则无需对是否已存储该节点数组中的邻居节点进行校验,直接将节点数组中的邻居节点存储在对应的存储空间中,以节省第一存储设备存储邻居节点所需的耗时,进而保证处理效率。
在上述图3所示的实施例的基础上,本申请实施例中,第二处理设备能够分批次向第一存储设备发送节点数组,以节省数据传输占用的资源和耗时,具体过程详见下述实施例。
图5是本申请实施例提供的一种图结构处理方法的流程图,应用于图结构处理系统,如图5所示,该方法包括:
501、第二处理设备对节点对集合进行分割,得到n个节点对子集合,n为大于1的整数。
在本申请实施例中,考虑到节点对集合包含的节点对较多,第二处理设备将整个节点对集合的节点数组发送给第一存储设备时,会占用较多的网络资源,且网络传输也会较慢,因此,第二处理设备对节点对集合进行分割,以得到n个节点对子集合,以便后续按照n个批次依次将每个节点对子集合发送给第一存储设备。
其中,每个节点对子集合包括至少一个节点对,且不同的节点对子集合包含的节点对不同。可选地,每个节点对子集合包含的节点对数量相等,也即是,每个节点对子集合的Batch Size(批量大小)相等。
502、第二处理设备对第i个节点对子集合进行处理,得到第i个节点对子集合对应的节点数组,第i个节点对子集合对应的节点数组包括第i个节点对子集合中的节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备发送节点数组,i为小于n的正整数。
该步骤502与上述步骤406同理,在此不再赘述。
503、第一存储设备将第i个节点对子集合对应的节点数组中节点的邻居节点,存储在对应的存储空间中。
该步骤503与上述步骤407同理,在此不再赘述。
504、第二处理设备在第i个节点对子集合对应的节点数组被存储成功的情况下,对第i+1个节点对子集合进行处理,得到第i+1个节点对子集合对应的节点数组,第i+1个节点对子集合对应的节点数组包括第i+1个节点对子集合中的节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备发送节点数组。
在本申请实施例中,第二处理设备分批次向第一存储设备发送节点数组的过程中,仅在已发送的节点数组被第一存储设备存储成功的情况下,才会向第一存储设备发送下一个批次的节点数组,避免由于前一个批次的节点数组被存储失败又开始存储下一个批次的节点数组,进而导致节点数组遗漏的情况,以保证第一存储设备存储的邻居节点的准确性。
对于步骤504中,第二处理设备获取第i+1个节点对子集合对应的节点数组,并向用于存储节点的邻居节点的第一存储设备发送节点数组的过程,与上述步骤406同理,在此不再赘述。
在一种可能实现方式中,第二处理设备确定第i个节点对子集合对应的节点数组被存储成功的方式,包括:第一存储设备在将第i个节点对子集合对应的节点数组中的邻居节点存储成功的情况下,向第二处理设备发送存储成功通知,第二处理设备接收存储成功通知,确定第i个节点对子集合对应的节点数组被存储成功。
在本申请实施例中,第一存储设备在第i个节点对子集合对应的节点数组存储成功的情况下,会向第二处理设备返回存储成功通知,以使第二处理设备获知节点数组被存储成功。
可选地,第i个节点对子集合对应有多个节点数组,用于存储多个节点数组中的邻居节点的第一存储设备不同,则第二处理设备在接收到多个节点数组中每个节点数组对应的存储成功通知的情况下,确定第i个节点对子集合对应的节点数组被存储成功。
例如,第i个节点对子集合对应有3个节点数组,用于存储第1个节点数组中的邻居节点的第一存储设备为存储设备1;用于存储第2个节点数组中的邻居节点的第一存储设备为存储设备2;用于存储第3个节点数组中的邻居节点的第一存储设备为存储设备3。则在第二处理设备接收到存储设备1发送的第1个节点数组对应的存储成功通知、存储设备2发送的第2个节点数组对应的存储成功通知、存储设备3发送的第3个节点数组对应的存储成功通知的情况下,确定第i个节点对子集合对应的3个节点数组被存储成功。
505、第一存储设备将第i+1个节点对子集合对应的节点数组中节点的邻居节点,存储在对应的存储空间中。
该步骤505与上述步骤407同理,在此不再赘述。
在本申请实施例中,第二处理设备对节点对集合进行分割,以得到n个节点对子集合,以便后续按照n个批次依次将每个节点对子集合发送给第一存储设备,由第一存储设备分别对每个批次的节点数组中的邻居节点进行存储,并且,第二处理设备分批次向第一存储设备发送节点数组的过程中,仅在已发送的节点数组被第一存储设备存储成功的情况下,才会向第一存储设备发送下一个批次的节点数组,避免由于前一个批次的节点数组被存储失败又开始存储下一个批次的节点数组,进而导致节点数组遗漏的情况,以保证第一存储设备存储的邻居节点的准确性,并且,能够避免传输的节点数组的数据量过大而占用较多的网络资源的情况,也能提升网络传输效率。
基于上述图2至图5所示的实施例,本申请实施例还提供了一种图结构处理方法的流程图,如图6所示,应用于图结构处理系统,图结构处理系统包括处理子系统和第一存储子系统,处理子系统包括多个处理设备,第一存储子系统包括多个存储设备,以处理子系统中的第一处理设备为管理设备(Master),第二处理设备为Executor(执行者)为例,该方法包括:
步骤1、管理设备通过计算引擎,响应于对图结构的关系提取指令,基于第二存储子系统中存储的多个节点对集合,将每个节点对集合分发给一个第二处理设备。
其中,计算引擎用于对图结构进行处理,该计算引擎为任意的引擎,例如,计算引擎为Spark(一个专为大规模数据处理而设计的快速通用的计算引擎)。
步骤2、每个第二处理设备加载分发到的节点对集合,对节点对集合中的节点对进行统计,得到节点对集合中每个节点的邻居节点数量。
例如,节点对集合包括4个节点对,如1与5、2与5、5与7、7与4,则通过对该节点对集合进行统计,得到节点1的邻居节点数量为1,节点2的邻居节点数量为1,节点4的邻居节点数量为1,节点5的邻居节点数量为3,节点7的邻居节点数量为2。
步骤3、在每个第二处理设备获取到分发到的节点对集合中每个节点的邻居节点数量的情况下,由管理设备进行汇总,得到图结构中每个节点的邻居节点数量。
例如,节点1在第一个第二处理设备上的邻居节点数量为1,在第二个第二处理设备上的邻居节点数量为1,则图结构中节点1的邻居节点数量为2。
步骤4、管理设备基于图结构中各个节点的标识,采取哈希路由的方式,对节点的标识进行哈希计算,得到哈希值,基于哈希值对PS包括的存储设备的数量进行取模,得到第一数值,将PS中排序序号为第一数值的存储设备,确定为用于存储节点的邻居节点的第一存储设备,进而确定出用于存储图结构中每个节点的邻居节点的第一存储设备。
步骤5、管理设备分别向每个第一存储设备发送对应的节点的邻居节点数量,以使第一存储设备基于节点的邻居节点数量,分配容量与该邻居节点数量匹配、且用于存储节点的邻居节点的存储空间。
其中,第一存储设备对应的节点,表示第一存储设备用于存储该节点的邻居节点。
步骤6、每个第二处理设备将分发到的节点对集合分成n个批次的节点对子集合,依次获取每个批次的节点对子集合对应的节点数组,并向对应的第一存储设备发送节点数组,由第一存储设备将节点数组中的邻居节点存储到对应的存储空间中。
如图7所示,3个Executor为例,每个Executor将分发到的节点对集合分成2个批次的节点对子集合为例。每个Executor对第一个批次的节点对子集合进行处理,得到第一个节点对子集合对应的节点数组,如,Executor0得到的第一个节点对子集合对应的3个节点数组,一个节点数组为节点1及节点1的邻居节点5,一个节点数组为节点2及节点2的邻居节点5,另一个节点数组为节点5及节点5的邻居节点1和2,向第1个第一存储设备发送包含节点2及节点2的邻居节点5的节点数组,向第2个第一存储设备发送其余两个节点数组,由两个第一存储设备分别将接收到的节点数组中的邻居节点存储在对应的存储空间中。而在3个Executor的第一个批次的节点对子集合对应的节点数组均被成功存储的情况下,按照上述方式,每个Executor对第一个批次的节点对子集合进行处理,得到第一个节点对子集合对应的节点数组,并分别向第一存储设备发送节点数组,由第一存储设备分别将接收到的节点数组中的邻居节点存储在对应的存储空间中。按照上述方式,即可将图结构中各个节点的邻居节点存储在各个第一存储子系统中。
本发明提出的图结构处理方法,能够在有限的资源条件下实现百亿/千亿关系链级别的超大规模图结构中节点的邻居节点计算,相比其他技术方案运行速度更快,资源消耗更低,同时稳定性增强。
另外,在上述图6所示的实施例的基础上,当某个第二处理设备宕机后,会启动一个新的处理设备,宕机的第二处理设备上的节点对集合将被分发到新的处理设备上重新执行;在第二处理设备与第一存储设备交互过程中,当某批次的节点对子集合对应的节点数组由于各种原因未被正确存储到第一存储设备中对应的存储空间中,第二处理设备也会再次向第一存储设备发送该批次的节点对子集合对应的节点数组进行重试。在上述两种情况下,可能会存在节点对集合对应的节点数组被第一存储设备重复存储的情况,导致分配的存储空间不够,进而导致对图结构进行处理的任务失败。例如,第二处理设备对于任一批次的节点对子集合对应的节点数组,同时向第1个第一存储设备和第2个第一存储设备发送了节点数组,而第1个第一存储设备在存储接收到的节点数组的过程中宕机了,但此时第2个第一存储设备已经成功存储接收到的节点数组,但第二处理设备确定该批次的节点对子集合对一个的节点数组存储失败,会重新同时向第1个第一存储设备和第2个第一存储设备发送了节点数组,这样,就会导致第2个第一存储设备重复写入相同邻居节点进而引起越界错误。因此,每个第一存储设备接收到节点数组后,会校验接收到的节点数组中的邻居节点是否已经存储,如果接收到的节点数组中的邻居节点未被存储,则将接收到的节点数组中的邻居节点存储在对应的存储空间中;如果接收到的节点数组中的邻居节点已被存储,则不再存储该节点数组中的邻居节点。
对于校验接收到的节点数组中的邻居节点是否已经存储的过程,如图8所示,对于同一节点对集合,无论将节点对集合重新分发给新的处理设备进行处理,还是对节点对集合进行分批次处理的过程中,重复向第一存储设备发送某个批次的节点对子集合对应的节点数组,节点对集合中节点的邻居节点不会重复,因此,对于接收到的每个节点数组,只需校验节点数组中的第一个邻居节点是否已存储即可,在图8中,第一存储设备接收到的节点数组中节点3有两个邻居节点2和7需要存储,检验时确定邻居节点2已经存储,因此确定该节点数组中的邻居节点已都存储,则无需再花时间和精力对节点数组中的每个邻居节点进行校验,进而节省了存储耗时,进而提升了对图结构的处理效率。
另外,考虑到如果每批次节点数组存储前都要进行校验,则会降低对图结构的处理效率,因此,为了进一步节省校验耗时,本申请实施例还提出了一种校验策略以确定需要进行校验的节点数组,在不影响整体性能的情况下保证对图结构的处理过程的稳定性。如图9所示,管理设备中的计算引擎为每个节点对集合设置一个第一重试参数(Task AttemptNum),以表示将节点对集合分发给处理设备的次数,进而反映出节点对集合是否为重试任务,如果Task Attempt Num大于1,表明将节点对集合历史分发给多个处理设备,反映出节点对集合是重试任务,则该节点对集合对应的每个节点数组存储至第一存储设备时,由该第一存储设备对每个节点数组进行校验。第二处理设备分批次向第一存储设备发送节点数组的过程中,会为每个批次的节点对子集合设置一个第二重试参数(Try Counter),以表示向第一存储设备发送该批次的节点对子集合对应的节点数组的次数,如果Try Counter大于1,表明批次的节点对子集合对应的节点数组是重新尝试存储的,则该节点对集合对应的每个节点数组存储至第一存储设备时,由该第一存储设备对每个节点数组进行校验。对于第一存储设备接收到的节点数组,仅在节点数组对应的Task Attempt Num和Try Counter均为1的情况下,才无需对节点数组进行校验,直接将节点数组中的邻居节点存储在对应的存储空间中。
在本申请实施例中,通过采用Retry(重试)手段,宕机的第二处理设备上的节点对集合将被分发到新的处理设备上重新执行,当某批次的节点对子集合对应的节点数组由于各种原因未被正确存储到第一存储设备中对应的存储空间中,第二处理设备也会再次向第一存储设备发送该批次的节点对子集合对应的节点数组进行重试,这样,保证了计算过程中的正确性和稳定性。
在上述图2至图9所示的实施例的基础上,本申请实施例提供的图结构处理方法能够应用于多种场景。以应用于推荐场景为例,图结构包括用于表征用户的节点和用于表征物品的节点,利用本申请实施例提取到的各个节点的邻居节点,对于图结构中任一用户节点,能够确定出用户节点的邻居节点,将用户节点的特征与用户节点的邻居节点的特征进行融合,得到该用户节点的融合特征,对于图结构中任一物品节点,能够确定出物品节点的邻居节点,将物品节点的特征与物品节点的邻居节点的特征进行融合,得到物品节点的融合特征,基于用户节点的融合特征与物品节点的融合特征之间的相似度,能够确定出用户对该物品的感兴趣程度,进而向用户推荐感兴趣的物品。
图10是本申请实施例提供的另一种图结构处理系统的示意图,如图10所示,图结构处理系统包括处理子系统1001和第一存储子系统1002,处理子系统1001包括多个处理设备,第一存储子系统1002包括多个存储设备;
第一处理设备1011,用于基于图结构包含的多个节点对集合,将每个节点对集合分发给多个处理设备中的第二处理设备1012,节点对集合包括图结构中具有连接关系的节点对,第一处理设备1011为多个处理设备中的任一个;
第二处理设备1012,用于基于分发的节点对集合中的节点对,确定出节点对集合中节点的邻居节点数量,节点的邻居节点数量为节点对集合中与节点具有连接关系的节点的数量;
第一处理设备1011,还用于从第二处理设备1012中,获取每个节点对集合中节点的邻居节点数量,基于每个节点对集合中节点的邻居节点数量,确定图结构中节点的邻居节点数量;从多个存储设备中,确定用于存储图结构中节点的邻居节点的第一存储设备1021,向第一存储设备1021发送节点的邻居节点数量;
第一存储设备1021,用于基于节点的邻居节点数量,分配用于存储节点的邻居节点的存储空间;
第二处理设备1012,还用于对分发的节点对集合进行处理,得到节点数组,节点数组包括节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备1021发送节点数组;
第一存储设备1021,还用于将节点数组中的邻居节点,存储在对应的存储空间中。
在一种可能实现方式中,图结构处理系统还包括第二存储子系统,第二存储子系统中存储有图结构包含的多个节点对集合;
第二存储子系统,用于基于图结构中节点之间的连接关系,对图结构进行分割,得到图结构包含的多个节点对集合,节点对集合中的节点具有直接或间接连接关系;
第一处理设备1011,用于响应于对图结构的关系提取指令,基于第二存储子系统中存储的多个节点对集合,将每个节点对集合分发给多个处理设备中的第二处理设备1012。
在另一种可能实现方式中,第二处理设备1012,用于确定分发的节点对集合包含的节点,对于每个节点,将分发的节点对集合中包含节点的节点对数量,确定为节点的邻居节点数量。
在另一种可能实现方式中,第一处理设备1011,用于基于每个节点对集合中节点的邻居节点数量,将同一节点的邻居节点数量和,确定为图结构中节点的邻居节点数量。
在另一种可能实现方式中,第一处理设备1011,用于对于图结构中的任一节点,对节点的标识进行哈希计算,得到哈希值;基于哈希值,对存储设备的数量进行取模,得到第一数值,将多个存储设备中排序序号为第一数值的存储设备,确定为用于存储节点的邻居节点的第一存储设备1021。
在另一种可能实现方式中,第一存储设备1021,用于确定邻居节点数量与单位数据量的乘积,从第一存储设备1021的存储空间中,分配用于存储节点的邻居节点、且容量为乘积的存储空间,单位数据量指示存储一个节点所需占用的数据量。
在另一种可能实现方式中,第二处理设备1012,用于对节点对集合进行分割,得到n个节点对子集合,n为大于1的整数;对第i个节点对子集合进行处理,得到第i个节点对子集合对应的节点数组,第i个节点对子集合对应的节点数组包括第i个节点对子集合中的节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备1021发送节点数组,i为小于n的正整数;在第i个节点对子集合对应的节点数组被存储成功的情况下,对第i+1个节点对子集合进行处理,得到第i+1个节点对子集合对应的节点数组,第i+1个节点对子集合对应的节点数组包括第i+1个节点对子集合中的节点及节点的邻居节点;向用于存储节点的邻居节点的第一存储设备1021发送节点数组。
在另一种可能实现方式中,第一处理设备1011,还用于在任一第二处理设备1012处于异常状态的情况下,从除处于异常状态的第二处理设备1012以外的处理设备中,确定第三处理设备,将分发给处于异常状态的第二处理设备1012的节点对集合分发给第三处理设备,以使第三处理设备确定出节点对集合中节点的邻居节点数量。
在另一种可能实现方式中,第二处理设备1012,还用于在节点数组被存储失败的情况下,再次向为用于存储节点的邻居节点的第一存储设备1021发送节点数组,以使第一存储设备1021重新将节点数组中的邻居节点,存储在对应的存储空间中。
在另一种可能实现方式中,第一存储设备1021,用于基于存储空间中已存储的邻居节点,对节点数组进行校验,得到校验结果,校验结果指示节点数组中的邻居节点是否已存储;在校验结果指示节点数组中的邻居节点未存储的情况下,将节点数组中的邻居节点,存储在存储空间中。
在另一种可能实现方式中,第一存储设备1021,用于在节点数组是历史存储失败的节点数组的情况下,基于存储空间中的邻居节点,对节点数组进行校验,得到校验结果;或者,在节点数组对应的节点对集合的第一重试参数大于1的情况下,基于存储空间中已存储的邻居节点,对节点数组进行校验,得到校验结果,第一重试参数指示第一处理设备1011将节点对集合分发给处理设备的次数。
在另一种可能实现方式中,第一存储设备1021,还用于在接收到节点数组的情况下,获取节点数组的第二重试参数,第二重试参数指示第一存储设备1021接收到节点数组的次数;在第二重试参数大于1的情况下,确定节点数组是历史存储失败的节点数组。
在另一种可能实现方式中,第一存储设备1021,还用于在节点数组不是历史存储失败的节点数组、且节点数组对应的节点对集合的第一重试参数不大于1的情况下,将节点数组中的邻居节点,存储在对应的存储空间中。
在上述实施例中,处理设备和存储设备均为计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现上述实施例的图结构处理方法中各自所执行的操作。
可选地,计算机设备提供为终端。图11示出了本申请一个示例性实施例提供的终端1100的结构框图。终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个计算机程序,该至少一个计算机程序用于被处理器1101所执行以实现本申请中方法实施例提供的图结构处理方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、显示屏1105、摄像头组件1106、音频电路1107和电源1108中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置在终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在另一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
电源1108用于为终端1100中的各个组件进行供电。电源1108可以是交流电、直流电、一次性电池或可充电电池。当电源1108包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
可选地,计算机设备提供为服务器。图12是本申请实施例提供的一种服务器的结构示意图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)1201和一个或一个以上的存储器1202,其中,存储器1202中存储有至少一条计算机程序,至少一条计算机程序由处理器1201加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种图结构处理方法,其特征在于,应用于图结构处理系统,所述图结构处理系统包括处理子系统和第一存储子系统,所述处理子系统包括多个处理设备,所述第一存储子系统包括多个存储设备,所述方法包括:
第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备,所述节点对集合包括所述图结构中具有连接关系的节点对,所述第一处理设备为所述多个处理设备中的任一个;
所述第二处理设备基于分发的节点对集合中的节点对,确定出所述节点对集合中节点的邻居节点数量,所述节点的邻居节点数量为所述节点对集合中与所述节点具有连接关系的节点的数量;
所述第一处理设备从所述第二处理设备中,获取所述每个节点对集合中节点的邻居节点数量,基于所述每个节点对集合中节点的邻居节点数量,确定所述图结构中节点的邻居节点数量;从所述多个存储设备中,确定用于存储所述图结构中节点的邻居节点的第一存储设备,向所述第一存储设备发送所述节点的邻居节点数量;
所述第一存储设备基于所述节点的邻居节点数量,分配用于存储所述节点的邻居节点的存储空间;
所述第二处理设备对分发的节点对集合进行处理,得到节点数组,所述节点数组包括节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组;
所述第一存储设备将所述节点数组中的邻居节点,存储在对应的存储空间中。
2.根据权利要求1所述的方法,其特征在于,所述图结构处理系统还包括第二存储子系统,所述第二存储子系统中存储有所述图结构包含的多个节点对集合;所述第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备之前,所述方法还包括:
所述第二存储子系统基于所述图结构中节点之间的连接关系,对所述图结构进行分割,得到所述图结构包含的多个节点对集合,所述节点对集合中的节点具有直接或间接连接关系;
所述第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备,包括:
所述第一处理设备响应于对所述图结构的关系提取指令,基于所述第二存储子系统中存储的所述多个节点对集合,将所述每个节点对集合分发给所述多个处理设备中的第二处理设备。
3.根据权利要求1所述的方法,其特征在于,所述第二处理设备基于分发的节点对集合中的节点对,确定出所述节点对集合中节点的邻居节点数量,包括:
所述第二处理设备确定分发的节点对集合包含的节点,对于每个节点,将分发的节点对集合中包含所述节点的节点对数量,确定为所述节点的邻居节点数量。
4.根据权利要求1所述的方法,其特征在于,所述基于所述每个节点对集合中节点的邻居节点数量,确定所述图结构中节点的邻居节点数量,包括:
基于所述每个节点对集合中节点的邻居节点数量,将同一节点的邻居节点数量和,确定为所述图结构中所述节点的邻居节点数量。
5.根据权利要求1所述的方法,其特征在于,所述从所述多个存储设备中,确定用于存储所述图结构中节点的邻居节点的第一存储设备,包括:
对于所述图结构中的任一节点,对所述节点的标识进行哈希计算,得到哈希值;基于所述哈希值,对所述存储设备的数量进行取模,得到第一数值,将所述多个存储设备中排序序号为所述第一数值的存储设备,确定为用于存储所述节点的邻居节点的第一存储设备。
6.根据权利要求1所述的方法,其特征在于,所述第一存储设备基于所述节点的邻居节点数量,分配用于存储所述节点的邻居节点的存储空间,包括:
所述第一存储设备确定所述邻居节点数量与单位数据量的乘积,从所述第一存储设备的存储空间中,分配用于存储所述节点的邻居节点、且容量为所述乘积的存储空间,所述单位数据量指示存储一个节点所需占用的数据量。
7.根据权利要求1所述的方法,其特征在于,所述第二处理设备对分发的节点对集合进行处理,得到节点数组,所述节点数组包括节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组,包括:
所述第二处理设备对所述节点对集合进行分割,得到n个节点对子集合,n为大于1的整数;
所述第二处理设备对第i个节点对子集合进行处理,得到所述第i个节点对子集合对应的节点数组,所述第i个节点对子集合对应的节点数组包括所述第i个节点对子集合中的节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组,i为小于n的正整数;
所述第二处理设备在第i个节点对子集合对应的节点数组被存储成功的情况下,对第i+1个节点对子集合进行处理,得到所述第i+1个节点对子集合对应的节点数组,所述第i+1个节点对子集合对应的节点数组包括所述第i+1个节点对子集合中的节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一处理设备基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备之后,所述方法还包括:
所述第一处理设备在任一第二处理设备处于异常状态的情况下,从除处于异常状态的第二处理设备以外的处理设备中,确定第三处理设备,将分发给处于异常状态的第二处理设备的节点对集合分发给所述第三处理设备,以使所述第三处理设备确定出所述节点对集合中节点的邻居节点数量。
9.根据权利要求1-7任一项所述的方法,其特征在于,所述向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组之后,所述方法还包括:
所述第二处理设备在所述节点数组被存储失败的情况下,再次向为用于存储所述节点的邻居节点的第一存储设备发送所述节点数组,以使所述第一存储设备重新将所述节点数组中的邻居节点,存储在对应的存储空间中。
10.根据权利要求1-7任一项所述的方法,其特征在于,所述第一存储设备将所述节点数组中的邻居节点,存储在对应的存储空间中,包括:
所述第一存储设备基于所述存储空间中已存储的邻居节点,对所述节点数组进行校验,得到校验结果,所述校验结果指示所述节点数组中的邻居节点是否已存储;在所述校验结果指示所述节点数组中的邻居节点未存储的情况下,将所述节点数组中的邻居节点,存储在所述存储空间中。
11.根据权利要求10所述的方法,其特征在于,所述第一存储设备基于所述存储空间中已存储的邻居节点,对所述节点数组进行校验,得到校验结果,包括:
所述第一存储设备在所述节点数组是历史存储失败的节点数组的情况下,基于所述存储空间中的邻居节点,对所述节点数组进行校验,得到校验结果;或者,
所述第一存储设备在所述节点数组对应的节点对集合的第一重试参数大于1的情况下,基于所述存储空间中已存储的邻居节点,对所述节点数组进行校验,得到校验结果,所述第一重试参数指示所述第一处理设备将所述节点对集合分发给处理设备的次数。
12.根据权利要求11所述的方法,其特征在于,所述第一存储设备在所述节点数组是历史存储失败的节点数组的情况下,基于所述存储空间中的邻居节点,对所述节点数组进行校验,得到校验结果之前,所述方法还包括:
所述第一存储设备在接收到所述节点数组的情况下,获取所述节点数组的第二重试参数,所述第二重试参数指示所述第一存储设备接收到所述节点数组的次数;在所述第二重试参数大于1的情况下,确定所述节点数组是历史存储失败的节点数组。
13.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述第一存储设备在所述节点数组不是历史存储失败的节点数组、且所述节点数组对应的节点对集合的第一重试参数不大于1的情况下,将所述节点数组中的邻居节点,存储在对应的存储空间中。
14.一种图结构处理系统,其特征在于,所述图结构处理系统包括处理子系统和第一存储子系统,所述处理子系统包括多个处理设备,所述第一存储子系统包括多个存储设备;
第一处理设备,用于基于图结构包含的多个节点对集合,将每个节点对集合分发给所述多个处理设备中的第二处理设备,所述节点对集合包括所述图结构中具有连接关系的节点对,所述第一处理设备为所述多个处理设备中的任一个;
所述第二处理设备,用于基于分发的节点对集合中的节点对,确定出所述节点对集合中节点的邻居节点数量,所述节点的邻居节点数量为所述节点对集合中与所述节点具有连接关系的节点的数量;
所述第一处理设备,还用于从所述第二处理设备中,获取所述每个节点对集合中节点的邻居节点数量,基于所述每个节点对集合中节点的邻居节点数量,确定所述图结构中节点的邻居节点数量;从所述多个存储设备中,确定用于存储所述图结构中节点的邻居节点的第一存储设备,向所述第一存储设备发送所述节点的邻居节点数量;
所述第一存储设备,用于基于所述节点的邻居节点数量,分配用于存储所述节点的邻居节点的存储空间;
所述第二处理设备,还用于对分发的节点对集合进行处理,得到节点数组,所述节点数组包括节点及所述节点的邻居节点;向用于存储所述节点的邻居节点的第一存储设备发送所述节点数组;
所述第一存储设备,还用于将所述节点数组中的邻居节点,存储在对应的存储空间中。
CN202310466827.0A 2023-04-24 2023-04-24 图结构处理方法及图结构处理系统 Pending CN116955714A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310466827.0A CN116955714A (zh) 2023-04-24 2023-04-24 图结构处理方法及图结构处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310466827.0A CN116955714A (zh) 2023-04-24 2023-04-24 图结构处理方法及图结构处理系统

Publications (1)

Publication Number Publication Date
CN116955714A true CN116955714A (zh) 2023-10-27

Family

ID=88445048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310466827.0A Pending CN116955714A (zh) 2023-04-24 2023-04-24 图结构处理方法及图结构处理系统

Country Status (1)

Country Link
CN (1) CN116955714A (zh)

Similar Documents

Publication Publication Date Title
KR101871383B1 (ko) 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템
CN104618217A (zh) 分享资源的方法、终端、服务器及系统
CN106021506A (zh) 集群系统的文件存储方法及装置
CN111338745B (zh) 一种虚拟机的部署方法、装置及智能设备
CN109889325B (zh) 校验方法、装置、电子设备及介质
CN105224421A (zh) 一种数据备份方法、装置及电子设备
CN107590144A (zh) 一种文件存储方法和终端
CN113553178A (zh) 任务处理方法、装置和电子设备
WO2021164560A1 (zh) 一种多核芯片及其调度方法
CN112363815B (zh) Redis集群处理方法、装置、电子设备及计算机可读存储介质
CN116842307B (zh) 数据处理方法、装置、设备、芯片及存储介质
CN107644020B (zh) 数据存储和调用的方法及装置
CN117407159A (zh) 内存空间的管理方法及装置、设备、存储介质
CN116955714A (zh) 图结构处理方法及图结构处理系统
WO2022143505A1 (zh) 群组类型识别方法、装置、计算机设备及介质
CN113468182B (zh) 一种数据存储方法及系统
CN113391882B (zh) 虚拟机内存管理方法、装置、存储介质及电子设备
CN115756868A (zh) 内存分配方法、装置、设备、存储介质及计算机程序产品
CN111698337B (zh) 建立通信连接的方法、装置及设备
CN114884990A (zh) 一种基于虚拟屏的投屏方法和设备
CN113890753A (zh) 数字身份管理方法、装置、系统、计算机设备和存储介质
CN116820354B (zh) 数据存储方法、数据存储装置和数据存储系统
CN116028433B (zh) 数据迁移方法和电子设备
WO2024109388A1 (zh) 特征同步方法、装置、计算机设备、存储介质和程序产品
CN113703676B (zh) 一种双活卷的调用方法、装置、设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40099938

Country of ref document: HK