CN116521668A - 用于数据存储的方法、设备和计算机程序产品 - Google Patents

用于数据存储的方法、设备和计算机程序产品 Download PDF

Info

Publication number
CN116521668A
CN116521668A CN202210071908.6A CN202210071908A CN116521668A CN 116521668 A CN116521668 A CN 116521668A CN 202210071908 A CN202210071908 A CN 202210071908A CN 116521668 A CN116521668 A CN 116521668A
Authority
CN
China
Prior art keywords
node
nodes
data
determining
prefix
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
CN202210071908.6A
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.)
Dell Products LP
Original Assignee
Dell Products LP
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 Dell Products LP filed Critical Dell Products LP
Priority to CN202210071908.6A priority Critical patent/CN116521668A/zh
Priority to US17/673,459 priority patent/US11882181B2/en
Publication of CN116521668A publication Critical patent/CN116521668A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Remote Sensing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开的实施例涉及用于数据存储的方法、设备和计算机程序产品。该方法包括:基于分布式存储***中的一组节点各自的属性信息,确定一组节点各自的哈希值。该方法还包括:基于一组节点各自的地理位置信息和哈希值,确定一组节点各自的节点标识符。节点标识符用于指示节点在分布式存储***中的逻辑位置。该方法还包括:响应于一组节点中的第一节点针对第一数据的处理请求,基于一组节点各自的节点标识符,确定一组节点中的目标节点。目标节点用于处理针对第一数据的处理请求。本公开的实施例实现了分布式存储***中的各个节点基于地理位置的分布。以这样,能够实现区域内数据处理的低延迟和高效率。

Description

用于数据存储的方法、设备和计算机程序产品
技术领域
本公开的实施例总体涉及计算机领域,具体涉及用于数据存储的方法、设备和计算机程序产品。
背景技术
当前,越来越多的云、边缘节点和大量客户端以节点形式参与到5G网络和边缘存储及计算。各种类型的节点被连接在一起形成了分布式存储***(也称为分布式存储网络),用于向用户提供高吞吐量和高可用性的数据。
目前已经提出了按照去中心化的方式组织的基于边缘存储的分布式存储***。随着其中的参与节点越来越多,关于存储数据的查找机制(例如分布式哈希(hash)表)由于需要遍历更长的搜索路径或经过更多跳才能找到与它们的元数据,导致分布式存储***的性能下降。因此,期望设计出更优化的存储***架构以及存储数据的查找机制来提高分布式存储***的性能。
发明内容
本公开的实施例提供了用于数据存储的方法、设备和计算机程序产品。
在本公开的第一方面,提供了一种用于数据存储的方法。该方法包括:基于分布式存储***中的一组节点各自的属性信息,确定一组节点各自的哈希值。该方法还包括:基于一组节点各自的地理位置信息和哈希值,确定一组节点各自的节点标识符。节点标识符用于指示节点在分布式存储***中的逻辑位置。该方法还包括:响应于一组节点中的第一节点针对第一数据的处理请求,基于一组节点各自的节点标识符,确定一组节点中的目标节点。目标节点用于处理针对第一数据的处理请求。
在本公开的第二方面,提供了一种电子设备。该电子设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时使得电子设备执行动作,该动作包括:基于分布式存储***中的一组节点各自的属性信息,确定一组节点各自的哈希值;基于一组节点各自的地理位置信息和哈希值,确定一组节点各自的节点标识符,节点标识符用于指示节点在分布式存储***中的逻辑位置;响应于一组节点中的第一节点针对第一数据的处理请求,基于一组节点各自的节点标识符,确定一组节点中的目标节点,目标节点用于处理针对第一数据的处理请求。。
在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令。该机器可执行指令在由设备执行时使该设备执行根据本公开的第一方面所描述的方法的任意步骤。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了根据本公开的一些实施例能够在其中实现的示例分布式存储***的示意性框图;
图2示出了根据本公开的一些实施例的用于数据存储的示例方法的流程图;
图3示出了根据本公开的一些实施例的基于哈希环的分布式存储架构的示意图;
图4示出了根据本公开的一些实施例的基于路由表的数据查找架构的示意图;
图5示出了根据本公开的一些实施例的基于哈希环对元数据进行存储的示意图;以及
图6示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,基于边缘存储的分布式存储***中的节点通常是按照去中心化的方式来组织的。当客户端请求访问应用数据时,首先需要在分布式存储***的分布式哈希表中找到应用数据的元数据以定位数据。然而,查询元数据的请求将在去中心化的全局节点中被转发多次才能获取指示应用数据的存储位置的元数据。
发明人注意到,考虑到设备移动性和数据移动性,应用数据通常在相同的区域内的节点之间被请求或者共享,以保证服务的连续性。特别地,在诸如智能制造和自动驾驶等场景中,数据尤其需要在特定区域内更高效地传输,而不是在全局网络中被跨区域请求或共享。
然而,在常规的去中心化方案中,没有考虑到各个节点的地理位置间的关联。这种常规的机制使得全局视图中的各个去中心化节点被平等地对待。例如,在地理位置(也称为物理上)相邻地节点在逻辑上可能彼此远离。反之,在地理位置上相距很远的节点可能在逻辑上相邻。因此,由于各个节点无法获知其物理上相邻的节点的存在,因此每个区域内数据消耗的请求会受到目标节点寻址效率低下的影响。这进而导致了边缘节点(例如,边缘服务器)之间的高延迟和低效率的数据共享。
此外,在常规的去中心化方案中,数据查询也存在效率低下的问题。在常规方案中,某个源节点产生的数据的元数据将会被广播到去中心化的机器,并且被存储到逻辑上相邻的目标节点中。然而,这个目标节点在物理上可能远离产生该数据的源节点,甚至远离当前节点所在的区域。在这种情况下,由于元数据被存储在远离源节点所在区域的目标节点中,对数据或数据块的查询通常需要经过若干跳(hop)。在每跳中,都可能会询问物理上相距较远并且响应延迟高的节点是否持有该数据。因此,这使得数据查询需要花费较长的时间。
有鉴于此,本公开的实施例提出了一种用于数据存储的方法,以解决上述问题和/或其他潜在问题中的一个或多个。在该方案中,基于各个节点的地理位置信息和各个节点的哈希值两者来共同确定节点的节点标识符。基于各个节点的节点标识符来确定该节点在分布式存储***中的逻辑位置,即在哈希空间中的位置。此外,在本方案中,响应于数据处理请求,基于各个节点的节点标识符来确定目标节点。
本方案在节点的逻辑空间定位方面以及针对数据处理请求确定目标节点方面,均考虑到了各个节点的地理位置信息。这种具有地理感知的边缘节点分布方案能够使得分布式存储***实现更高效的数据共享和数据查询。特别地,能够确保在相同区域内的数据请求或者数据查询可以实现更低的延迟和更高的效率。
下面将参考附图来详细描述本公开的基本原理和若干示例实施例。图1示出了根据本公开的一些实施例的用于数据存储的分布式存储网络100的示意图。应当理解,图1示出的实体、元素和模块的数目和布置仅是示例,分布式存储网络100中可以包括不同数目和不同布置方式的实体、元素和模块。
如图1所示,边缘计算环境下的分布式存储***100总体上可以被实施为层级结构,包括终端层110、边缘节点层130以及云层150。
终端层110通常包括各种类型的终端节点112、114、116等(也称为客户端)。终端节点的示例包括但不限于:台式计算机、笔记本计算机、智能电话、可穿戴式设备、安防相机、智能制造设备、智能家居设备、物联网设备、智能汽车,等等。应理解,虽然图1中仅示出了三个终端节点,但这仅仅是示例性的,不以任何方式限制本发明。在分布式存储网络100中,可以包括任意数目、任意类型的终端节点。
终端节点112、114和116可以按照其地理位置、网络配置等通过有线或无线连接加入分布式存储***100,以彼此通信耦合。例如,终端节点112可以是智能电话,根据其地理位置接入到相应的小区,连接到最近的节点(也称为边缘节点),并且随着位置变化从切换到另一节点。又例如,终端节点114可以是智能制造设备,根据其地理位置接入到相应的小区,连接到最近的节点。再例如,终端节点116可以智能汽车,根据其位置连接到附近的车联网边缘节点,并且在行驶过程中切换附相应的车联网边缘节点。
边缘节点层130中通常包括分布在不同地理位置处的多个节点(也称为边缘(edge)节点或者对等(peer)节点),例如节点132、143、136、138、142、144、146。各个节点可以例如通过有线或无线连接加入分布式存储***100,以彼此通信耦合。在本文中,边缘节点层130中的节点可以是任何具有计算资源的计算设备或者具有存储资源的存储设备。应理解,图1中所示出的节点的数目和布置仅仅是示例性的,不以任何方式限制本发明。在分布式存储网络100中,可以包括任意数目、任意类型、任意布置的(边缘)节点。
在本文中,出于说明的目的,将边缘节点层130划分为不同区域,例如图中所示出的第一区域131和第二区域141。位于第一区域131内的节点132、134、136和138可以被认为是在地理位置上相近的。同样的,位于第二区域141内的节点142、144和146也可以被认为是在地理位置上相近的。应理解,上述区域划分仅仅是示例性的,而不是限制性的。在一些实施例中,可以划分更大的、更小的区域,或者划分其他形状的区域,或者划分出其中包含更多或更少数目的节点的区域。
云层150可以包括多个云,例如云152、154等。各个云可以是由各种云服务提供商提供的、通过软硬件计算整合的多个服务器设备集群,其作为整体提供服务。应理解,图1中所示出的云的数目和布置仅仅是示例性的,不以任何方式限制本发明。在分布式存储网络100中,可以包括任意数目、任意类型、任意布置的云。
在分布式存储***100中,节点均具有存储能力和通信能力,其能够响应于来自其他节点的数据访问请求,建立与请求节点的通信路径以传输所请求的数据。根据本公开的实施例,在分布式存储***100中存储了数据(也称为应用数据)和数据的元数据,元数据可以至少包括应用数据的存储位置、应用数据的大小、应用数据的来源等。根据本公开的实施例,请求访问数据的节点可以查询数据的元数据,由此获得到该数据的存储位置,从而与相应的节点建立通信路径以访问数据。如上所述,现有的分布式存储***的数据查找机制不利于高效获取应用数据的元数据,导致***性能下降。以下参照图2至6并且结合图1进一步详细描述根据本公开的实施例的存储数据和查询数据的方法。
尽管图1的分布式存储***100被示出为包括特定数目的终端节点、边缘节点和云,但是本领域技术人员应理解,分布式存储***100的节点的数目不限于此。此外,尽管图1的分布式存储***100被示出为如图所示的拓扑结构,但其拓扑结构不限于此,例如,可以包括更多或更少的层级和任何其他连接的树形拓扑。
以上结合图1描述了根据本公开的一些实施例的示例分布式存储***100。下面将参考图2来描述在根据本公开的一些实施例的用于数据存储的方法200的流程图。方法200可以由图1的分布式存储***120实现。应当理解,方法200还可以被其他适当的设备或装置执行。方法200可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。为便于说明,将参考图1来描述方法200。
如图2所示,在框210处,分布式存储***100基于分布式存储***100中的一组节点各自的属性信息,确定一组节点各自的哈希值。节点的属性信息例如可以包括:节点的名称(例如,设备名称)、节点的IP地址,等等。在一些实施例中,分布式存储***100可以采用任何适当的哈希算法,例如SHA256来基于节点的属性信息确定节点的哈希值。节点的哈希值可以以十六进制或者二进制来表示。应理解,以上所列举的SHA256仅仅是示例性的,而不是限制性的。在此处以及文本中的其他地方,均可以使用任何适当的哈希算法来计算针对节点或者针对数据的哈希值。
在框220处,分布式存储***100基于一组节点各自的地理位置信息和所确定的哈希值,确定一组节点各自的节点标识符。在本文中,节点标识符也被称为基于地理的节点标识符。节点标识符用于指示节点在分布式存储***100中的逻辑位置,例如在哈希空间中的位置。节点标识符可以被表示为十六进制或者二进制的形式。节点的地理位置信息可以使用任何定位方式,诸如GPS定位来确定。本方案在此方面不受限制。
在一些实施例中,分布式存储***100可以基于一组节点各自的地理位置信息确定一组节点各自的位置前缀。位置前缀可以是以十六进制或者二进制的形式,并且可以具有预定的位数。该预定的位数可以是预先确定的。备选地或附加地,可以根据分布式存储***100中各个地理区域的划分大小或者各个区域内的节点数目来确定。
在一些实施例中,分布式存储***100可以将位于第一地理区域中的第一节点的前缀确定为第一前缀。例如,分布式存储***100可以将第一区域131中的节点132、134、136和138的前缀均设置为第一前缀。以具有预定的三位的位置前缀为例,节点132、134、136和138的前缀可以被设置为000。分布式存储***100还可以将位于不同于第一地理区域的第二地理区域中的第二节点的前缀确定为不同于第一前缀的第二前缀。例如,分布式存储***100可以将第二区域141中的节点142、144和146的前缀均设置为第二前缀。以具有预定的三位的位置前缀为例,节点142、144和146的前缀可以被设置为001。
在一些实施例中,可以将一组节点各自的位置前缀作为前缀添加到一组节点各自的哈希值,以获得一组节点各自的节点标识符。例如,可以利用以下来确定节点标识符:
GPID=Geo prefix+SHA256(Peer Identity)hash value (1)
在式(1)中,GPID用来表示节点标识符,Geo prefix用来表示位置前缀,SHA256()用来表示所使用的哈希算法,Peer Identity用来表示节点的属性信息(例如,节点ID、节点名称、节点IP地址等),SHA256(Peer Identity)hash value用来表示节点的哈希值。
应理解,以上所描述的确定节点标识符的方法仅仅是示例性的,而无意限制本公开的范围。可以使用任何适当的方法来确定节点标识符,例如使用其他哈希算法来确定节点的哈希值,或者使用其他方法确定位置前缀。
以上描述了确定各个节点的节点标识符的若干示例。基于所确定的节点标识符,各个节点在分布式存储***100中的逻辑位置,例如在哈希空间中的位置可以被确定。例如,可以基于节点标识符,利用异或运算(XOR)来确定节点之间的逻辑距离。
在一些实施例中,各个节点可以在分布式存储***100中以哈希环的形式分布。各个节点在哈希环上相距的距离可以标识各个节点之间的逻辑距离。图3示出了根据本公开的一些实施例的基于哈希环300的分布式存储架构的示意图。
在一些实施例中,哈希环300可以指代从哈希函数计算产生的哈希值空间映射到的虚拟圆环。例如,当哈希空间的取值范围为0至232-1时,可以将哈希值均匀地映射到该虚拟圆环上。例如,可以使得哈希值0映射在圆环的12点钟位置,哈希值231映射在圆环的6点钟位置,等等。应理解,以上所描述的哈希空间的取值范围和示例映射关系仅仅是示例性的,而不是限制性的。可以采用任何适当的取值范围的哈希空间。
根据本公开的实施例,可以使用相同哈希函数来计算一组节点中的每个节点的哈希值。此外,可以针对一组节点中的每个节点按照同样的规则(例如,设置相同的位置前缀位数)来确定位置前缀。根据各个节点例如按照式(1)所确定的节点标识符,可以将各个节点映射到哈希环300上。如图3所示,仅作为示例,一组节点中的节点根据其哈希值被映射到哈希环300的位置310、320、330、340和350。
由上,一组中的节点根据其节点标识符分布在哈希环上的相应位置处,而节点标识符是至少部分地基于节点的地理位置而被确定的。因此,在哈希环上位置相近的节点在地理位置上通常也相互接近。例如,哈希环300上的节点310、节点320和节点330在地理位置上很接近。而哈希环300上的节点340和节点350距离节点310、320和330较远。在哈希环300的示例中,节点310、320和330可以被看作位于相同的区域(或地理区域)中。出于示例目的,尽管图3仅示出了五个对应于节点的位置,但是取决于一组节点中的节点数目,哈希环上表示节点的位置的数目可以是任意的。
应理解,虽然各个节点在哈希环中被映射到某个具***置,但是各个节点所具有的存储空间范围可以包括该节点与下一节点之间的哈希空间范围。
通过基于节点标识符来将各个节点分布在哈希环上,可以根据节点之间的地理位置来分布各个节点。以这样,节点在哈希环上的位置能够反映节点的地理位置。这种基于地理位置的分布式存储***100能够有利于数据存储和数据查询等操作。特别地,对于区域数据消耗,这种基于地理位置的分布式存储***100能够实现更低的延迟和更高的效率。这种基于地理位置的分布式存储***100尤其适合诸如智能制造、智能汽车等领域。
继续参考图2。在框230处,分布式存储***100响应于一组节点中的第一节点针对第一数据的处理请求,基于一组节点各自的节点标识符,确定一组节点中的目标节点。目标节点用于处理针对第一数据的处理请求。第一数据也可以被称为第一数据块。
在一些实施例中,第一节点针对第一数据的处理请求例如可以是第一节点针对第一数据的读请求。在一些实施例中,第一节点针对第一数据的处理请求也可以使针对第一数据的其他访问请求,例如写请求。在这种情形下,分布式存储***100可以基于一组节点各自的节点标识符,将与第一节点的逻辑位置相距不超过阈值距离的至少一个节点确定为候选节点集。例如,可以将哈希环300上与节点310相距不超过阈值距离的至少一个节点,例如节点320确定为候选节点集。阈值距离可以是预先确定的,也可以根据区域的大小或者区域内节点的数目而被设置。
附加地,分布式存储***100可以从候选节点集中查找存储第一数据的目标节点。查找到的目标节点可以将第一数据提供给第一节点。即,第一节点可以从目标节点读取或者访问第一数据。
在一些实施例中,分布式存储***100可以将与第一节点逻辑上相近的候选节点集的节点标识符存储到路由表(也称为桶(bucket))中。分布式存储***100可以基于该路由表来查找存储第一数据的目标节点。分布式存储***100可以将各个候选节点的节点标识符和地址相关联地保存为路由表的条目。
图4示出了根据本公开的一些实施例的基于路由表的数据查找架构的示意图。在图4的示例中,节点A是第一节点。节点A的节点标识符被确定为“xxx…000”,其中“xxx”表示节点A的位置前缀,“000”表示最后三位标识符,“…”表示中间的几位为了便于说明而被省略了。可以将与节点A具有相同的位置前缀的至少一个节点添加到针对节点A的路由表中。例如,可以通过对各个节点基于节点标识符使用异或算法来确定节点之间的逻辑距离,从而将逻辑距离不超过阈值距离的节点添加到节点A的路由表中。可以通过设置适当的阈值距离来使得(即,位置前缀相同)
路由表410示出了针对节点A的示例路由表。在路由表410中,各个节点均具有相同的位置前缀“xxx”。路由表410的第一列示出了与节点A的逻辑距离的范围,第二列中示出了在对应的距离范围内的节点及其节点标识符。例如,与节点A的逻辑距离为1的节点B具有节点标识符“xxx…001”。类似地,其他候选的节点C、D、E、F、G和H的节点标识符也被示出了。在路由表410的示例中,距离阈值被设置为7,因此路由表中仅包括7个候选节点。应理解,距离阈值可以被设置为更小或者更大的值,路由表中也可以包括更少或者更多的候选节点。
图4中还示出了基于路由表的查找树420。可以根据查找树420按照例如从左至右的顺序遍历节点B、C、D、E、F、G和H来查找第一数据。如前所述,数据通常会在在相同区域内移动,因此第一数据有很大可能会在路由表410中的候选节点中被找到。相比常规方案中通常需要几跳(每一跳都查询该跳中路由表中的若干节点)来查找第一数据,根据本方案的使用基于地理位置所确定的节点标识符确定的路由表,可以快速的在一个路由表中定位存储第一数据的目标节点。通过这样,可以避免跳到其他路由表(即,到远离该区域的节点处)查找数据。以此方式,能够节省数据查找时间,进而对数据进行快速定位。
附加地或备选地,在一些实施例中,第一节点针对第一数据的处理请求例如可以包括:第一节点请求将第一节点处生成的第一数据的元数据进行存储。元数据可以至少包括第一数据的存储位置、第一数据的大小、第一数据的来源等信息中的一项或多项。当某一节点(例如,客户端设备)请求访问第一数据时,通常首先需要在分布式存储***的分布式哈希表中找到第一数据的元数据以定位第一数据。因此,希望针对第一数据的元数据能够与第一数据存储在位于相同区域内的节点上,从而加快数据定位和查找速度。
在一些实施例中,为了使元数据能够与第一数据存储在位于相同区域内的节点上,分布式存储***100可以基于第一节点的第一节点标识符和第一数据的哈希值,来确定针对元数据的数据标识符。第一数据的哈希值可以是根据与计算节点的哈希值相同的哈希算法来确定的。以下描述了确定数据标识符的示例方法:
GCID=Geo prefix+SHA256(Content Identity)hash value (2)
在式(2)中,GCID用来表示数据标识符,Geo prefix用来表示位置前缀,SHA256()用来表示所使用的哈希算法,Content Identity用来表示第一数据的内容标识(例如,数据的属性、数据的ID等),SHA256(Content Identity)hash value用来表示该数据的哈希值。
应理解,以上所描述的确定数据标识符的方法仅仅是示例性的,而无意限制本公开的范围。可以使用任何适当的方法来确定数据标识符,例如使用其他哈希算法来确定数据的哈希值,或者使用其他方法确定位置前缀。
在一些实施例中,分布式存储***100可以基于一组节点各自的节点标识符与由以上所描述的方式所确定的数据标识符的比较,来确定一组节点中的目标节点。例如,分布式存储***100可以基于所确定的数据标识符,从一组节点各自的节点标识符中,将与数据标识符的逻辑距离(例如,通过异或算法计算的)最接近的节点确定为目标节点。该目标节点可以被用于存储该元数据。
备选地,分布式存储***100可以基于所确定的数据标识符,从一组节点各自的节点标识符中,将与数据标识符的逻辑距离不超过预定的阈值距离的至少一个节点确定为候选目标节点集。分布式存储***100可以从候选目标节点集中任意选择或者根据例如节点的剩余存储空间等来选择目标节点。本公开的范围在此方面不受限制。
通过这样,能够确保由第一节点所生成的第一数据的元数据被存储在与第一节点位于相同的区域中的目标节点。应理解,目标节点可以是位于该区域中的任何节点。目标节点也可以是第一节点本身。通过将第一数据的元数据存储在相同区域中的目标节点上,能够便于随后对第一数据的查找和处理等。以这样,能够进一步的提高分布式存储***100的性能。
附加地或备选地,在图4中使用路由表410的示例中,分布式存储***100可以从路由表410中查找与数据标识符的逻辑距离最接近的节点作为目标节点。通过使用路由表,可以对目标节点进行更为便捷的查找,从而进一步减少了数据存储所花费的时间。
图5示出了根据本公开的一些实施例的基于哈希环300对元数据进行存储的示意图。在图5的示例中,在节点310处生成了第一数据510。分布式存储***100可以根据节点310的节点标识符和第一数据510的哈希值来确定针对第一数据510的元数据520的数据哈希值。分布式存储***100进而可以根据数据哈希值在哈希环300上确定与之逻辑路径最接近的目标节点。例如,在图5的示例中,节点330可以被确定为目标节点。分布式存储***100可以将元数据520进行广播并且存储到节点330中。
应理解,图5的示例仅仅是说明性的,而不是限制性的。在其他示例中,可以根据各个节点的节点标识符以及该数据标识符,将与节点310位于相同区域中的其他节点,例如节点320,或者将节点310本身确定为目标节点。
通过本公开的基于地理位置确定节点标识符和数据标识符的方式,能够将由第一设备生成的第一数据与第一数据的元数据存储在相同的区域中(例如,可以存储在相同区域中的相同节点上或者相同区域中的不同节点上)。而针对该数据的数据请求(例如,读请求或写请求)通常是由位于相同区域中的节点所发出的,因此通过利用本公开的方案,能够在这一相同区域内快速定位元数据,从而快速定位数据。本方案因此能够避免常规方案中的大概率的低效的跨区域数据查询和数据获取。综上所述,本公开提出了优化的分布式存储***方案,其能够降低***延迟并且提高***效率。
图6示出了可以用来实施本公开内容的实施例的示例设备600的示意性框图。例如,如图1所示的分布式存储***100可以由设备600实施。如图6所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。在一些实施例中,输入样本可以经由输入单元606而被输入到设备600。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200,可由处理单元601执行。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU 601执行时,可以执行上文描述的方法200的一个或多个动作。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (17)

1.一种用于数据存储的方法,包括:
基于分布式存储***中的一组节点各自的属性信息,确定所述一组节点各自的哈希值;
基于所述一组节点各自的地理位置信息和所述哈希值,确定所述一组节点各自的节点标识符,所述节点标识符用于指示节点在所述分布式存储***中的逻辑位置;以及
响应于所述一组节点中的第一节点针对第一数据的处理请求,基于所述一组节点各自的节点标识符,确定所述一组节点中的目标节点,所述目标节点用于处理针对所述第一数据的所述处理请求。
2.根据权利要求1所述的方法,其中确定所述一组节点各自的所述节点标识符包括:
基于所述一组节点各自的地理位置信息确定所述一组节点各自的位置前缀,所述位置前缀具有预定的位数;以及
将所述一组节点各自的所述位置前缀作为前缀添加到所述一组节点各自的所述哈希值,以获得所述一组节点各自的节点标识符。
3.根据权利要求2所述的方法,其中确定所述一组节点各自的位置前缀包括:
将所述一组节点中位于第一地理区域中的第一节点的位置前缀确定为第一前缀;以及
将所述一组节点中位于不同于所述第一地理区域的第二地理区域中的第二节点的位置前缀确定为不同于所述第一前缀的第二前缀。
4.根据权利要求1所述的方法,其中针对第一数据的处理请求包括:所述第一节点针对所述第一数据的读请求。
5.根据权利要求4所述的方法,其中确定所述一组节点中的目标节点包括:
基于所述一组节点各自的节点标识符,将与所述第一节点的逻辑位置相距不超过阈值距离的至少一个节点确定为候选节点集;
从所述候选节点集中查找存储所述第一数据的所述目标节点;以及
由所述目标节点将所述第一数据提供给所述第一节点。
6.根据权利要求5所述的方法,其中确定候选节点集包括:
对所述一组节点中的第二节点的第二节点标识符与所述第一节点的第一节点标识符执行异或运算以确定所述第一节点与所述第二节点之间的逻辑距离;以及
如果所述逻辑距离未超过所述阈值距离,将所述第二节点添加到所述候选节点集。
7.根据权利要求1所述的方法,其中针对第一数据的处理请求包括:所述第一节点请求将所述第一节点处生成的所述第一数据的元数据进行存储。
8.根据权利要求7所述的方法,其中确定所述一组节点中的目标节点包括:
基于所述第一节点的第一节点标识符和所述第一数据的哈希值,确定所述元数据的数据标识符;以及
基于所述一组节点各自的节点标识符与所述数据标识符的比较,确定所述一组节点中的所述目标节点,所述目标节点用于存储所述元数据。
9.一种电子设备,包括:
至少一个处理器;以及
存储有计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备执行动作,所述动作包括:
基于分布式存储***中的一组节点各自的属性信息,确定所述一组节点各自的哈希值;
基于所述一组节点各自的地理位置信息和所述哈希值,确定所述一组节点各自的节点标识符,所述节点标识符用于指示节点在所述分布式存储***中的逻辑位置;以及
响应于所述一组节点中的第一节点针对第一数据的处理请求,基于所述一组节点各自的节点标识符,确定所述一组节点中的目标节点,所述目标节点用于处理针对所述第一数据的所述处理请求。
10.根据权利要求9所述的电子设备,其中确定所述一组节点各自的所述节点标识符包括:
基于所述一组节点各自的地理位置信息确定所述一组节点各自的位置前缀,所述位置前缀具有预定的位数;以及
将所述一组节点各自的所述位置前缀作为前缀添加到所述一组节点各自的所述哈希值,以获得所述一组节点各自的节点标识符。
11.根据权利要求10所述的电子设备,其中确定所述一组节点各自的位置前缀包括:
将所述一组节点中位于第一地理区域中的第一节点的位置前缀确定为第一前缀;以及
将所述一组节点中位于不同于所述第一地理区域的第二地理区域中的第二节点的位置前缀确定为不同于所述第一前缀的第二前缀。
12.根据权利要求9所述的电子设备,其中针对第一数据的处理请求包括:所述第一节点针对所述第一数据的读请求。
13.根据权利要求12所述的电子设备,其中确定所述一组节点中的目标节点包括:
基于所述一组节点各自的节点标识符,将与所述第一节点的逻辑位置相距不超过阈值距离的至少一个节点确定为候选节点集;
从所述候选节点集中查找存储所述第一数据的所述目标节点;以及
由所述目标节点将所述第一数据提供给所述第一节点。
14.根据权利要求13所述的电子设备,其中确定候选节点集包括:
对所述一组节点中的第二节点的第二节点标识符与所述第一节点的第一节点标识符执行异或运算以确定所述第一节点与所述第二节点之间的逻辑距离;以及
如果所述逻辑距离未超过所述阈值距离,将所述第二节点添加到所述候选节点集。
15.根据权利要求9所述的电子设备,其中针对第一数据的处理请求包括:所述第一节点请求将所述第一节点处生成的所述第一数据的元数据进行存储。
16.根据权利要求15所述的电子设备,其中确定所述一组节点中的目标节点包括:
基于所述第一节点的第一节点标识符和所述第一数据的哈希值,确定所述元数据的数据标识符;以及
基于所述一组节点各自的节点标识符与所述数据标识符的比较,确定所述一组节点中的所述目标节点,所述目标节点用于存储所述元数据。
17.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使设备执行根据权利要求1-8中的任一项所述的方法。
CN202210071908.6A 2022-01-21 2022-01-21 用于数据存储的方法、设备和计算机程序产品 Pending CN116521668A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210071908.6A CN116521668A (zh) 2022-01-21 2022-01-21 用于数据存储的方法、设备和计算机程序产品
US17/673,459 US11882181B2 (en) 2022-01-21 2022-02-16 Method, device, and computer program product for data storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210071908.6A CN116521668A (zh) 2022-01-21 2022-01-21 用于数据存储的方法、设备和计算机程序产品

Publications (1)

Publication Number Publication Date
CN116521668A true CN116521668A (zh) 2023-08-01

Family

ID=87314868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210071908.6A Pending CN116521668A (zh) 2022-01-21 2022-01-21 用于数据存储的方法、设备和计算机程序产品

Country Status (2)

Country Link
US (1) US11882181B2 (zh)
CN (1) CN116521668A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251489A (zh) 2022-06-10 2023-12-19 戴尔产品有限公司 用于跨区域查询数据的方法、电子设备和计算机程序产品

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827279B2 (en) * 2004-01-30 2010-11-02 Hewlett-Packard Development Company, L.P. Selecting nodes close to another node in a network using location information for the nodes
US7496651B1 (en) * 2004-05-06 2009-02-24 Foundry Networks, Inc. Configurable geographic prefixes for global server load balancing
US7818402B1 (en) 2006-02-08 2010-10-19 Roxbeam Media Network Corporation Method and system for expediting peer-to-peer content delivery with improved network utilization
CN101771715B (zh) * 2008-12-26 2014-04-16 华为技术有限公司 分布式网络构建存储的方法、装置和***
US8886781B2 (en) * 2011-12-13 2014-11-11 Microsoft Corporation Load balancing in cluster storage systems
WO2015023537A2 (en) * 2013-08-16 2015-02-19 Interdigital Patent Holdings, Inc. Methods and apparatus for hash routing in software defined networking
US10735137B2 (en) 2016-03-15 2020-08-04 ClineHair Commercial Endeavors Distributed storage system data management and security
US9906597B2 (en) 2015-04-07 2018-02-27 Microsoft Technology Licensing, Llc Collaboration data proxy system in cloud computing platforms
US10802747B2 (en) 2017-11-30 2020-10-13 Veritas Technologies Llc Performing backup operations using replicas
US10949384B2 (en) 2018-07-03 2021-03-16 Cohesity, Inc. Using a storage system to optimize and maintain the metadata associated with a plurality of small files
US10893103B2 (en) 2018-07-25 2021-01-12 Commvault Systems, Inc. Distributed and scalable storage management using a storage-microservices server
US11537619B1 (en) * 2018-10-31 2022-12-27 Amazon Technologies, Inc. Replica group modification in a distributed database
JP6573044B1 (ja) 2019-03-22 2019-09-11 富士ゼロックス株式会社 データ管理システム
US20220182243A1 (en) * 2019-04-25 2022-06-09 Telefonaktiebolaget Lm Ericsson (Publ) Method and Apparatus for Distributed Ledger
US11416465B1 (en) * 2019-07-16 2022-08-16 Splunk Inc. Processing data associated with different tenant identifiers
CN112749145A (zh) * 2019-10-29 2021-05-04 伊姆西Ip控股有限责任公司 存储和访问数据的方法、设备和计算机程序产品
CN112882647B (zh) 2019-11-29 2024-06-18 伊姆西Ip控股有限责任公司 存储和访问数据的方法、电子设备和计算机程序产品
CN112887116A (zh) * 2019-11-29 2021-06-01 伊姆西Ip控股有限责任公司 管理分布式应用***中的应用节点的方法、设备和产品
US11544229B1 (en) * 2020-04-29 2023-01-03 American Express Travel Related Services Company, Inc Enhanced tracking of data flows
US11892976B2 (en) * 2021-01-29 2024-02-06 Splunk Inc. Enhanced search performance using data model summaries stored in a remote data store
CN115079935A (zh) * 2021-03-15 2022-09-20 伊姆西Ip控股有限责任公司 用于存储和查询数据的方法、电子设备和计算机程序产品

Also Published As

Publication number Publication date
US20230239350A1 (en) 2023-07-27
US11882181B2 (en) 2024-01-23

Similar Documents

Publication Publication Date Title
US11374845B2 (en) Determining a transit appliance for data traffic to a software service
CN108370391B (zh) 用于虚拟网络的共享多租户域名***(dns)服务器
US10545914B2 (en) Distributed object storage
KR101201072B1 (ko) 자원 요청을 대응하는 자원과 랑데뷰시키는 방법 및 시스템
EP2633668B1 (en) Distributed propagation of data in a wireless communication network
CN110413845B (zh) 基于物联网操作***的资源存储方法及装置
US11645255B2 (en) Method, electronic device, and computer program product for storing and searching for data
US10986065B1 (en) Cell-based distributed service architecture with dynamic cell assignment
US20170031908A1 (en) Efficient parallel insertion into an open hash table
CN113282941A (zh) 获取对象标识的方法、装置、电子设备及存储介质
CN112749145A (zh) 存储和访问数据的方法、设备和计算机程序产品
US11108854B2 (en) Peer-to-peer network for internet of things resource allocation operation
US11882181B2 (en) Method, device, and computer program product for data storage
US11122131B1 (en) Edge cloud resource location using enhanced DNS service
US20150350079A1 (en) Method of message routing for a distributed computing system
US20220263759A1 (en) Addressing method, addressing system, and addressing apparatus
US20210216507A1 (en) Method, device and computer program product for storage management
CN113169936B (zh) 用于数据流处理的服务链机制
US20240020269A1 (en) Method, electronic device, and computer program product for searching for data
US11799962B1 (en) Method, electronic device, and computer program product for looking up data
US12028240B2 (en) Method, electronic device, and computer program product for cross-regional data searching
US11706288B1 (en) Method, electronic device, and computer program product for processing query request
US20240022471A1 (en) Device-specific pre-configuration of cloud endpoints
KR101629106B1 (ko) 컨텐츠 기반 네트워크에서 요청 컨텐츠의 해쉬값에 따라 컨텐츠를 송신하는 방법
CN114422477A (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