CN115079935A - 用于存储和查询数据的方法、电子设备和计算机程序产品 - Google Patents
用于存储和查询数据的方法、电子设备和计算机程序产品 Download PDFInfo
- Publication number
- CN115079935A CN115079935A CN202110275311.9A CN202110275311A CN115079935A CN 115079935 A CN115079935 A CN 115079935A CN 202110275311 A CN202110275311 A CN 202110275311A CN 115079935 A CN115079935 A CN 115079935A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- nodes
- edge
- edge node
- 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
Links
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种用于存储数据的方法,包括:将数据存储在第一节点,第一节点选自包括第一边缘节点及其子节点的第一节点集合;从包括第二边缘节点及其子节点的第二节点集合,选择用于存储数据的第二节点,第一边缘节点是第二边缘节点的子节点;以及将数据存储在所述第二节点。本公开还提供了一种用于查询数据的方法。本公开能够减少在分布式存储***中查询数据的时间。
Description
技术领域
本公开的实施例涉及计算机领域,并且更具体地,涉及用于存储数据的方法、用于查询数据的方法、电子设备、非瞬态计算机存储介质和计算机程序产品。
背景技术
当前,越来越多的云、边缘节点和大量客户端以节点形式参与到5G网络和边缘计算。它们被连接在一起形成了分布式存储***,用于向用户提供高吞吐量和高可用性的数据。
令人遗憾的是,现有的基于边缘计算的分布式存储***中所有节点是按照去中心化的方式来组织的。因此,随着其中的参与节点越来越多,关于存储数据的查找机制(例如分布式哈希表)由于需要遍历更长的搜索路径或经过更多跳才能找到与它们的元数据,导致分布式存储***的性能下降。另外,现有的分布式存储***也没有考虑节点异构性,而是平等地处理数据,未能充分利用高性能设备的计算资源,这也导致了***整体性能受限。
发明内容
本公开的实施例提供一种用于存储和查询数据的方案。
根据本公开的第一方面,提供了一种用于存储数据的方法,包括:将所述数据存储在第一节点,所述第一节点选自包括第一边缘节点及其子节点的第一节点集合;从包括第二边缘节点及其子节点的第二节点集合,选择用于存储所述数据的第二节点,所述第一边缘节点是所述第二边缘节点的子节点;以及将所述数据存储在所述第二节点。
根据本公开的第二方面,提供了一种查询数据的方法,包括:使用数据的哈希值在包括第一边缘节点及其子节点的第一节点集合中查询所述数据;以及响应于在所述第一节点集合中查询所述数据失败,使用所述数据的所述哈希值在包括第二边缘节点及其子节点的第二节点集合中查询所述数据,所述第一边缘节点是所述第二边缘节点的子节点。
根据本公开的第三方面,提供了一种电子设备,包括:至少一个处理单元;至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述电子设备执行根据上述第一方面或第二方面中任一项所述的方法。
根据本公开的第四方面,提供了一种非瞬态计算机存储介质,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据上述第一方面或第二方面中任一项所述的方法。
根据本公开的第五方面,还提供了一种计算机程序产品,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据上述第一方面或第二方面中任一项所述的方法。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1图示了能够实施本公开的实施例的示例性分布式存储***的示意图;
图2图示了根据本公开的实施例的用于存储数据的方法的示意流程图;
图3图示了根据本公开的实施例的基于哈希环来选择存储节点的概念图;
图4图示了根据本公开的实施例的基于分布式存储***的节点之间的拓扑结构的多个哈希环的概念图;
图5图示了根据本公开的实施例的基于如图4所示的多个哈希环来选择存储节点的概念图;
图6图示了根据本公开的实施例的用于查询数据的方法的示意流程图;
图7图示了根据本公开的实施例的用于在节点集合中查询数据的方法的示意流程图;
图8图示了根据本公开的实施例的使用图4所示的多个哈希环来查询数据的概念图;以及
图9图示了可以用来实施本公开的实施例的示例设备的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,基于边缘计算的分布式存储***中所有节点通常是按照去中心化的方式来组织的。当客户端请求访问应用数据时,首先需要在分布式存储***的分布式哈希表中找到应用数据的元数据以定位数据。然而,查询元数据的请求将在去中心化的全局节点中被转发多次才能获取指示应用数据的存储位置的元数据。并且,全局节点中有相当多的节点是不稳定的,进一步需要花费很长时间才能获取元数据,甚至无法获取,导致***性能下降。
另一方面,这种分布式存储***忽视了节点的异构性,其平等地对待每个节点并为它们分配数据存储任务。这导致一部分性能较弱的节点(例如,用户终端设备)没有足够的存储空间来存储数据或存储了热点数据,这样也导致***整体性能下降。
有鉴于此,提供本公开的多个实施例以解决或至少缓解上述问题。本公开的多个实施例利用分布式存储***中的节点之间的拓扑关系来改进分布式存储***的查找机制,使得优先在数量相对较少的范围内查询应用数据的元数据,从而提高了访问数据的速度。
图1图示了能够实施本公开的实施例的示例性分布式存储***100的示意图。如图1所示,边缘计算环境下的分布式存储***100总体上可以被实施为层级结构,包括终端层110、远边缘层120、中间边缘层130、近边缘层140以及云150。
终端层110通常包括各种类型的终端节点111、112、113、114等(也称为客户端),例如,台式计算机、笔记本电脑、智能电话、可穿戴式设备、安防相机、智能汽车等。终端节点111-114按照其地理位置、网络配置等通过有线或无线连接加入分布式存储***100,以彼此通信耦合。例如,终端节点111可以是智能电话,根据其地理位置接入到相应的小区,连接到最近的远边缘节点,并且随着位置变化从切换到另一个边缘节点。再例如,终端节点112可以智能汽车,根据其位置连接到附近的车联网边缘节点,并且在行驶过程中切换附相应的车联网边缘节点。
远边缘层120包括部署在可以与终端层110的终端节点111-114通信的远边缘节点121、122、123、124。远边缘节点通常可以是具有比终端节点更多的计算资源(例如,处理器性能、存储容量、访问速度等)的移动边缘计算(MEC)设备。例如,远边缘设备121-124可以是部署在基站附近的、能够以较小延时在本地处理和存储来自终端节点的至少一部分数据的计算设备。
在分布式存储***100的层级结构中,包括中间边缘节点131和132的中间边缘层130位于远边缘层120之上。中间边缘节点131、132通常具有比远边缘节点121-124更多的计算资源(例如,处理器性能、存储容量、访问速度等)的计算设备(例如,小型计算集群),并且可以通过核心网络(未示出)彼此连接、向下连接到远边缘节点121-124、以及向上连接到近边缘层140的近边缘节点141。
类似地,位于近边缘层140的近边缘节点141可以具有比中间边缘节点121-124更多的计算资源,并且通过核心网络连接到云150。
云150可以包括由各种云服务提供商提供的、通过软硬件计算整合的多个服务器设备集群,其作为整体提供服务。
根据本公开的实施例,一个或多个终端节点111-114可以经由各种有线或无线网络连接到作为其服务节点的远边缘节点121-124中的一个节点。例如,如图1所示,终端节点111和112连接到远边缘节点121,并且终端节点113和114连接到远边缘节点123。应理解,这种连接可以随时间而动态变化,例如,终端节点112(如,智能汽车)可以行驶进入到远边缘节点121的覆盖范围而连接到远边缘节点121,并且随后离开该覆盖范围而断开连接。换句话说,远边缘节点121-124中的每一个节点都可以作为其覆盖范围内的所有终端节点的中心,以控制与其连接的终端节点。每个远边缘节点及其终端节点形成相应的节点集合。
如图1所示,远边缘节点121-124中的每一个远边缘节点均连接到对应的中间边缘节点。例如,远边缘节点121和122连接到中间边缘节点131,并且远边缘节点123和124连接到中间边缘节点133。中间边缘节点可以控制位于其下一层级的远边缘节点。类似地,中间边缘节点131和133连接到近边缘节点141。近边缘节点可以控制位于其下一层级的中间边缘节点,还可以进一步控制更下一层级的远边缘节点和终端节点。因此,在图1所示的分布式存储***100中,所有节点形成了树型拓扑形式的层级结构。
根据图1所示的树形拓扑,远边缘节点121具有作为其子节点的终端节点111和112,而远边缘节点121又是中间边缘节点131的子节点,中间边缘节点131又是近边缘节点141的子节点。在图1中,终端节点112间接地连接到中间边缘节点131,因此也被视为中间边缘节点131的子节点。在本文中,子节点指代直接的子节点和间接的子节点。例如,中间节点边缘131的子节点包括远边缘节点121和122,还包括远边缘节点121的子节点111和112。类似地,近边缘节点141的子节点包括在图1示出的位于其下方的所有节点。
在分布式存储***100中,节点均具有存储能力和通信能力,其能够响应于来自其他节点的数据访问请求,建立与请求节点的通信路径以传输所请求的数据。根据本公开的实施例,在分布式存储***100中存储了应用数据和应用数据的元数据,元数据可以至少包括应用数据的存储位置、应用数据的大小、应用数据的来源等。根据本公开的实施例,请求访问应用数据的节点可以查询应用数据的元数据,由此获得到应用数据的存储位置,从而与相应的节点建立通信路径以访问应用数据。如上所述,现有的分布式存储***的数据查找机制不利于高效获取应用数据的元数据,导致***性能下降。以下参照图2至9并且结合图1进一步详细描述根据本公开的实施例的存储数据和查询数据的方法。
尽管图1的分布式存储***100被示出为包括特定数量的终端节点、远边缘节点、中间边缘节点和近边缘节点,但是本领域技术人员应理解,分布式存储***100的节点的数目不限于此。此外,尽管图1的分布式存储***100被示出为如图所示的拓扑结构,但其拓扑结构不限于此,例如,可以包括更多或更少的层级和任何其他连接的树形拓扑。
图2图示了根据本公开的实施例的用于存储数据的方法200的示意流程图。
在框210,将数据存储在第一节点,第一节点选自包括第一边缘节点及其子节点的第一节点集合。根据本公开的实施例,数据可以是由分布式存储***100的节点生成的应用数据的元数据。例如,终端节点111可以捕捉视频数据等,并且期望上传到分布式存储***100。在确定应用数据的存储位置(例如,分布式存储***中的一个或更多个节点)之后,生成该应用数据的元数据。元数据至少包括应用数据的存储位置、数据的大小、应用数据的来源等,并且将基于本公开的实施例而被存储到分布式存储***100中的一个或多个节点。
如上所述并参照图1,仅作为示例,产生数据的终端节点111可以是远边缘节点121的子节点。因此,确定该远边缘节点121作为第一边缘节点,并且从包括远边缘节点121及其子节点的第一节点集合中选择节点来存储该数据。在一些实施例中,可以基于第一节点集合中的节点与该数据的哈希值的比较来确定第一节点集合中的用于存储该数据的节点。以下参照图3至图5详细描述。
图3图示了根据本公开的实施例的基于哈希环来选择存储节点的概念图。哈希环300指代从哈希函数计算产生的哈希值空间映射到的虚拟圆环。例如,当哈希空间的取值范围为0至232-1时,可以将哈希值均匀地映射到该虚拟圆环上,使得哈希值0映射在圆环的12点钟位置,哈希值231映射在圆环的6点钟位置,等等。根据本公开的实施例,可以使用相同哈希函数来计算第一节点集合中的每个节点的哈希值和要存储的数据的哈希值。例如,可以计算节点标识(例如,节点IP地址)的哈希值,并且将其映射到哈希环300上。如图3所示,仅作为示例,节点集合中的节点根据其哈希值被映射到哈希环300的位置31、32、33、34。同样,仅作为示例,数据A和数据B根据其哈希值被映射到哈希环300上的位置301和302。如图3所示,表示数据A的位置301在位置31和位置32之间,因此可以按照预定规则,将从位置301起沿顺时针方向的第一个位置32所对应的节点选择为用于存储数据A的节点。类似地,可以选择对应于位置34的节点来存储数据B。由上,节点集合中的节点根据其哈希值分布在哈希环上的相应位置处,因此可以通过数据的哈希值与节点的哈希值的比较来确定距离数据的哈希值最接近的一个或多个节点哈希值,从而进一步确定用于存储数据的一个或多个节点。用于示例目的,尽管图3仅示出了四个对应于节点的位置,但是取决于节点集合中的节点数,哈希环上表示节点的位置的数目可以是任意的。以下描述根据本公开的实施例的基于边缘计算环境下的节点拓扑结构的多个哈希环。
图4图示了根据本公开的实施例的基于节点拓扑结构的多个哈希环400的概念图。图4中包括三个级别的哈希环,位于最内层的第一级哈希环、位于中间的第二级哈希环、以及位于最外层的第三级哈希环。为了清楚起见,同一级别的哈希环上使用相同或相似形状的标记来表示节点哈希值的位置。按照其边缘计算环境的树形拓扑,分布式存储***100中的各个节点被映射到这三个哈希环中的一个或多个哈希环的对应位置处。
根据本公开的实施例,第一级哈希环根据包括远边缘节点及其子节点(例如,连接的终端节点)的第一节点集合来形成。仅作为示例,第一节点集合包括如图1所示的远边缘节点121、终端节点111和终端节点112。应理解,第一级哈希环可以包括更多的终端节点,这取决于与远边缘节点连接的终端节点的数目。如图4所示,根据其哈希值,某一终端节点可以被映射到第一级哈希环上的位置41-1。由此,包括远边缘节点及其子节点的第一节点集合的节点均被映射到第一级哈希环上的相应位置。
第二级哈希环根据包括中间边缘节点及其子节点的第二节点集合来形成。更具体地,第二节点集合包括中间边缘节点、作为该中间边缘节点的子节点的边缘远边缘节点、以及它们的终端节点。仅作为示例,对于如图1所示的中间边缘节点131,其子节点还包括远边缘节点121和122、终端节点111和112。应理解,取决分布式存储***中的拓扑关系,第二级哈希环可以包括更多或更少的远边缘节点和更多或更少的终端节点。这些节点根据其哈希值分别被映射到第二级哈希环上的相应位置处。例如,如图4所示,对应于位置41-1的同一节点进一步被映射到第二级哈希环上的位置41-2。应理解,相比于第一级哈希环,第二级哈希环包括更多的节点位置,例如,位置42-2、43-2等。具体地,与来自另一个第一级哈希环的位置42-1相对应的节点在第二级哈希环上被映射为节点42-2。由此,包括中间边缘节点及其子节点的第二节点集合的节点被映射到第二级哈希环上的相应位置。
类似地,第三级哈希环根据包括近边缘节点及其子节点的第三节点集合而形成。更具体地,第三节点集合包括近边缘节点、作为该近边缘节点的子节点的中间边缘节点、远边缘节点和它们的终端节点。仅作为示例,对于图1所示的近边缘节点141,其子节点包括图1所示的所有节点。如图4所示,对应于位置41-1、41-2的同一节点进一步被映射到第三级哈希环上的位置41-3,并且对应于位置42-2的节点进一步被映射到第三级哈希环上的位置42-3。由此,包括近边缘节点及其子节点的第三节点集合的节点被映射到第三级哈希环上的相应位置。
需要注意的是,所有哈希环可以均采用相同的哈希函数,使得相同节点均被映射到在这些哈希环上的相同的相对位置处。例如,相同节点的位置41-1、41-2、41-3均位于哈希环上的约7点钟位置处,并且相同节点的位置42-1、42-2、42-3均位于约哈希环上的约12点钟位置处。
返回图2,在框220,从包括第二边缘节点及其子节点的第二节点集合,选择用于存储数据的第二节点,第一边缘节点是第二边缘节点的子节点。根据本公开的实施例,首先基于由第一节点集合形成的第一级哈希环来选择用于存储数据的第一节点,并且还基于由第二节点集合形成的第二级哈希环选择用于存储数据的第二节点。第二节点集合的第二边缘节点是第一节点集合的第一边缘节点的父节点,因此相比于在具有较小范围的第一节点集合中存储数据,还根据边缘节点的拓扑关系在更大范围的第二节点集合中存储该数据。
在框230,将数据存储在第二节点中。一旦从第二边缘节点及其子节点的第二节点集合中选择了第一节点,就可以将该数据存储到第二节点。例如,通过建立与第二节点的通信连接,向第二节点传输该数据。
在一些实施例中,方法200还可以包括基于由第三节点集合形成的第三级哈希环上选择用于存储数据的第三节点。具体地,方法200可以包括从包括第三边缘节点及其子节点的第三节点集合选择用于存储数据的第三节点,第二边缘节点是第三边缘节点的子节点;以及将数据存储在第三节点。
在一些实施例中,第一节点可以基于第一节点集合中的节点与数据的哈希值的比较而确定,并且第二节点可以基于第二节点集合的节点与数据的哈希值的比较而确定。类似地,第三节点可以基于第三节点集合的节点与数据的哈希值的比较而确定。以下参照图5详细描述。
图5图示了根据本公开的实施例的使用如图4所示的多个哈希环来选择存储节点的概念图
参照图5,根据数据C的哈希值,数据C被映射到在第一级哈希环上某一位置。这时,节点41-1是距离其最近的节点的位置处(例如,顺时针方向的第一个节点位置)。因此,在对应于第一级哈希环的第一节点集合中,与位置41-1相对应的节点被选择为用于存储数据C的第一节点。一旦从第一边缘节点及其子节点的第一节点集合中选择了第一节点,就可以将该数据存储到所确定的第一节点。
然后,根据本公开的实施例,还可以在第二级哈希环上选择第二节点来存储数据。如图所示,第二级哈希环上位置43-2相比于位置41-2更接近数据C,因此替代了位置41-2成为最接近数据C的哈希值的位置。由此,在第二节点集合中,对应于位置43-2的节点被选择为用于存储数据C的第二节点。相应地,数据C的副本可以被发送到该节点并存储。类似地,在对应于第三级哈希环的第三节点集合中,对应于位置43-3的节点可以被选择为用于存储数据C的节点。如图所示,位置43-2和43-3表示相同哈希值,二者属于同一物理节点,因而可以省略重复存储数据。
作为另一示例,根据数据D的哈希值,数据D被映射到第一级哈希环上某一位置处。这时,位置42-1是距离数据D最接近的位置。因此,在对应于第一级哈希环的第一节点集合中,对应于位置42-1的节点可以被选择为用于存储数据D的第一节点。然后,类似地,通过与数据D的哈希值的比较,第二节点集合中对应于位置44-2的节点被选择为用于存储数据D的第二节点,类似地,在第三节点集合中,对应于第三级哈希环上的位置45-3的节点被选择为用于存储数据D的第三节点。因此,数据D的副本被发送到对应于位置44-2和45-3的节点并存储。针对数据D,位置42-1、44-2、45-3可以表示彼此不同的哈希值,属于不同的物理节点,因此数据D的副本分别发送到这些节点和存储。
根据本公开的实施例的方法200,数据不是在全局范围内被分布式存储,而是先较小范围内存储,然后再扩展到更大范围内存储,从而能够减少查询数据所需的时间,因此提高了访问数据的效率。
在一些情况下,节点尤其是终端节点动态地加入或离开分布式存储***,因此可以将及节点存储的数据定期或在发生特定事件(例如,分布式存储***的管理员的输入)时备份到更高一级的节点处以将数据持久化和增强数据可用性。例如,可以将终端节点111和112处存储的数据备份到具有更长生命期和更强性能的远边缘节点121处。在一些实施例中,远边缘节点121还可以进一步将其存储的数据备份到性能更好的中间边缘节点131处,甚至备份到近边缘节点141处。由此,诸如分布式哈希表的数据不仅以分布式方式存储在不同范围的节点集合中,还以集中方式备份到每个节点集合的具有更丰富资源的中心节点处,从而在提高数据访问效率的同时,还保障了数据的可用性。
此外,当从节点集合中选择的节点没有足够的能力来存储数据时,例如存储容量不足、网络延时高等,可以将数据传输到该节点集合的中心节点。在一些实施例中,方法200还可以包括:响应于数据向第一节点的存储失败,在第一边缘节点(例如远边缘节点)存储数据,并且响应于数据向第二节点的存储失败,在第二边缘节点(例如中间边缘节点)存储数据。
根据本公开的实施例,用于存储数据的节点可以将数据的哈希值和数据本身相关联地存储,以便在查询时能够通过数据的哈希值快速获取到对应的数据。
根据本公开的实施例,还提供了用于查询如上所述存储的数据的方法。当用户想要访问分布式存储***中的应用数据时,可以更快地查询到应用数据的元数据,以至少获得应用数据的存储位置。
根据以上参照图2至5描述的方法,诸如元数据的数据可以被存储第一节点集合中的至少一个节点处、以及节点数量更多的第二节点集合和第三节点集合中的至少一个节点处。基于上述存储数据的过程,还提供了对应的查询数据的过程。当用户查询某个数据时,基于边缘计算的分布式存储***可以首先在最低级别的第一节点集合中查询该数据,并且当查询失败时,再将查询扩展到第二节点集合,如果再失败,再将查询扩展到第三节点集合。以下参照图6-8详细描述根据本公开的实施例的在分布式存储***中查询数据的过程。
图6图示了根据本公开的实施例的用于查询数据的方法600的示意流程图。在框610,使用数据的哈希值在包括第一边缘节点及其子节点的第一节点集合中查询数据。数据可以是应用数据的元数据,例如,包括应用数据的存储位置。
应理解,节点集合中的节点数量可能是相当大并且是动态变化的,因此每个节点都保存和动态更新其他节点的信息是不现实的。在一些情况下,节点集合中的节点只知道集合中的一部分节点(例如一段IP地址范围内的节点)的存在,并且将其所知道的其他节点的哈希值和地址相关联地保存为路由表的条目。换句话说,节点可以保持关于第一节点集合的路由表。参照图7详细描述在节点集合内查询数据的过程。
图7示出了根据本公开的实施例的用于在节点集合中查询数据的方法700的示意流程图。在框710,接收包括数据的哈希值的查询请求。例如,第一边缘子节点的子节点中的一个或多个子节点可以接收查询请求,查询请求可以包括想要访问的应用数据的元数据的哈希值。可以通过元数据的哈希值定位到第一节点集合中存储元数据的节点。在一些实施例中,可以基于第一节点集合中的节点与该哈希值的比较,确定第一节点集合中的第一节点。
在框720,接收到查询请求的节点可以计算自身的哈希值与查询请求携带的哈希值之间的距离,并且计算其所知道的其他节点与数据的哈希值之间的距离。在如上参照图2至5的描述,节点根据其哈希值被映射到哈希环上,并且根据数据的哈希值与节点集合中的节点的比较,选择哈希值与数据哈希值最接近的节点来存储数据。因此,在查询数据时,通过类似的方式来确定存储了数据的节点。
在框730,确定自身是否是最接近的节点。如果不是最接近的节点,则在框750,转发查询到路由表中距离数据的哈希值最接近的节点。根据本公开的实施例,可以通过转发查询来迭代地定位到最接近的节点。
如果在框730确定自身是最接近的节点,则到框740,在该节点内查询数据的哈希值。如果查询到数据的哈希值,则表示获得数据并结束。如果当前节点无法查询到数据的哈希值,则意味着在最接近数据的哈希值的节点内也无法查询到数据。在这种情况下,可以向作为第一节点集合的中心节点的边缘节点(例如,远边缘节点)查询该数据。如上所述,节点集合的中心节点可以定期或基于事件(例如,分布式存储***的管理员的输入)来接收数据以保证数据的可用性。如果在中心节点也未能查询到数据,则可以认为在第一节点集合查询数据失败。
返回图6,在框620,响应于在第一节点集合中查询数据失败,使用数据的哈希值在包括第二边缘节点及其子节点的第二节点集合中查询数据,第一边缘节点是第二边缘节点的子节点。根据边缘节点之间的拓扑,第二节点集合包括比第一节点集合更多的节点,并且数据可能被存储到第二节点集合中的不在第一节点集合内的其他节点。类似地,每个节点可以保持关于第二节点集合的路由表,其中的条目相关联地存储了其节点所知道的其他节点的哈希值和地址。
结合图8描述从在第一节点集合查询数据切换到在第二节点集合查询数据的过程。图8图示了根据本公开的实施例的使用图4所示的多个哈希环来查询数据的概念图。
作为示例,当对应于第一级哈希环上的位置42-1的节点无法在第一节点集合中查询到数据时(这意味着在第一节点集合中该节点的哈希值距离该数据最接近),可以使用其关于第二节点集合的路由表来查询数据。具体地,与图7所示的方法700类似,在对应于位置42-1的节点处计算第二节点集合路由表中的其他节点与数据的哈希值的距离,并且确定自身以及其他节点中的最接近数据的哈希值的节点。换句话说,基于第二级哈希环上来定位最接近数据哈希值的、可能存储了数据的节点。然后,可以将查询转发到所确定的最接近的节点,由此通过迭代方式定位到第二级哈希环上的最接近节点,并在最接近节点上查询数据的哈希值。例如,经由与第一级哈希环上的位置42-1相对应的节点,查询被转发到第二级哈希环,并且将对应于位置44-2的节点确定为第二节点集合中的最接近节点。相应地,可以在与位置44-2相对应的节点上查询数据的哈希值。如果查询到数据的哈希值,则结束。如果当前节点无法查询到数据的哈希值,则意味着在最接近数据的哈希值的节点内也无法查询到数据。在这种情况下,可以向作为第二节点集合的中心节点的边缘节点(例如,中间边缘节点)查询该数据。如果在中心节点也未能查询到数据,则可以认为在第二节点集合查询数据失败。
在一些实施例中,还可以进一步在第二节点集合查询数据切换到在第三节点集合查询数据。第三节点集合可以包括第三边缘节点及其子节点,第二边缘节点是第三边缘节点的子节点。例如,第三边缘节点可以是在第二边缘节点的上一级的近边缘节点。参照图8,经由与第二级哈希环上的位置44-2相对应的节点,查询被转发到第三级哈希环,并且将对应于位置45-3的节点确定为第三节点集合中的最接近节点。通过上述的类似过程,在第三级哈希环上查询数据。
根据本公开的实施例,查询是逐步在从小到大的范围、而不是直接在全局范围内实施的,并且大多数应用中的数据查询和数据访问是在本地范围内发生的、且具有较低的通信延时,因此根据本公开的实施例的数据查询方法可以减少查询所需的跳数和每一跳所需平均延时,从而显著降低了查询时间,提高了访问数据的效率。
图9图示了可以用来实施本公开内容的实施例的示例设备900的示意性框图。例如,根据本公开实施例的备份***和/或恢复***可以由设备900来实施。如图所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200和/或方法700,可由处理单元901执行。例如,在一些实施例中,方法200和/或方法700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序被加载到RAM 903并由CPU 901执行时,可以执行上文描述的方法200和/或方法700的一个或多个动作。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (16)
1.一种用于存储数据的方法,包括:
将所述数据存储在第一节点,所述第一节点选自包括第一边缘节点及其子节点的第一节点集合;
从包括第二边缘节点及其子节点的第二节点集合,选择用于存储所述数据的第二节点,所述第一边缘节点是所述第二边缘节点的子节点;以及
将所述数据存储在所述第二节点。
2.根据权利要求1所述的方法,其中所述第一节点基于所述第一节点集合中的节点与所述数据的哈希值的比较而确定,以及
所述第二节点基于所述第二节点集合的节点与所述数据的哈希值的比较而确定。
3.根据权利要求1所述的方法,还包括:
从包括第三边缘节点及其子节点的第三节点集合选择用于存储所述数据的第三节点,所述第二边缘节点是所述第三边缘节点的子节点;以及
将所述数据存储在所述第三节点。
4.根据权利要求1所述的方法,还包括:
响应于所述数据向所述第一节点的存储失败,在所述第一边缘节点存储所述数据;以及
响应于所述数据向所述第二节点的存储失败,在所述第二边缘节点存储所述数据。
5.根据权利要求1所述的方法,其中所述数据是另一数据的元数据并且至少包括所述另一数据的存储位置。
6.根据权利要求1所述的方法,其中所述第一边缘节点的所述子节点是终端设备。
7.根据权利要1至6中任一项所述的方法,所述数据的哈希值和所述数据被相关联存储。
8.一种查询数据的方法,包括:
使用数据的哈希值在包括第一边缘节点及其子节点的第一节点集合中查询所述数据;以及
响应于在所述第一节点集合中查询所述数据失败,使用所述数据的所述哈希值在包括第二边缘节点及其子节点的第二节点集合中查询所述数据,所述第一边缘节点是所述第二边缘节点的子节点。
9.根据权利要求8所述的方法,还包括:
从所述第一边缘节点的所述子节点之一接收所述查询。
10.根据权利要求8所述的方法,其中在所述第一节点集合中查询所述数据包括:
基于所述第一节点集合中的节点与所述哈希值的比较,确定所述第一节点集合中的第一节点;以及
使用所述哈希值在所述第一节点中查询所述数据。
11.根据权利要求10所述的方法,还包括:
响应于在所述第一节点查询所述数据失败,经由所述第一节点并且基于所述第二节点集合中的节点与所述哈希值的比较,确定所述第二节点集合中的第二节点;以及
在所述第二节点中查询所述数据。
12.根据权利要求10所述的方法,还包括:
响应于在所述第一节点查询所述数据失败,向所述第一节点集合中的所述第一边缘节点查询所述数据。
13.根据权利要求8所述的方法,其中所述数据是另一数据的元数据并且至少包括所述另一数据的存储位置。
14.一种电子设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述电子设备执行根据权利要求1至13中任一项所述的方法。
15.一种非瞬态计算机存储介质,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1至13中的任一项所述的方法。
16.一种计算机程序产品,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1至13中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110275311.9A CN115079935A (zh) | 2021-03-15 | 2021-03-15 | 用于存储和查询数据的方法、电子设备和计算机程序产品 |
US17/224,189 US11645255B2 (en) | 2021-03-15 | 2021-04-07 | Method, electronic device, and computer program product for storing and searching for data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110275311.9A CN115079935A (zh) | 2021-03-15 | 2021-03-15 | 用于存储和查询数据的方法、电子设备和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115079935A true CN115079935A (zh) | 2022-09-20 |
Family
ID=83194878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110275311.9A Pending CN115079935A (zh) | 2021-03-15 | 2021-03-15 | 用于存储和查询数据的方法、电子设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11645255B2 (zh) |
CN (1) | CN115079935A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521668A (zh) * | 2022-01-21 | 2023-08-01 | 戴尔产品有限公司 | 用于数据存储的方法、设备和计算机程序产品 |
CN116975104A (zh) * | 2022-04-22 | 2023-10-31 | 戴尔产品有限公司 | 用于查找数据的方法、电子设备和计算机程序产品 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016060675A1 (en) * | 2014-10-17 | 2016-04-21 | Hitachi, Ltd. | Method and apparatus for managing data recovery of distributed storage system |
US10761758B2 (en) * | 2015-12-21 | 2020-09-01 | Quantum Corporation | Data aware deduplication object storage (DADOS) |
US9733863B1 (en) * | 2016-08-18 | 2017-08-15 | International Business Machines Corporation | Correlating storage rings |
CN110663030A (zh) * | 2017-03-16 | 2020-01-07 | 费赛特实验室有限责任公司 | 用于处理极端数据的边缘设备、***和方法 |
US10642739B2 (en) * | 2017-09-11 | 2020-05-05 | Cisco Technology, Inc. | Distributed coordination of caching and processing by networking devices |
US20190158370A1 (en) * | 2017-11-17 | 2019-05-23 | Electronics And Telecommunications Research Institute | Computing system and method for intelligent ioe information framework |
US11683110B2 (en) * | 2018-03-23 | 2023-06-20 | Clearblade, Inc. | Edge synchronization systems and methods |
US11671490B2 (en) * | 2018-03-23 | 2023-06-06 | Clearblade, Inc. | Asset synchronization systems and methods |
US20190045005A1 (en) * | 2018-04-12 | 2019-02-07 | Intel Corporation | Method for replicating data in a network and a network component |
WO2020010503A1 (zh) * | 2018-07-10 | 2020-01-16 | 深圳花儿数据技术有限公司 | 基于多层一致性哈希的分布式数据存储方法与*** |
US11388054B2 (en) * | 2019-04-30 | 2022-07-12 | Intel Corporation | Modular I/O configurations for edge computing using disaggregated chiplets |
US20220353732A1 (en) * | 2019-10-04 | 2022-11-03 | Intel Corporation | Edge computing technologies for transport layer congestion control and point-of-presence optimizations based on extended inadvance quality of service notifications |
US11308043B2 (en) * | 2019-11-13 | 2022-04-19 | Salesforce.Com, Inc. | Distributed database replication |
CN113132176B (zh) * | 2019-12-31 | 2024-02-02 | 华为云计算技术有限公司 | 一种控制边缘节点的方法、节点及边缘计算*** |
KR20210119849A (ko) * | 2020-03-25 | 2021-10-06 | 삼성전자주식회사 | 에지 컴퓨팅 시스템을 위한 통신 방법 및 장치 |
US20210011649A1 (en) * | 2020-09-25 | 2021-01-14 | Intel Corporation | Apparatus, systems, articles of manufacture, and methods for data lifecycle management in an edge environment |
CN114490518A (zh) * | 2020-10-23 | 2022-05-13 | 伊姆西Ip控股有限责任公司 | 管理流式数据存储***的索引的方法、设备和程序产品 |
KR102398076B1 (ko) * | 2020-10-30 | 2022-05-13 | 펜타시큐리티시스템 주식회사 | 데이터 분산 저장 방법 및 장치 |
US11323312B1 (en) * | 2020-11-25 | 2022-05-03 | Juniper Networks, Inc. | Software-defined network monitoring and fault localization |
-
2021
- 2021-03-15 CN CN202110275311.9A patent/CN115079935A/zh active Pending
- 2021-04-07 US US17/224,189 patent/US11645255B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11645255B2 (en) | 2023-05-09 |
US20220292068A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112840322B (zh) | 网络路由环境中的单节点和多节点数据存储库*** | |
CN107250999B (zh) | 具有网络内缓存的分布式内容发现 | |
US11489918B2 (en) | State management and object storage in a distributed cloud computing network | |
US10021181B2 (en) | System and method for discovering a LAN synchronization candidate for a synchronized content management system | |
US10320905B2 (en) | Highly available network filer super cluster | |
CN110413845B (zh) | 基于物联网操作***的资源存储方法及装置 | |
CN111338806B (zh) | 一种业务控制方法及装置 | |
CN115079935A (zh) | 用于存储和查询数据的方法、电子设备和计算机程序产品 | |
JP2016111703A (ja) | 情報指向ネットワークにおけるコンテンツ配置 | |
US11108854B2 (en) | Peer-to-peer network for internet of things resource allocation operation | |
US11122131B1 (en) | Edge cloud resource location using enhanced DNS service | |
CN109644160B (zh) | 通过分类在icn中进行名称解析和制作者选择的混合方法 | |
US11882181B2 (en) | Method, device, and computer program product for data storage | |
US11539584B2 (en) | Automatic and dynamic adaptation of grouping in a data processing system | |
US20220263759A1 (en) | Addressing method, addressing system, and addressing apparatus | |
US11362937B2 (en) | Location-aware routing for east-west data traffic | |
US11799962B1 (en) | Method, electronic device, and computer program product for looking up data | |
CN110958182B (zh) | 一种通信方法及相关设备 | |
US20230403227A1 (en) | Method, electronic device, and computer program product for cross-regional data searching | |
US12028240B2 (en) | Method, electronic device, and computer program product for cross-regional data searching | |
CN112929459B (zh) | 一种边缘***及数据操作请求的处理方法 | |
WO2021110176A1 (zh) | 一种边缘***及数据操作请求的处理方法 | |
KR100714462B1 (ko) | 다중 지역 이동 에이전트 컴퓨팅 환경에서의 이동 에이전트위치관리 및 메시지 전달 방법 및 그 시스템 | |
CN115622938A (zh) | 算力服务处理方法、装置及*** | |
CN117424907A (zh) | 文件获取方法、装置、节点设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |