CN112640371A - 使用分段路由技术来减少分布式存储操作延迟 - Google Patents
使用分段路由技术来减少分布式存储操作延迟 Download PDFInfo
- Publication number
- CN112640371A CN112640371A CN201980057286.8A CN201980057286A CN112640371A CN 112640371 A CN112640371 A CN 112640371A CN 201980057286 A CN201980057286 A CN 201980057286A CN 112640371 A CN112640371 A CN 112640371A
- Authority
- CN
- China
- Prior art keywords
- storage node
- request
- storage
- list
- data
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/34—Source routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于使用分段路由来减少分布式存储操作延迟的系统、方法和计算机可读介质。在一些示例中,一种方法可以包括:从客户端接收标识在分布式存储环境上存储或检索数据的意图的消息,以及向客户端发送分段路由(SR)列表,该SR列表标识用于存储或检索数据的存储节点候选。该方法可以包括基于与请求相关联的分段路由报头(SRH),引导来自客户端的数据请求通过由SR列表定义的路径,SRH被配置为引导请求通过该路径,直到来自存储节点候选的存储节点接受该请求为止。该方法还可以包括向客户端设备发送指示存储节点接受了该请求的响应,并且在接受请求的存储节点处存储或检索数据。
Description
相关申请的交叉引用
本申请要求于2018年9月4日提交的、题为“REDUCING DISTRIBUTED STORAGEOPERATION LATENCY USING SEGMENT ROUTING TECHNIQUES”的美国非临时专利申请No.16/121,525的的权益和优先权,其全部内容通过引用明确地并入本文。
技术领域
本技术涉及分布式存储系统,并且更具体地涉及使用分段路由技术来减少分布式存储操作延迟。
背景技术
支持互联网的设备的普及创造了对互联网服务和内容的巨大的需求。在许多方面,我们已经成为一个互联的社会,其中用户越来越依赖网络服务和内容。这场与互联网互联的革命给内容提供商带来了巨大的挑战,这些内容提供商在努力满足大量客户请求的同时,常常达不到性能预期。例如,内容提供商通常需要大型且复杂的数据中心来满足用户对网络和内容的需求。这些数据中心通常配备有被配置为托管特定内容和服务的服务器场(server farm),并且包括配置为路由和处理内容请求的大量网络设备。在许多情况下,特定数据中心预计处理数百万个业务流和内容请求。
毫不奇怪,如此大量的数据可能难以管理,并造成显著的性能下降和挑战。在一些情况下,可以实施负载平衡解决方案来提高性能和服务可靠性。然而,当前的负载平衡解决方案易于出现节点故障,通常无法充分考虑网络中的动态变化和波动,并且可能容易受到延迟和瓶颈的影响。可以购买并实施附加资源以增加网络的容量,从而减少延迟和性能问题。不幸的是,这种方法很昂贵,增加了网络的复杂性,并且仍然容易受到网络波动的影响,这可能导致过载情况下的延迟、欠载情况下的浪费以及高度可变的性能。
附图说明
为了描述可以获得本公开的上述优点和特征以及其他优点和特征的方式,将通过参考附图中所示的以上简要描述的原理的特定实施例来呈现对其的更具体描述。应当理解,这些附图仅描绘了本公开的示例性实施例,并且因此不应被认为是对其范围的限制,通过使用附图,以附加的特征和细节来描述和解释本文的原理,其中:
图1示出了根据各种实施例的示例分布式存储环境;
图2示出了根据各种实施例的用于使用分段路由和负载平衡技术在分布式存储环境中执行存储操作的示例流程的图;
图3A示出了根据各种实施例的用于存储操作请求的示例分段路由分组;
图3B示出了根据各种实施例的分组的IPv6报头中的目的地地址字段的示例配置;
图3C示出了根据各种实施例的分组的IPv6报头中的目的地地址字段的另一示例配置;
图4A示出了根据各种实施例的基于相应IPv6和分段路由报头的存储操作请求的示例流程;
图4B示出了根据各种实施例的对存储操作请求的响应的示例流程;
图5A示出了根据各种实施例的用于使用分段路由和负载平衡技术在分布式存储环境中存储数据和副本的示例流程的图;
图5B示出了根据各种实施例的用于使用分段路由喷射(spray)策略在分布式存储环境中存储数据的示例流程的图;
图6A示出了根据各种实施例的用于使用与分配给内容的地址相对应的分段路由分段将数据请求直接路由到分布式存储环境中的内容的示例流程的图;
图6B示出了根据各种实施例的用于使用与分配给内容的地址相对应的分段路由分段将数据请求直接路由到内容的另一示例流程的图;
图7示出了根据各种实施例的用于使用分段路由在元数据服务器池中的元数据服务器之间对客户端请求进行负载平衡的示例流程;
图8A示出了根据各种实施例的用于使用分段路由和负载平衡在分布式存储环境中存储数据的示例方法;
图8B示出了根据各种实施例的用于使用分段路由和负载平衡在分布式存储环境中检索数据的示例方法;
图8C示出了根据各种实施例的用于使用分段路由和负载平衡来将对数据的请求直接路由到分配给数据的地址的示例方法;
图9示出了根据各种实施例的示例网络设备;以及
图10示出了根据各种实施例的示例计算设备。
具体实施方式
下面详细讨论本公开的各种实施例。尽管讨论了特定的实现方式,但是,应当理解,仅出于说明的目的而这样做。相关领域的技术人员将认识到,可以在不脱离本公开的精神和范围的情况下,使用其他组件和配置。
概述
本公开的附加特征和优点将在下面的描述中阐述,并且部分地从该描述中将是显而易见的,或者可以通过实践本文所公开的原理来获悉。本公开的特征和优点可以通过所附权利要求中特别指出的工具和组合的手段来实现和获得。根据以下描述和所附权利要求,本公开的这些和其他特征将变得更加显而易见,或者可以通过实践本文阐述的原理来获悉。
本文公开了用于使用分段路由技术来减少分布式存储操作延迟的系统、方法和计算机可读介质。根据至少一个示例,提供了一种用于使用分段路由技术来减少分布式存储操作延迟的方法。该方法可以包括:从客户端设备接收标识在分布式存储环境(例如,分布式存储网络)上执行数据操作(例如,读取数据、写入数据等)的意图的消息(例如,诸如分组之类的电子消息),并向客户端设备发送分段路由(SR)列表,该SR列表标识被选择用于执行数据操作的多个存储节点候选。例如,在某些情况下,分布式存储环境上的元数据服务器可以从客户端设备接收电子消息,该电子消息请求在分布式存储环境上存储或检索数据。响应于来自客户端设备的消息,元数据服务器可以在分布式存储环境中选择或标识用于存储或检索数据的存储节点候选,并向客户端设备发送标识存储节点候选的SR列表。客户端设备可以使用SR列表以使用分段路由(例如,SRv6)通过存储节点候选来路由或引导数据操作请求。
该方法可以包括基于与数据操作请求相关联的分段路由报头(SRH),引导从客户端设备接收的数据操作请求通过由SR列表定义的路径。例如,客户端设备可以发送包括具有SR列表的SRH的数据操作请求,SR列表标识存储节点候选。SRH可以引导数据操作请求分组通过包括存储节点候选的路径,直到来自存储节点候选的存储节点接受数据操作请求为止。可以将数据操作请求分组路由到SR列表中的第一存储节点候选,第一存储节点候选在接收到数据操作请求分组后决定是接受还是拒绝该数据操作请求。如果第一存储节点拒绝数据操作请求,它向SR列表中的下一存储节点候选转发数据操作请求分组。下一存储节点候选类似地在接收到数据操作请求分组时决定是接受还是拒绝该数据操作请求,并且如果其决定拒绝数据操作请求,则将数据操作请求分组转发到SR列表中的下一存储节点候选。数据操作请求分组将继续遍历SR列表中的存储节点候选的路径,直到数据操作请求被存储节点候选接受为止。每个存储节点候选都可以基于存储节点候选处的操作条件(例如,当前带宽、当前负载、当前容量、资源可用性等)来确定是接受还是拒绝数据操作请求。在某些情况下,可以要求SR列表中的最后一个存储节点候选接受请求,以避免数据操作请求被完全拒绝或丢弃。
当存储节点接受数据操作请求时,该方法可以进一步包括向客户端设备发送对数据操作请求的响应,指示存储节点已经接受了来自客户端设备的数据操作请求。一旦存储节点接受了数据操作请求,客户端设备和存储节点就可以建立连接以在存储节点处存储或检索数据。在此,该方法可以包括将数据存储在接受数据操作请求的存储节点上,或从该存储节点检索数据。如先前所解释的,存储节点可以基于存储节点处的操作条件来接受数据操作请求。这可以通过增加在那个特定时刻处数据操作请求将由具有足够带宽和容量的存储节点来处理的可能性,以及降低数据操作请求将由具有低带宽或过载条件的存储节点来处理的可能性来帮助减少存储延迟。
在另一示例中,提供了一种用于使用分段路由技术来减少分布式存储操作延迟的系统。该系统可以包括一个或多个处理器和至少一个具有存储在其中的指令的计算机可读存储介质,这些指令在由一个或多个处理器执行时,使系统执行上述示例方法。例如,指令在由一个或多个处理器执行时,可以使系统从客户端设备接收标识在分布式存储环境上执行数据操作(例如,读取操作、写入操作等)的意图的消息;向客户端设备发送SR列表,该SR列表标识被选择用于执行数据操作的多个存储节点候选;基于数据操作请求中的SRH,引导从客户端设备接收的数据操作请求通过包括SR列表的路径(即,包括SR列表中的多个存储节点候选的路径),该SRH可以包括SR列表并且可以被配置为引导数据操作请求通过该路径,直到来自多个存储节点候选的存储节点接受该数据操作请求为止;向客户端设备发送响应,指示存储节点从客户端设备接受了数据操作请求;以及在接受了数据操作请求的存储节点上执行数据操作(例如,将数据存储在存储节点上、从存储节点检索数据等)。
在另一示例中,提供了一种用于使用分段路由技术来减少分布式存储操作延迟的非暂态计算机可读存储介质。该非暂态计算机可读存储介质可以存储指令,这些指令在由一个或多个处理器执行时,使一个或多个处理器执行前述的方法和/或操作。例如,指令可以使一个或多个处理器从客户端设备接收标识在分布式存储环境上执行数据操作的意图的消息;向客户端设备发送SR列表,该SR列表标识被选择用于数据操作的多个存储节点候选;基于数据操作请求中的SRH,引导从客户端设备接收的数据操作请求通过包括SR列表的路径(即,包括SR列表中的存储节点候选的路径),该SRH包括SR列表并且被配置为引导数据操作请求通过该路径,直到来自多个存储节点候选的存储节点接受该数据操作请求为止;向客户端设备发送响应,指示存储节点从客户端设备接受了数据操作请求;以及在接受了数据操作请求的存储节点上执行数据操作(例如,将数据存储在存储节点上、从存储节点检索数据等)。
描述
所公开的技术涉及用于使用分段路由技术来减少分布式存储操作延迟的系统、方法和计算机可读介质。本技术将在下面的公开内容中描述如下。讨论从使用分段路由和互联网协议版本6(IPv6)的负载平衡存储操作的介绍性概述开始。然后将描述,如图1中所示的示例分布式存储环境,以及如图2至图8C所示的,用于使用分段路由和负载平衡技术来减少分布式存储操作延迟的示例方法和技术。该讨论以对示例网络设备(如图9所示),以及包括适用于执行存储和计算操作的示例硬件组件的示例计算设备架构(如图10所示)的描述作为结束。现在,本公开转向使用分段路由和IPv6的负载平衡存储操作的介绍性概述。
本文中的方法可以利用分段路由(SR)来将连接或通信请求(例如,数据读取和写入请求)朝向由元数据服务器选择的多个存储节点候选引导,以服务该请求。如本文所述,存储节点候选可以接收这样的请求,并基于一个或多个因素(例如,当前和将来的负载、存储节点性能、资源可用性、性能要求和其他操作条件)来接受或拒绝该请求。请求将遍历在分组的SR报头(SRH)中标识的存储节点候选,直到存储节点接受该请求为止。
可以类似地实现这些方法以将客户端存储的数据副本有效地存储在存储节点上。例如,从客户端接受存储请求并存储数据的存储节点可以使用SR将副本存储请求朝向其他存储节点或存储节点池引导。副本存储请求可以包括具有SR列表的SRH,SR列表标识来自一个或多个存储节点池的存储节点候选。SR列表、存储节点候选以及一个或多个存储节点池可以由元数据服务器来标识或选择,该元数据服务器存储与分布式存储环境中的存储节点有关的信息。SRH可以引导副本存储请求通过存储节点候选,直到该请求被多个存储节点候选接受为止,存储节点候选的数量可以对应于要存储的副本的数量。如前所述,存储节点候选可以接收这样的请求并且可以基于一个或多个因素来接受或拒绝该请求。存储节点可以将副本有效地存储在接受请求的那些存储节点候选上。
例如,当客户端设备想要在分布式存储环境上存储或读取数据时,它可以将消息发送到元数据服务器(或如本文所述的元数据服务器池),该元数据服务器可以向客户端设备发送用于数据的存储节点候选的列表。使用多个存储节点候选可以提高可靠性、性能和负载平衡公平性。客户端设备可以将通信请求(例如,用于读取或存储数据的通信请求)发送到由元数据服务器标识的存储节点候选。可以使用基于分组中的SRH的分段路由来路由该请求,该SRH包括标识存储节点候选的SR列表以及通过存储节点候选来路由分组的顺序。SR列表中的第一存储节点候选可以接收请求,并基于一个或多个因素(例如,当前负载、未来负载、预测负载、资源(例如,带宽、存储、计算等)可靠性、存储节点状态、性能要求、预期响应延迟和/或存储节点处的任何操作条件)来决定是接受还是拒绝该请求。
在第一存储节点候选不能接受请求的情况下,SR列表中的剩余存储节点候选可以用作备用存储节点候选。如果第一存储节点候选拒绝了该请求,则将分组转发到SR列表中的下一存储节点候选,后者类似地决定接受还是拒绝该请求。该请求将继续遍历SR列表,直到存储节点候选接受该请求为止,或者直到该请求到达SR列表中可能被迫接受该请求的最后一个存储节点候选为止。
为了说明,用于存储操作请求的分组可以包括具有SR列表的SRH,该SR列表具有与被选择用于请求的n个存储节点候选相对应的分段标识符(SID)。IPv6报头可以包括与客户端相关联的源地址(SA)、与第一存储节点候选相对应的目的地地址(DA);以及包括SR列表(SN3、SN2、SN1)的SRH,其中SN1、SN2和SN3是被选择用于请求的存储节点候选。SR列表可以是SRH中的分段的列表,其标识被选择用于请求的存储节点候选,并且可以用于将请求引导到那些存储节点候选。存储节点候选可以在其接收到请求时决定接受还是拒绝该请求。通过这种方式,IPv6和分段路由技术可以用于负载平衡存储操作并减少分布式存储环境中的存储操作的延迟。下面提供了对IPv6和分段路由概念的进一步讨论。
IPv6环境
在IPv6环境中,可以经由IPv6地址或前缀来到达诸如存储节点或元数据服务器之类的节点。IPv6分组可以包括IPv6报头,该IPv6报头标识分组的源分段和目的地分段,并且可以包括要由IPv6报头中的一个或多个分段应用的功能。在某些情况下,还可以为存储在节点中的数据分配IPv6或前缀,其可以用于标识和访问该数据。例如,可以为一个或多个存储数据块的节点分配IPv6前缀,并且可以为该数据块的每个实例分配IPv6前缀内的IPv6地址。数据块的IPv6地址可以用于访问数据块。该方案可以确保将对寻址到数据的IPv6地址的数据的请求路由到包含该数据并与IPv6前缀相关联的(一个或多个)适当节点。
分段路由(SR)
SR是源路由范例,其允许分组遵循由分段列表或SR列表定义的预定义路径。本文中的方法利用SR和IPv6技术来进行准确而有效的存储操作负载平衡和延迟减少。
通过在分组中实现IPv6报头和SRH,可以一起利用SR和IPv6。例如,在某些情况下,可以实现IPv6扩展报头,以标识SR的分段列表和计数器剩余分段(SegmentsLeft),该计数器剩余分段指示直到到达分组的最终目的地为止要处理的剩余分段的数量。在SR分组中,IPv6目的地地址可以用SR列表中的下一分段的地址来覆写。这样,分组可以通过不支持SR的路由器或节点,直到到达下一预期的SR分段或跃点(hop)为止。在接收到SR分组之后,支持SR的(SR-aware)路由器或节点将目的地地址设置为SR列表中的下一分段的地址,并减少剩余分段(SL)计数器。当分组到达SR列表中的最后一个SR跃点或分段时,分组的最终目的地被复制到IPv6目的地地址字段。根据报头中的标志的值,可以用最后一个SR跃点或分段来剥离SRH,以便目的地接收原始的IPv6分组。
本文中的分段路由和IPv6概念可以被实现为执行存储操作负载平衡和延迟减少。例如,当客户端想要与存储节点建立连接以执行存储操作(例如,读取或写入)时,客户端可以与元数据服务器进行通信以获得用于该存储操作的存储节点候选的列表。元数据服务器可以在分布式存储环境中存储与存储节点有关的信息,以回答来自客户端的此类请求。因此,当元数据服务器接收到来自客户端的请求时,它可以选择一组存储节点候选并将存储节点候选的列表提供给客户端。然后,客户端可以将分组发送到存储节点候选,存储节点候选可以基于插入到分组中的SRH进行路由,该SRH包括标识由元数据服务器选择的存储节点候选的列表的SR列表。SRH将允许通过存储节点候选来连续地引导分组。
当分组到达第一存储节点候选时,而不是简单地将分组转发到SR列表中的存储节点候选,存储节点候选可以本地决定是接受连接还是拒绝连接,并将分组转发到SR列表中的下一存储节点候选。在某些情况下,存储节点候选可以基于存储节点候选的策略和/或本地操作条件来做出此类决定。如果存储节点候选拒绝连接,则可以将分组转发到SR列表中的下一分段(即,下一存储节点候选),并且分组可以遍历SR列表中的存储节点候选,直到存储节点候选接受了连接或分组到达SR列表中的最后一个分段为止。为了确保满足所有请求,可能需要SR列表中的最后一个存储节点候选接受连接。在接受连接之后,接受存储节点候选可以与客户端建立连接并执行由客户端请求的存储操作。
该机制允许将连接请求透明地传递给若干存储节点候选,直到找到可用或能够接受连接的存储节点候选为止。接受或拒绝连接的决定可以由各个存储节点候选以分散的方式在本地进行。该机制将操作意识直接带给了分布式存储环境,并提高了分布式存储环境中的负载平衡和存储操作性能。
可以类似地使用本文的分段路由技术来对由客户端存储在存储节点上的数据的副本进行路由和负载平衡。例如,存储节点可以存储数据块,并且然后向一个或多个存储节点候选发送分组,以便将数据块的副本分发给其他存储节点。分组可以包括具有SR列表的SRH,该SR列表标识副本的存储节点候选。在一些示例中,存储节点候选可以是被选择用于副本的一个或多个存储节点池的部分。SRH可以引导分组通过SR列表中的分段,以便分组可以由被选择用于副本的存储节点候选接收。当接收到分组时,每个存储节点候选可以决定接受存储副本的请求,或者拒绝该请求并将其转发给SR列表中的下一存储节点候选。存储节点候选因此可以基于它们各自的操作条件来做出关于是否接受请求并存储副本的本地决定。
现在,本公开转向图1,其示出了根据一些示例的分布式存储环境102的示例架构100。在该示例中,分布式存储环境102包括用于在分布式存储环境102中存储数据的存储节点候选132-136、142-146、152-156。数据可以包括例如但不限于文件、对象、数据块或数据组块、内容项、原始数据、数据副本和/或任何其他类型的数据或信息项。
存储节点候选132-136、142-146、152-156可以代表分布式存储环境102的硬件和/或虚拟存储基础结构。存储节点候选132-136、142-146、152-156可以包括一个或多个物理存储服务器、一个或多个虚拟存储服务器(例如,虚拟机(VM)、软件容器等)、一个或多个物理和/或逻辑存储组件(例如,存储驱动器、逻辑卷(logical volume)、存储分区、存储阵列等)和/或任何其他物理和/或虚拟/逻辑存储元件。存储节点候选132-136、142-146、152-156可以跨越多个存储元件或分布在其中,并且可以提供分布式存储基础结构。在某些情况下,存储节点可以跨越多个物理或虚拟存储元件。例如,存储节点可以代表从两个或更多个物理服务器和/或存储设备创建的虚拟存储设备、容器或位置。
可以将存储节点候选132-136、142-146、152-156分组到存储节点池130、140、150中。例如,可以将存储节点候选132-136分组到存储节点池130中,可以将存储节点候选142-146分组到存储节点池140中,并且可以将存储节点候选152-156分组到存储节点池150中。可以基于一种或多种因素(例如,一种或多种共同特性),将存储节点候选132-136、142-146、152-156分组到存储节点池130、140、150中。例如,可以根据存储类型、数据类型(例如,它们存储的数据类型)、基础存储平台、物理或虚拟位置、容量、配置设置或架构、存储角色、优先级、网络分段(例如,IP前缀或子网)、共享的资源、操作条件等,将存储节点候选132-136、142-146、152-156分组到存储节点池130、140、150中。
在某些情况下,存储节点池(例如,130、140和/或150)可以被配置为充当单个存储节点或分布式存储装置。在其他情况下,存储节点池(例如,130、140和/或150)可以仅表示可以分开和/或单独操作的存储节点的集合。例如,存储节点池130可以表示被选择为用于存储一条数据或服务于数据请求的主存储节点池的存储节点池,并且存储节点池140和150可以表示被选择为用作备份存储节点池(例如,用于在主存储节点池发生错误或故障时使用,用于负载平衡等)的存储节点池,或用于存储一条数据的备份或副本,或服务于一条数据的备份或副本的辅助存储节点池。
在一些情况下,存储节点池130、140、150可以是动态的,使得存储节点池130、140、150中的存储节点可以动态或随时间变化。例如,存储节点池130可以表示由元数据服务器(例如,112、114、116、122、124和/或126)选择的一组存储节点,用于处理存储操作或请求。为了说明,元数据服务器112可以选择存储节点候选132、134、136作为用于处理来自客户端104的存储操作或请求的存储节点候选,并且将存储节点候选132、134、136分组到由存储节点池130表示的一组存储节点候选中。如先前所解释的,元数据服务器112可以基于一个或多个因素或共享特性来选择用于存储节点池130的存储节点候选132、134、136。例如,在该实例中,元数据服务器112可以为存储节点池130选择存储节点候选132、134、136,因为存储节点候选132、134、136都存储了客户端104请求的一条数据。
然而,对于未来的存储操作或请求,元数据服务器112可以选择不同的一组存储节点候选以形成存储节点池130。例如,元数据服务器112可以增加存储节点池130中的存储节点的数量(例如,通过添加一个或多个存储节点候选142-146和/或152-156),减少存储节点池130中的存储节点的数量(例如,通过去除一个或多个存储节点候选132、134和136),或为存储节点池130选择完全不同的一组存储节点。
元数据服务器112、114、116、122、124、126可以存储与分布式存储环境102中的存储节点候选132、134、136、142、144、146、152、154、156和存储节点池130、140、150有关的信息,和/或跟踪分布式存储环境102中的活动。例如,元数据服务器112、114、116、122、124、126可以跟踪数据在分布式存储环境102中的存储位置;特定存储节点的位置;哪些存储节点或存储节点池正在处理存储操作或请求,或者已经选择了哪些存储节点或存储节点池用于存储操作或请求;分布式存储环境102中的存储节点、存储节点池和/或数据的地址(例如,IPv6地址、IPv6前缀等);存储节点的容量或可用性;与存储节点相关联的数据或存储装置的类型;和/或与分布式存储环境102中的数据、存储节点和存储节点池有关的任何其他信息。在某些情况下,不同的元数据服务器可以在分布式存储环境102中存储或跟踪不同的信息或活动。例如,一组元数据服务器可以存储和跟踪与特定的一组存储节点和/或数据有关的信息,而另一组元数据服务器可以存储和跟踪与不同的一组存储节点和/或数据有关的信息。例如,可以这样做以减少元数据服务器112、114、116、122、124、126上的存储和/或计算负担,减少为分布式存储环境102保留全面信息所需的元数据服务器的数量等。
元数据服务器112、114、116、122、124、126可以使用该信息来标识或选择用于在分布式存储环境102中进行存储操作或请求的存储节点候选和/或存储节点池。例如,元数据服务器112、114、116、122、124、126可以使用该信息来标识哪些存储节点(例如,132、134、136、142、144、146、152、154、156)存储特定的一条数据并选择此类节点来处理对该特定的一条数据的请求。作为另一示例,元数据服务器112、114、116、122、124、126可以使用该信息来标识和选择用于存储一条数据和一个或多个副本的存储节点候选和/或存储节点池。为了说明,元数据服务器112、114、116、122、124、126可以使用该信息来选择用于存储与存储请求相关联的数据的主存储节点池(例如,130)和用于存储数据的副本的辅助存储节点池(例如,140和/或150)。
在一些示例中,当客户端104、106、108想要从分布式存储环境102存储数据或从其检索数据时,它们可以与元数据服务器112、114、116、122、124、126进行通信以获得用于存储或检索数据的存储节点候选的列表。元数据服务器112、114、116、122、124、126可以标识或选择一组用于所请求的操作的存储节点候选,并向客户端104、106、108中的每一个提供所选存储节点候选的列表。在某些情况下,该列表可以是具有与所选存储节点候选相对应的分段的SR列表。在其他情况下,该列表可以是客户端104、106、108可以用来生成SR列表的列表。
客户端104、106、108可以使用接收到的列表来建立与来自列表的特定存储节点的相应连接,并完成与来自列表的特定存储节点的所请求的操作。客户端104、106、108可以通过发送被配置为连续地行进穿过列表中的存储节点候选直到存储节点候选接受该请求为止的分组来请求建立与相应存储节点的连接并执行与相应存储节点的所请求的操作。分组可以包括具有SR列表的SRH,该SR列表包括与所选存储节点候选相对应的分段。SR列表可以是由元数据服务器112、114、116、122、124、126提供的列表,或者是基于由元数据服务器112、114、116、122、124、126提供的列表而创建的SR列表。分组中的SRH可以允许支持SR的节点或设备引导分组通过来自SR列表的存储节点候选。
当SR列表中的存储节点候选接收到分组时,它可以基于例如存储节点候选处的操作条件(例如,带宽、负载、资源可用性、容量等)来本地决定是接受还是拒绝该请求。如果存储节点候选接受该请求,则请求客户端可以与该存储节点建立连接以进行所请求的存储操作(例如,存储数据、检索数据等)。如果存储节点候选拒绝该请求(例如,由于存储节点处的操作条件),则存储节点候选可以使用SRH将分组转发到SR列表中的下一跃点或分段(例如,下一存储节点候选)。接收到分组的每个存储节点可以类似地决定是接受还是拒绝该分组,并根据该存储节点是接受还是拒绝该请求,来与请求客户端建立连接,或者将分组转发到SR列表中的下一跃点或分段(例如,下一存储节点候选)。
在一些情况下,元数据服务器112、114、116、122、124、126可以被分组到元数据服务器池110、120中,其可以用于负载平衡来自客户端104、106、108的请求。例如,元数据服务器112、114和116可以被分组到元数据服务器池110中,并且元数据服务器122、124和126可以被分组到元数据服务器池120中。元数据服务器112、114、116、122、124、126的分组可以用于创建元数据服务器池110、120。可以基于一个或多个因素(例如,共享的元数据服务器属性、元数据服务器条件、负载平衡因素、预期的元数据服务器负载、由元数据服务器112、114、116、122、124、126等存储和/或跟踪的信息),来创建元数据服务器池110、120。例如,元数据服务器池110可以被配置为包括具有与特定的一组存储节点、存储节点池和/或数据有关的信息的元数据服务器,并且元数据服务器池120可以被配置为包括具有与不同的一组存储节点、存储节点池和/或数据有关的信息的元数据服务器。在另一示例中,元数据服务器池110、120可以被配置为每个包括多个随机选择的元数据服务器。
在某些情况下,元数据服务器池110、120可以是静态的。例如,元数据服务器池110、120可以被配置为包括相同的相应组或数量的元数据服务器。在其他情况下,元数据服务器池110、120可以是动态的。例如,元数据服务器池110、120中的元数据服务器的数量和/或身份可以基于一个或多个因素(例如,时间、存储操作请求、元数据服务器操作条件(例如,带宽、可用性、负载、延迟等)、存储需求、业务波动、性能偏好、优先级、性能统计信息、网络模式、存储节点改变、数据存储调整、环境变化等)而变化。为了说明,在一些示例中,元数据服务器池110可以在一段时间内或为处理一个或多个特定存储操作请求而部署元数据服务器112、114、116,并且然后在不同的一段时间内,无限期地、或者直到遇到不同的池调整触发器或标准为止,为不同的一组存储操作请求而部署更多、更少或不同的元数据服务器。
当客户端104、106、108想要从分布式存储环境102存储或从其检索数据时,它们可以将消息发送到一个或多个元数据服务器池(例如,110和/或120),以获得用于存储或检索数据的存储节点候选的列表。例如,客户端104可以向元数据服务器池110发送消息,以获得用于存储或检索数据的存储节点候选的列表。可以将消息发送到元数据服务器池110中的元数据服务器112、114、116,并且元数据服务器池110中的元数据服务器可以基于操作条件而接受请求,并且用存储节点候选的列表进行响应。在一些情况下,可以使用与上述用于路由和负载均衡存储节点候选的存储操作请求的方法类似的分段路由负载平衡方法来处理从客户端104、106、108到元数据服务器池110、120的分组。
例如,从客户端104到元数据服务器池110的请求可以包括具有SRH的分组,该SRH包含标识元数据服务器池110中的元数据服务器112、114、116的SR列表。基于SRH,分组可以连续地经过由SR列表标识的元数据服务器112、114、116,直到SR列表中的元数据服务器接受该请求。当SR列表中的元数据服务器接收到分组时,它可以基于例如元数据服务器处的操作条件(例如,带宽、负载、资源可用性、容量等)在本地决定是接受还是拒绝请求。如果元数据服务器接受该请求,则它可以用被选择用于所请求的存储操作的存储节点候选的列表来响应于客户端104。如果元数据服务器拒绝该请求(例如,由于元数据服务器处的操作条件),则元数据服务器可以使用SRH将分组转发到SR列表中的下一跃点或分段(例如,下一元数据服务器)。接收分组的每个元数据服务器可以类似地决定是接受还是拒绝该分组,并根据该元数据服务器接受还是拒绝了该请求,来响应于客户端104或者将分组转发到SR列表中的下一跃点或分段(例如,下一元数据服务器)。以此方式,客户端104可以获得存储节点候选的列表,并且如本文所述在存储节点候选之一上存储或检索数据。
在某些情况下,当为客户端请求选择存储节点候选时,元数据服务器(112、114、116、122、124、126)可以针对该请求选择单个存储节点池(例如,130)或多个存储节点池(例如,130、140和/或150)。例如,假设元数据服务器112从客户端104接收并接受了指示将数据存储在分布式存储环境102上的意图的请求。元数据服务器112然后可以选择存储节点池130作为用于存储数据的请求的主存储节点池,并且选择存储节点池140和150作为用于数据的辅助存储节点池。可以选择辅助存储节点池来存储数据的副本。元数据服务器112可以向客户端104和/或接受存储请求的来自存储节点池130的存储节点提供存储节点池140中的存储节点候选的列表和存储节点池150中的存储节点候选的列表。
接受存储请求的来自存储节点池130的存储节点可以使用来自存储节点池140和150的存储节点候选的列表来将副本存储在存储节点池140和150上。例如,假设存储节点候选134接受来自客户端104的存储请求并存储从客户端104接收的数据。存储节点候选134可以将分组发送到包含SRH的存储节点池140,该SRH具有标识存储节点池140中的存储节点候选142、144、146的SR列表,并且将分组发送到包含SRH的存储节点池150,该SRH具有标识存储节点池150中的存储节点候选152、154、156的SR列表。分组中的SRH可以连续地引导分组通过与分组相关联的相应存储节点池(例如,一个分组的存储节点池140和另一分组的存储节点池150)中的存储节点。从存储节点候选134接收分组的每个存储节点可以基于其操作条件来接受或拒绝以存储副本。如果存储节点接受了该请求,则它可以从存储节点候选134获取并存储副本。如果存储节点拒绝了该请求,则它可以将分组转发到SR列表中的下一跃点或分段(例如,SR列表中的下一存储节点)。这样,存储节点候选134可以有效地将副本传播到辅助存储节点池(例如,140和150)。
在某些情况下,元数据服务器112可以将来自存储节点池140和150的存储节点候选的列表与来自存储节点池130的存储节点候选的列表一起提供给客户端104。客户端104可以使用来自存储节点池140和150的存储节点候选的列表来通知存储节点候选134将副本存储请求发送到哪里。然后,存储节点候选134可以使用列表将副本存储在存储节点池140和150上,如前所述。
此外,在某些情况下,客户端104可以使用来自存储节点池130、140和150的存储节点候选的列表来建立与多个存储节点的并行连接,以便执行与那些存储节点的存储操作。例如,客户端104可以使用SR喷射策略或操作来将分组复制到与来自存储节点池130、140和150的存储节点候选的列表相对应的多个SR列表。例如,客户端104可以从元数据服务器112接收存储节点池130、140和150的列表。客户端104可以使用列表将分组的副本发送到包括存储节点池130中的存储节点候选132、134、136的第一SR列表,包括存储节点池140中的存储节点候选142、144、146的第二SR列表,以及包括存储节点池150中的存储节点候选152、154、156的第三SR列表。基于分组的副本和先前描述的负载平衡方法,客户端104可以与来自存储节点池130、140和150的存储节点建立连接并执行与来自存储节点池130、140和150的存储节点的存储操作。客户端104可以并行建立这样的连接,并使用建立的连接将数据的副本存储在接受来自客户端104的存储请求的来自存储节点池130、140和150的那些存储节点上。
在其他示例中,存储节点候选134可以使用来自存储节点池140和150的存储节点候选的列表来建立与两个或更多个存储节点的并行连接,以便在这些存储节点上存储副本。例如,存储节点候选134可以使用SR喷射策略或操作来将分组复制到与来自存储节点池140和150的存储节点候选的列表相对应的多个SR列表。为了说明,存储节点候选134可以从元数据服务器112或客户端104获得存储节点池140和150的列表。存储节点候选134可以使用列表将分组的副本发送到包括存储节点池140中的存储节点候选142、144、146的第一SR列表,以及包括存储节点池150中的存储节点候选152、154、156的第二SR列表。基于分组的副本和先前描述的负载平衡方法,存储节点候选134可以与来自存储节点池140和150的存储节点建立连接并与来自存储节点池140和150的存储节点执行副本存储操作。存储节点候选134可以并行建立此类连接,并使用已建立的连接将副本存储在接受来自存储节点候选134的请求的来自存储节点池140和150的那些存储节点上。
图2示出了用于使用分段路由和负载平衡技术在分布式存储环境102中执行存储操作的示例流程200的图。在该示例中,客户端104向元数据服务器112发送请求202。请求202可以指示客户端104打算在分布式存储环境102上检索或存储数据。元数据服务器112接收请求202,并选择存储节点候选132、134、136作为用于存储操作的候选节点。元数据服务器112用标识存储节点候选132、134、136的SR列表204来响应于请求202。SR列表204可以将存储节点候选132标识为分段路由分组的第一分段,将存储节点候选134标识为第二分段,并将存储节点候选136标识为第三分段。
客户端104可以接收SR列表204并且向存储节点候选132、134、136发送请求206。请求206可以指示客户端104希望建立连接以存储或检索特定数据。可以基于包含SR列表204的SRH来将请求206路由到存储节点候选132、134、136,该SR列表204将存储节点候选132、134、136标识为分组的分段路由分段。每个接收到请求206的支持或能够支持SR的节点或路由器可以使用SRH和SR列表204将分组朝向存储节点候选132、134、136引导。
由于存储节点候选132是SR列表204中的第一分段,因此它将是接收请求206的第一存储节点。在接收到请求206之后,存储节点候选132可以基于其操作条件(例如,带宽、负载、容量、资源可用性、状态等)来确定是接受还是拒绝请求206。在该示例中,存储节点候选132拒绝208请求206。在拒绝请求206之后,存储节点候选132可以将请求206转发到SR列表204中的下一分段,下一分段在该示例中为存储节点候选134。存储节点候选134可以类似地确定是接受还是拒绝请求206。在该示例中,存储节点候选134拒绝210请求206,并将请求206转发到存储节点候选136,存储节点候选136是SR列表204中的最后一个分段。
存储节点候选136接收请求206并接受212请求206。存储节点候选136可以基于其操作条件来接受请求206。例如,存储节点候选136可以基于存储节点候选136具有足够(例如,在阈值之内,在负载或性能要求之内等)的容量、带宽、资源可用性的确定来接受请求206,或者可以以有限的延迟或在阈值性能之内以其他方式来处理请求206。在某些情况下,SR列表中的最后一个分段可以被强制接受它接收的请求,以避免这样的请求被完全拒绝。在该示例中,由于存储节点候选136是SR列表204中的最后一个分段,因此它可以被强制接受请求206,而不管其操作条件。
一旦存储节点候选136接受请求206,它就可以向客户端104发送响应214,指示存储节点候选136已经接受了请求206。基于响应214,客户端104可以与存储节点候选136建立连接,并且根据客户端104的意图,在存储节点候选136上存储或检索与请求206相关联的数据。一旦客户端104和存储节点候选136已经建立了连接,与请求206相关联的后续通信可以直接在客户端104和存储节点候选136之间发送;意思是,这样的通信不必通过存储节点候选132和134进行路由。
图3A示出了用于请求206的示例SRv6分组300。SRv6分组300包括有效载荷302、IPv6报头304和SRH 306。SRH 306可以包括分段字段306A中的SR列表204。SR列表204包含用于路由SRv6分组300的分段的列表,包括由元数据服务器112选择作为请求206的候选的存储节点候选132(SN1)、134(SN2)和136(SN3)。在一些情况下,SR列表204还可以包括每个分段的相应功能,如下面参考图3B进一步描述的。
SRH 306中的SR列表204可以由具有SR能力的(SR-capable)节点或路由器或者支持SR的节点或路由器使用,以将SRv6分组300引导至SR列表204中的目的地存储节点(例如,132、134、136)。SR列表204标识沿着用于SRv6分组300的路径的SR分段(例如,具有SR能力的节点)。每个具有SR能力的节点都可以维护在该节点处实例化的SR分段的列表。具有SR能力的节点可以使用其SR分段的列表来将分组路由到SR列表204中的下一分段。
分段字段306A还可以包括称为剩余分段(SL)计数器的计数器,该计数器标识活动分段。当SRv6分组300行进通过网络时,每次它被具有SR能力的节点接收时,计数器的值减小1。
IPv6报头304可以包括源地址字段310和目的地地址字段308。源地址字段310可以标识SRv6分组300的源,在该示例中,SRv6分组300的源是客户端104。源地址字段310可以包括SRv6分组300的原始源的网络地址,SRv6分组300的返回目的地,和/或SRv6分组300的当前源或发送者。源地址字段310还可以包括将由在源地址字段310中标识的节点实现的命令或功能,如将在下面进一步描述的。
目的地地址字段308可以标识来自SR列表204的下一分段或节点。在该示例中,目的地地址字段308标识存储节点候选132(SN1),它是SR列表204中的第一个目的地节点。目的地地址字段308可以用于将SRv6分组300引导到下一目的地。IPv6报头304中的目的地地址字段308可以允许SRv6分组300被路由,即使SRv6分组300遍历不支持SR的节点。
目的地地址字段308可以包括所标识的节点或分段的互联网协议(IP)地址或前缀。例如,目的地地址字段308可以包括存储节点候选132(SN1)的IPv6地址或前缀。这可以确保将SRv6分组300发送到作为SRv6分组300的第一个目的地的该节点或分段。在目的地地址字段308中的存储节点候选132(SN1)接收并处理了SRv6分组300之后,它可以将SRv6分组300转发到SR列表204中的下一分段,下一分段在该示例中为存储节点候选134(SN2)。在转发分组时,存储节点候选132(SN1)可以覆写IPv6报头304上的目的地地址字段308,以将存储节点候选134(SN2)标识为目的地,从而确保将SRv6分组300路由到存储节点候选134(SN2),即使SRv6分组300遍历不支持SR的节点。因此,存储节点候选134(SN2)可以基于目的地地址字段308和SR列表204来接收SRv6分组300。这样,SRH 306中的SR列表204以及IPv6报头304中的目的地地址字段308可以用于将SRv6分组300推送到SR列表204中的目的地节点。
如将进一步解释的,SR列表204和/或目的地地址字段308可以包括将由相关联的节点或分段实现的功能或命令(以下称为“SR功能”)。例如,目的地地址字段308可以标识存储节点候选132(SN1),并且包括将由存储节点候选132(SN1)应用的功能,例如连接功能。目的地地址字段308可以包含SRv6分组300的状态,包括分组的下一目的地,源或返回节点以及此类节点或分段的任何命令或功能。
类似地,SR列表204可以包括用于SR列表204中的分段的命令或功能。例如,SR列表204可以包括用于分段的连接功能,用于SR列表204中的最后一个分段的强制连接功能,用于一个或多个分段的一个或多个参数(例如,资源标识符、流标识符等)、状态信息等。
SR功能可以在SRH 306和/或IPv6报头304中直接对将由节点采取的动作进行编码。SR功能由具有SR能力的节点在本地执行。示例SR功能包括但不限于End功能(即,端点功能)、End.X功能(即,具有第3层(layer-3)交叉连接的端点功能)、End.T功能(即,具有特定IPv6表查找的端点功能)、End.S功能(即,在表T中搜索目标的端点)、End.B6功能(即,绑定到SRv6策略的端点)等。例如,在包含s::cj的SR报头(306)中,s::cj表示到节点s的路径和到邻居j的x连接功能(功能c)。
在某些情况下,分布式存储环境102中的存储节点(例如,132、134、136、142、144、146、152、154、156),存储节点池(例如,130、140、150),元数据服务器(例如,112、114、116、122、124、126),和/或元数据服务器池(例如,110、120)可以被分配完整的IPv6前缀。此外,前缀中的低位字节可以用于指定SR功能。在某些情况下,SR功能可能取决于SR列表204中的第一个分段的地址(例如,功能的“发送者”)。为了说明,当物理前缀为s的节点接收到具有包含(x,…,s::f,…)的SRH 306的分组时,SRH 306将触发节点s执行具有自变量x的函数f,表示为s.f(x)。
图3B示出了IPv6报头304中的目的地地址字段308的示例配置320。目的地地址字段308可以包括128位,在该示例中,可以将其进行分段以包括来自用于节点定位符324的前64位的第一分段322A和来自用于SR功能326的后64位的第二分段322B。节点定位符324可以在分组(例如,300)中包括下一分段或节点的IP地址或前缀。SR功能326可以包括与节点定位符324相关联的命令或功能。
尽管该示例示出了被分段为两个64位的分段的目的地地址字段308,但是应当注意,目的地地址字段308允许灵活的位选择,并且因此可以以其他方式被分段。例如,图3C示出了IPv6报头304中的目的地地址字段308的另一示例配置330。在该示例中,包括128位的目的地地址字段308被分段为包括来自用于节点定位符324的前64位的第一分段332,来自用于SR功能326的后32位的第二分段334,以及来自接下来的32位以包括用于SR功能326的任何自变量328的第三分段336。
在某些情况下,第三分段336可以进一步被分段为子分段,这些子分段可以包括用于SR功能326的自变量。自变量可以用于传递用于SR功能326的特定参数。
图4A示出了基于相应IPv6和SRv6报头402、404、406的请求206(例如,分组300)的示例流程400。在该示例中,客户端104将请求206(例如,分组300)发送到存储节点候选132(SN1)。请求206可以将客户端104标识为源地址,并且将存储节点候选132(SN1)标识为请求206的目的地地址。报头402中的SRv6报头可以包括SR列表204,其将存储节点候选132、134、136标识为目的地分段。可以在报头402中的SRv6报头还可以包括标识SR列表204中的剩余分段或跃点的数量的剩余分段(SL)计数器408。
存储节点候选132(SN1)可以接收请求206并确定是接受还是拒绝请求206。如果存储节点候选132(SN1)拒绝请求206,则它可以将请求206转发到SR列表204上的下一分段,下一分段在该示例中为存储节点候选134(SN2)。存储节点候选132(SN1)还可以减少标识SR列表204中的剩余分段或跃点的数量的SL计数器408。
存储节点候选134(SN2)可以从存储节点候选132(SN1)接收请求206,并确定是接受还是拒绝请求206。如果存储节点候选134(SN2)拒绝了请求206,则它可以将请求206转发到存储节点候选136(SN3),其是SR列表204中的最后一个分段。存储节点候选134(SN2)可以再次减少标识SR列表204中的剩余分段或跃点的数量的SL计数器408。
存储节点候选136(SN3)可以从存储节点候选134(SN2)接收请求206并对其进行处理。存储节点候选136(SN3)是SR列表204中的最后一个分段。因此,存储节点候选136(SN3)可以将SL计数器408减小到零,而无需将分组转发到另一目的地。
图4B示出了对请求206的响应214的示例流程420。当存储节点候选136(SN3)接收并接受由客户端104发送的请求206时,它将响应214发送到客户端104,以在客户端104和存储节点候选136(SN3)之间建立直接连接422。直接连接422允许客户端104和存储节点候选136(SN3)进行通信,而无需将其通信路由通过存储节点候选132和134。对客户端104的响应214可以包括包含响应214的数据或有效载荷的分组424,并将存储节点候选136(SN3)标识为源地址,而将客户端104标识为目的地地址。
图5A示出了用于使用分段路由和负载平衡技术在分布式存储环境102中存储数据和副本的示例流程500的图。在该示例中,数据和副本存储过程实现了存储节点池130、140、150,以在存储节点池130、140、150中的存储节点候选(例如,132、134、136、142、144、146、152、154、156)之间对数据和副本存储操作进行负载平衡。
如图所示,客户端104将请求202发送到元数据服务器112。请求202可以指示客户端104想要在分布式存储环境102上存储数据。在某些情况下,请求202可以包括复制因子,该复制因子指定要存储在分布式存储环境102上的数据的副本的数量。元数据服务器112接收请求202,并选择具有用于请求202的存储节点候选132、134、136的存储节点池130;具有存储节点候选142、144、146的存储节点池140;以及具有存储节点候选152、154、156的存储节点池150。在该示例中,选择存储节点池130作为客户端104用于存储数据的主存储节点池,并且选择存储节点池140和150作为用于存储数据的副本的辅助存储节点池。
元数据服务器112可以基于以下一个或多个因素来选择用于请求202的存储节点池(例如,130、140、150)、特定存储节点池(例如,130、140、150)的数量,存储节点池中的存储节点候选、和/或特定存储节点候选的数量和/或类型:例如,分布式存储环境102上的当前或预测的负载或业务的量;客户端104想要存储的数据的量、大小或类型;用于存储来自客户端104的数据的任何性能或服务质量(QoS)要求;要为数据存储的多个副本;与存储操作相关联的优先级;策略;分布式存储环境102中的存储节点的可用性;存储操作的任何特定处理要求;算法或负载平衡方案;客户端104的位置;定义应该选择的存储节点池和/或存储节点候选的数量(例如,最小、最大、默认或任何其他数量)和/或类型的一个或多个规则或参数;来自客户端104的指令或请求;数据的容错或冗余要求;和/或任何其他标准或方案。在某些情况下,元数据服务器112可以简单地随机选择特定存储节点池和/或存储节点候选的数量。
元数据服务器112利用标识由元数据服务器112选择或标识的存储节点池和存储节点候选的SR列表204来响应于请求202。在该示例中,SR列表204包括列表集合502,列表集合502标识包括与存储节点候选132、134、136相对应的分段的主存储节点池(130),包括与存储节点候选142、144、146相对应的分段的辅助存储节点池140,以及包括与存储节点候选152、154、156相对应的分段的辅助存储节点池150。在某些情况下,代替利用SR列表204进行响应,元数据服务器112可以利用标识由元数据服务器112选择或标识的存储节点池和存储节点候选的消息进行响应,客户端104或另一设备(例如,具有SR能力的路由器或节点)然后可以使用该消息以基于来自元数据服务器112的消息中标识的存储节点池和存储节点候选来创建包括SR列表204的SRH。
然后,客户端104可以将请求206发送到主存储节点池(130)中的存储节点候选132、134、136。可以基于包含SR列表204的SRH,将请求206路由到主存储节点池(130)中的存储节点候选132、134、136。如前所述,SR列表204可以引导分组通过主存储节点池(130)中的存储节点候选132、134、136。
在某些情况下,客户端104还可以使用列表集合502来通知主存储节点池(130)中接受请求206的存储节点包括存储节点候选142、144、146的存储节点池140和包括存储节点候选152、154、156的存储节点池150已经被选择用于或将被用于存储数据的副本。例如,客户端104可以在请求206中包括列表集合502或来自列表集合502的已经被选择用于存储副本的存储节点池和存储节点候选的指示。
然而,应当注意,在一些示例实现方式中,元数据服务器112可能不向客户端104提供用于辅助存储节点池(例如,140和150)的列表或信息,或向客户端104标识存储节点池140和150还被选择用于存储副本。例如,在某些情况下,元数据服务器112可能不向客户端104提供列表集合502或列表集合502中与辅助存储节点池(例如,140和150)相对应的列表。替代地,元数据服务器112可以向客户端104提供标识存储节点池130和存储节点池130中的存储节点候选(例如,132、134、136)的列表。在此,SR列表204可以仅包括与存储节点池130中的存储节点候选132、134、136相对应的分段的一个列表。在这样的示例实现方式中,元数据服务器112可以替代地将用于辅助存储节点池(例如,140和150)的列表提供给存储节点池130中最终接受来自客户端104的请求206的存储节点,存储节点然后可以使用该列表来将副本存储在来自辅助存储节点池(例如,140和150)的多个存储节点候选中。因此,当将副本的存储卸载到存储节点池130中最终接受来自客户端104的请求206的存储节点时,可以通过客户端104(例如,在诸如请求206之类的消息内)或元数据服务器112本身将用于辅助存储节点池(例如,140和150)的SR列表提供给该存储节点。
在客户端104发送请求206之后,基于SR列表204使用分段路由来路由请求206。由于存储节点候选132是SR列表204中的第一分段,因此它将是存储节点池130中用于接收请求206的第一存储节点候选。在接收到请求206之后,存储节点候选132可以基于其操作条件(例如,带宽、负载、容量、资源可用性、状态等)来确定是接受还是拒绝请求206。在该示例中,存储节点候选132拒绝请求206。存储节点候选132可以拒绝请求206,因为例如它过载,它处理请求206的带宽或容量有限,它正在忙于处理其他操作或请求,它不能满足用于存储与请求206相关联的数据的某些性能或其他要求,和/或可能影响用于存储与请求206相关联的数据的性能或容量的任何其他原因或条件。
在拒绝请求206之后,存储节点候选132将请求206转发到SR列表204中的下一分段,下一分段在该示例中为存储节点候选134。存储节点候选134可以类似地确定是接受还是拒绝请求206。在该示例中,存储节点候选134接受请求206。存储节点候选134可以基于其操作条件来接受请求206。例如,存储节点候选134可以基于以下确定来接受请求206:存储节点候选134具有足够的(例如,在阈值之内,在负载或性能要求之内等)容量,带宽,资源可用性,或者可以以有限的延迟、在阈值性能之内或在一个或多个特定要求之内(例如,QoS要求、优先级、偏好等)以其他方式来处理请求206。由于存储节点候选134已经接受请求206,因此它不必将请求206转发到SR列表204中的下一分段,下一分段在该示例中为存储节点候选136。
一旦存储节点候选134接受请求206,它就可以向客户端104发送响应,指示存储节点候选134已经接受请求206。客户端104和存储节点候选134可以建立连接以将数据存储在存储节点候选134上。在接受请求206之后,存储节点候选134还可以发起用于将数据的副本存储在辅助存储节点池(140和150)中的过程。
为了将数据的副本存储在辅助存储节点池(140和150)中,存储节点候选134将副本请求504发送到存储节点池140,并将副本请求506发送到存储节点池150。副本请求504可以包括具有标识存储节点池140中的存储节点候选142、144、146的SR列表的SRH。该SR列表可以用于使用如前所述的分段路由来引导副本请求504通过存储节点候选142、144、146。类似地,副本请求506可以包括具有标识存储节点池150中的存储节点候选152、154、156的SR列表的SRH,该SR列表可以用于使用分段路由来引导副本请求506通过存储节点候选152、154、156。
当存储节点候选134发送副本请求504时,该副本请求被路由到SR列表中与副本请求504相关联的第一分段。由于存储节点候选142是SR列表中与副本请求504相关联的第一分段,因此它将是存储节点池140中用于接收副本请求504的第一存储节点候选。在接收到副本请求504之后,存储节点候选142可以基于其操作条件(例如,带宽、负载、容量、资源可用性、状态等)来确定是接受还是拒绝副本请求504。在该示例中,存储节点候选142基于其操作条件(例如,由于低带宽、高负载、容量不足、缺乏资源可用性、特定状态等)来拒绝副本请求504。在拒绝副本请求504之后,存储节点候选142将副本请求504转发到SR列表中的下一分段,下一分段在该示例中为存储节点候选144。存储节点候选144可以类似地基于其操作条件来确定是接受还是拒绝副本请求504。在该示例中,存储节点候选144接受副本请求504。
在某些情况下,由于存储节点候选144已经接受了副本请求504,因此它可能不将副本请求504转发到SR列表中的下一分段,下一分段在该示例中为存储节点候选146。然而,在其他情况下,存储节点候选144仍然可以将副本请求504的副本转发到SR列表中的下一分段(例如,存储节点候选146),以便尝试将附加副本存储在存储节点池140中。例如,副本请求504可以指示两个副本应当存储在存储节点池140中。因此,存储节点候选144可以确定需要将另一副本存储在存储节点池140中。例如,存储节点候选144可以确定它是存储节点池140中已经接受存储副本的唯一存储节点(例如,基于消息中的信息,例如来自存储节点候选132的副本请求504,基于存储节点候选144对存储节点候选132和/或存储节点候选134的查询等),并且第二副本应当被存储在存储节点池140中的另一个存储节点上。
在某些情况下,一旦存储节点候选144接受副本请求504,它就向存储节点候选134发送响应,指示存储节点候选144已经接受副本请求504。存储节点候选134和存储节点候选144可以建立连接以将副本存储在存储节点候选144上。
此外,当存储节点候选134将副本请求506发送到存储节点池150时,副本请求506被路由到SR列表中与副本请求506相关联的第一分段。由于存储节点候选152是SR列表中与副本请求506相关联的第一分段,因此它将是存储节点池150中用于接收副本请求506的第一存储节点候选。在接收到副本请求506之后,存储节点候选152可以基于其操作条件(例如,带宽、负载、容量、资源可用性、状态等)来确定是接受还是拒绝副本请求506。在该示例中,存储节点候选152拒绝副本请求506。在拒绝副本请求506之后,存储节点候选152将副本请求506转发到SR列表中的下一分段,下一分段在该示例中为存储节点候选154。存储节点候选154可以类似地基于其操作条件来确定是接受还是拒接副本请求506。在该示例中,存储节点候选154拒绝副本请求506,并且因此将副本请求506转发到SR列表中的下一分段,下一分段在该示例中为存储节点候选156。
然后,存储节点候选156接收副本请求506,并基于其操作条件来确定是接受还是拒绝副本请求506。在该示例中,存储节点候选156接受副本请求506。在某些情况下,请求(例如,副本请求506)的SR列表中的最后一个分段可以被迫接受该请求。因此,由于存储节点候选156是SR列表中与副本请求506相关联的最后一个分段,因此在这样的实现方式中,它可以被迫接受副本请求506。在此,存储节点候选156可以接受副本请求506,而不管其操作条件如何。
在某些情况下,一旦存储节点候选156接受副本请求506,它就向存储节点候选134发送响应,指示存储节点候选156已经接受了副本请求506。存储节点候选134和存储节点候选156可以建立连接以将副本存储在存储节点候选156上。
当流程500完成时,与来自客户端104的请求206相关联的数据将被存储在存储节点池130中的存储节点候选134上,并且数据的副本将被存储在存储节点池140中的存储节点候选144和存储节点池150中的存储节点候选156上。通过使用SR列表和分段路由来存储数据和副本,并允许每个存储节点候选基于其操作条件在本地接受或拒绝存储操作,该机制可以减少在分布式存储环境102中存储和复制数据的延迟,最大程度地利用分布式存储环境102中的资源,并优化存储操作和请求的性能和处理。
图5B示出了用于使用SR喷射策略544在分布式存储环境102中存储数据的示例流程540的图。在该示例中,客户端104使用SR喷射策略544来建立与存储节点池130、140、150中的多个存储节点(例如,132、134、136、142、144、146、152、154、156)的并行连接,用于将数据的副本存储在存储节点池130、140、150中的多个存储节点中。然而,在其他示例中,诸如SR喷射策略544之类的SR喷射策略可以替代地由以下存储节点来实现:该存储节点接受来自客户端104的用于存储数据的请求,以便与多个存储节点建立并行连接以存储来自客户端104的数据的副本。由存储节点使用SR喷射策略来建立并行连接并存储副本的流程可以类似于由客户端104实现的流程540,如下所述。
如图所示,客户端104向元数据服务器112发送请求202,指示客户端104想要在分布式存储环境102上存储数据。在某些情况下,请求202可以包括复制因子,该复制因子指定要存储在分布式存储环境102上的数据的副本的数量。元数据服务器112接收请求202,并选择具有用于请求202的存储节点候选132、134、136的存储节点池130;具有存储节点候选142、144、146的存储节点池140;以及具有存储节点候选152、154、156的存储节点池150。
元数据服务器112利用标识由元数据服务器112选择或标识的存储节点池和存储节点候选的SR列表542来响应于请求202。在该示例中,SR列表542包括SR喷射策略544和SR列表546、548和550。SR喷射策略544可以提供指令,用于将存储操作请求的重复副本路由到SR列表546、548和550,以便与多个存储节点建立并行连接并在那些存储节点处执行所请求的存储操作。
SR列表546、548和550可以分别标识存储节点池130,包括与存储节点池130中的存储节点候选132、134、136相对应的分段;存储节点池140,包括与存储节点池140中的存储节点候选142、144、146相对应的分段;以及存储节点池150,包括与存储节点池150中的存储节点候选152、154、156相对应的分段。在某些情况下,代替利用SR列表546、548和550进行响应,元数据服务器112可以利用标识由元数据服务器112选择或标识的存储节点池和存储节点候选的消息进行响应,客户端104或另一设备(例如,具有SR能力的路由器或节点)然后可以使用该消息来创建SRH,该SRH包括用于SR喷射策略544的SR列表546、548和550。
一旦客户端104从元数据服务器112接收到响应,它就可以将请求552A、552B、552C发送到存储节点池130、140和150。例如,客户端104可以发送可以基于SR喷射策略544被复制的请求分组,以形成用于存储节点池130、140和150的请求552A、552B、552C。然后可以基于存储节点池130、140和150的各自的SR列表(例如,SR列表546、548、550)将请求552A、552B、552C路由到存储节点池130、140和150。例如,可以基于包括SR列表546的SRH将请求552A路由到存储节点池130,可以基于包括SR列表548的SRH将请求552B路由到存储节点池140,并且可以基于包括SR列表550的SRH将请求552C路由到存储节点池150。
请求552A首先由存储节点池130中的存储节点候选132接收,存储节点候选132是SR列表546中的第一分段。然后,存储节点候选132可以基于其操作条件来决定是接受还是拒绝请求552A。如果存储节点候选132拒绝请求552A,则将其转发到SR列表546中的下一分段,下一分段在此情况下为存储节点候选134。然后,存储节点候选134决定是接受还是拒绝请求552A。如果存储节点候选134拒绝请求552A,则将其转发到SR列表546中的下一分段,下一分段在此情况下为存储节点候选136。存储节点候选136是SR列表546中的最后一个分段,因此,在某些情况下,它可能被迫接受请求552A。
请求552B首先由存储节点池140中的存储节点候选142接收,存储节点候选142是SR列表548中的第一分段。然后,存储节点候选142可以基于其操作条件来决定是接受还是拒绝请求552B。如果存储节点候选142拒绝请求552B,则将其转发到SR列表548中的下一分段,下一分段在此情况下为存储节点候选144。然后,存储节点候选144决定是接受还是拒绝请求552B。如果存储节点候选144拒绝请求552B,则将其转发到SR列表548中的下一分段,下一分段在此情况下为存储节点候选146。存储节点候选146是SR列表548中的最后一个分段,因此,在某些情况下,它可能被迫接受请求552B。
请求552C首先由存储节点池150中的存储节点候选152接收,存储节点候选152是SR列表550中的第一分段。然后,存储节点候选152可以基于其操作条件来决定是接受还是拒绝请求552C。如果存储节点候选152拒绝请求552C,则将其转发到SR列表550中的下一分段,下一分段在此情况下为存储节点候选154。然后,存储节点候选154决定是接受还是拒绝请求552C。如果存储节点候选154拒绝请求552C,则将其转发到SR列表550中的下一分段,下一分段在此情况下为存储节点候选156。存储节点候选156是SR列表550中的最后一个分段,因此,在某些情况下,它可能被迫接受请求552C。
在上面的示例中,请求552A中的SR列表546、请求552B中的SR列表548和请求552C中的SR列表550包括与(和每个请求相关联的)相应存储节点池(例如,130、140、150)中的每个存储节点相对应的相应分段。然而,在其他实现方式中,请求中的SR列表(例如,请求552A中的SR列表546,请求552B中的SR列表548和/或请求552C中的SR列表550)可以包括对应于与(和请求相关联的)特定存储节点池中的多个(或所有)存储节点候选(例如,存储节点池130中的存储节点候选132、134、136)相关联的多播地址或前缀的分段。
例如,在某些情况下,请求552A中的SR列表546可以包括与具有SR能力的节点或路由器相对应的一个或多个分段,用于将请求引导到与和存储节点池130和/或存储节点池130中的存储节点候选132、134、136相关联的多播地址或IPv6前缀相对应的最后一个分段。这样,当请求552A到达SR列表546中的倒数第二个分段,并且与该分段相对应的具有SR能力的节点或路由器将请求转发到最后一个分段时,请求552A将被发送到所有与多播地址或IPv6前缀相关联的存储节点(例如,存储节点池130中的存储节点候选132、134、136)。然后,存储节点(例如,存储节点池130中的存储节点候选132、134、136)可以接收请求552A,并且每个存储节点可以决定是接受还是拒绝请求。在某些情况下,如果多个存储节点接受请求,则客户端104可以建立到那些存储节点的连接,并将数据的副本存储在那些存储节点处。
图6A示出了用于使用与分配给内容的地址相对应的SR分段将数据请求直接路由到分布式存储环境102中的内容的示例流程600的图。在该示例中,内容项610的副本被存储在存储节点候选132、134和136中,并且每个副本已经分配或分配了特定的网络地址。例如,存储在存储节点候选132处的内容项610的副本具有网络地址602,存储在存储节点候选134处的内容项610的副本具有网络地址604,并且存储在存储节点候选136处的内容项610的副本具有网络地址606。网络地址602、604、606可以是例如IPv6地址。存储节点候选132、134和136还可以存储可以类似地具有相应网络地址(例如,614、620、626)的其他内容(例如,612、618、624)。
来自客户端104的请求206中的SRH 306可以包括网络地址602、604、606,其代表用于请求206的分段的列表。与存储节点候选132处的内容项610相对应的网络地址602可以代表第一分段,与存储节点候选134处的内容项610相对应的网络地址604可以代表第二分段,以及与存储节点候选136处的内容项610相对应的网络地址606可以代表最后的分段。可以将请求206的IPv6报头304中的目的地地址308设置为SRH 306中的第一分段,在该示例中为网络地址602。
基于SRH 306中的分段的列表,首先将请求206路由到网络地址602,网络地址602对应于存储节点候选132上的内容项610。在该示例中,存储节点候选132具有为其指定或分配的前缀608,其可以用于将网络业务路由到存储节点候选132。网络地址602可以在前缀608内,也可以在前缀608中的IP地址范围内。因此,发送到网络地址602的通信(例如,请求206)将被路由到存储节点候选132,从而允许存储节点候选132接收并处理寻址到存储节点候选132上的内容项610的网络地址602的通信。因此,当基于SRH 306将请求206转发到网络地址602时,存储节点候选132可以基于存储节点候选132的操作条件来接收请求206并确定是接受还是拒绝请求206。
在该示例中,存储节点候选132拒绝请求206,并且因此将其转发到SRH 306中的下一分段,下一分段在该示例中为与存储节点候选134上的内容项610相对应的网络地址604。存储节点候选134被分配或指定了前缀616。网络地址604可以在前缀616内,也可以在前缀616中的IP地址范围内。因此,发送到网络地址604的通信(例如,请求206)将被路由到存储节点候选134,从而允许存储节点候选134接收并处理寻址到存储节点候选134上的内容项610的网络地址604的通信。因此,当存储节点候选132将请求206转发到网络地址604时,存储节点候选134可以接收请求206,并基于存储节点候选134的操作条件来确定是接受还是拒绝请求206。
在该示例中,存储节点候选134拒绝请求206,并且因此将其转发到SRH 306中的最后一个分段,它在该示例中为与存储节点候选136上的内容项610相对应的网络地址606。存储节点候选136被分配或指定了前缀622。网络地址606可以在前缀622内,也可以在前缀622中的IP地址范围内。因此,发送到网络地址606的通信(例如,请求206)将被路由到存储节点候选136,从而允许存储节点候选136接收并处理寻址到存储节点候选136上的内容项610的网络地址606的通信。因此,当存储节点候选134将请求206转发到网络地址606时,存储节点候选136可以接收请求206,并基于存储节点候选136的操作条件来确定是接受还是拒绝请求206。在某些情况下,由于网络地址606是SRH 306中的最后一个分段,因此存储节点候选136可以被迫接受请求206。
图6B示出了用于使用与分配给内容的地址相对应的SR分段将数据请求直接路由到内容的另一示例流程640的图。在该示例中,将存储节点候选132、134和136分组到存储节点池130中,并且为存储节点池130分配前缀642。此外,将请求206寻址到与存储节点池130中的存储节点候选132、134、136上的内容项610相对应的网络地址602、604、606。与存储节点候选132上的内容项610相对应的网络地址602是请求206的SRH 306上的分段的列表中的第一分段。因此,首先将请求206路由到存储节点候选132上的内容项610(例如,网络地址602)。
网络地址602可以在前缀642内或在前缀642内的IP地址范围内。在一些情况下,还可以为存储节点候选132、134和136指定或分配与前缀642重叠的前缀。因此,前缀642可以形成例如超网(supernet)。发送到网络地址602的通信(例如,请求206)将随后被路由到存储节点候选132,从而允许存储节点候选132接收并处理寻址到存储节点候选132上的内容项610的网络地址602的通信。因此,当请求206被转发到网络地址602时,存储节点候选132可以接收请求206并且基于存储节点候选132的操作条件来确定是接受还是拒绝请求206。
在该示例中,存储节点候选132拒绝请求206,并且因此将其转发到SRH 306中的下一分段,下一分段在该示例中为与存储节点候选134上的内容项610相对应的网络地址604。存储节点候选134被分配或指定了前缀616。网络地址604可以在前缀642内,也可以在前缀642中的IP地址范围内。因此,发送到网络地址604的请求206可以被路由到存储节点候选134,从而允许存储节点候选134接收并处理发送到网络地址604的请求206。因此,当存储节点候选132将请求206转发到网络地址604时,存储节点候选134可以接收请求206,并基于存储节点候选134的操作条件来确定是接受还是拒绝请求206。
在该示例中,存储节点候选134拒绝请求206,并且因此将其转发到SRH 306中的最后一个分段,最后一个分段在该示例中为与存储节点候选136上的内容项610相对应的网络地址606。网络地址606可以在前缀642内,也可以在前缀642的IP地址范围内。因此,发送到网络地址606的请求206将被路由到存储节点候选136,从而允许存储节点候选136接收并处理该请求206。因此,当存储节点候选134将请求206转发到网络地址606时,存储节点候选136可以接收请求206,并基于存储节点候选136的操作条件来确定是接受还是拒绝请求206。在某些情况下,由于网络地址606是请求206的SRH 306中的最后一个分段,因此存储节点候选136可以被迫接受请求206。
图7示出了用于使用分段路由在元数据服务器池110中的元数据服务器112、114、116之间对请求202进行负载平衡的流程700。在该示例中,客户端104将请求202发送到元数据服务器池110。请求202可以包括SR列表,该SR列表标识与元数据服务器池110中的元数据服务器112、114、116相对应的分段。
请求202被路由到请求202中的SR列表的第一分段并由其接收,第一分段在该示例中为元数据服务器112。元数据服务器112接收请求202,并基于其操作条件来确定是接受还是拒绝请求202。在该示例中,元数据服务器112拒绝请求202,并且因此将其转发到SR列表中的下一分段,下一分段在该示例中为元数据服务器114。
元数据服务器114接收请求202,并且类似地确定是接受还是拒绝请求202。在该示例中,元数据服务器114拒绝请求202,并将其转发到SR列表中的下一分段,下一分段在该示例中为元数据服务器116。元数据服务器116是SR列表中的最后一个分段,并且可以被强迫接受请求202。因此,元数据服务器116接受请求202,并响应于请求202而将SR列表204发送到客户端104。如前所述,SR列表204可以标识一个或多个存储节点池和/或存储节点候选,客户端104然后可以使用该SR列表204来发送存储操作请求(例如,请求206),如本文所述。
在描述了示例系统和概念之后,本公开现在转向图8A至图8C所示的示例方法800、820、840。为了清楚起见,参考图1中所示的客户端104、106、108和分布式存储环境102来描述方法800、820、840中的步骤。
图8A示出了用于使用分段路由和负载平衡在分布式存储环境102中存储数据的示例方法800。在步骤802,元数据服务器112可以从客户端(例如,104、106、108)接收标识用于在分布式存储环境102上存储数据的意图的消息(例如,请求202)。在步骤804,元数据服务器112可以向客户端(例如,104、106、108)发送标识用于存储数据的多个存储节点候选(例如,132、134、136、142、144、146、152、154、156)的SR列表(例如,SR列表204)。例如,在某些情况下,元数据服务器112可以从客户端接收请求在分布式存储环境102上存储数据的消息。响应于来自客户端的消息,元数据服务器112可以选择或标识用于在分布式存储环境102上存储数据的存储节点候选,并且向客户端发送标识存储节点候选的SR列表。客户端可以使用SR列表以使用分段路由(例如,SRv6)通过存储节点候选来路由或引导存储请求。
在步骤806,该方法可以包括基于与存储请求相关联的分段路由报头(SRH)来引导或路由由客户端发送的存储请求(例如,请求206)通过由SR列表(例如,SR列表204)定义的路径。例如,客户端可以发送包括SRH的存储请求分组,该SRH具有标识存储节点候选的SR列表。SRH可以引导存储请求分组通过包括存储节点候选的路径,直到来自存储节点候选的存储节点接受该存储请求为止。接收存储请求分组的每个具有SR能力的节点或路由器可以将分组转发到SR列表中的下一分段。
例如,可以将存储请求分组路由到SR列表中的第一存储节点候选,其参考SR列表中的第一分段和/或相对于与其他存储节点候选相对应的分段的SR列表中的第一分段。在接收到存储请求分组之后,第一存储节点决定是接受还是拒绝来自存储请求分组的请求。第一存储节点可以基于一个或多个因素(例如,本地操作条件(例如,带宽、容量、负载、状态、性能、资源可用性等)、请求的类型、与请求相关联的数据类型、与请求相关联的任何偏好或要求(例如,QoS要求、优先级等)等)来确定是接受还是拒绝该请求。
如果第一存储节点拒绝该请求,则其将存储请求分组转发到SR列表中的下一分段,其为下一存储节点候选。下一存储节点候选类似地基于一个或多个因素(例如,操作条件)来决定是接受还是拒绝存储请求。如果下一存储节点拒绝该请求,则它将存储请求分组转发到SR列表中的下一分段,其是另一存储节点候选。存储请求分组将继续遍历SR列表中的存储节点候选的路径,直到该请求被存储节点候选接受为止。每个存储节点候选可以基于一个或多个因素(例如,本地操作条件(例如,带宽、容量、负载、状态、性能、资源可用性等)、请求的类型、与请求相关联的数据类型、与请求相关联的任何偏好或要求(例如,QoS要求、优先级等)等)来确定是接受还是拒绝存储请求。在某些情况下,如果请求到达最后一个存储节点候选(例如,SR列表中的最后一个分段)而未被接受,则可能要求最后一个存储节点候选接受该请求,以避免该请求被完全拒绝或丢弃。
在步骤808,当存储节点(例如,132、134、136、142、144、146、152、154或156)接受该请求时,该存储节点可以向客户端发送对请求的响应(例如,响应214),指示存储节点已经接受了来自客户端的请求。一旦存储节点接受了请求,客户端和存储节点就可以建立连接以将数据存储在存储节点上。在步骤810,接受请求的存储节点然后可以存储来自客户端的数据。如先前所解释的,存储节点可以基于存储节点处的操作条件来接受存储请求。这可以例如通过增加请求将由具有针对该特定请求的足够带宽和容量的存储节点来处理的可能性,并且例如降低请求将由具有低带宽或过载条件的存储节点来处理的可能性,来帮助减少存储延迟。
在某些情况下,当在步骤802,元数据服务器112从客户端接收消息时,元数据服务器112可以选择一个或多个存储节点池(例如,130、140和/或150)来将数据存储在分布式存储环境102上。例如,元数据服务器112可以选择用于存储数据的主存储节点池(例如,130)以及用于存储数据的多个副本的一个或多个辅助存储节点池(例如,140和/或150)。主存储节点池可以包括例如先前描述的SR列表中的多个存储节点候选。可以基于要存储的数据的副本的数量来选择一个或多个辅助存储节点池和/或一个或多个辅助存储节点池中的存储节点候选的数量。副本的数量可以基于例如复制因子来确定。复制因子可以标识或请求要为数据存储的副本的数量。在某些情况下,复制因子可以在从客户端接收的消息中提供,或者由元数据服务器112基于一个或多个标准(例如,数据的类型、数据的优先级、可用资源、数据的容错或冗余规则、默认副本规则、最小和/或最大副本规则、QoS要求等)来确定。
在一些示例中,元数据服务器112可以生成或获得与主存储节点池和一个或多个辅助存储节点池相关联的多个SR列表(例如,502)。例如,元数据服务器112创建标识主存储节点池(例如,130)中的存储节点候选的第一列表,标识第一辅助存储节点池(例如,140)中的存储节点候选的第二列表以及标识第二辅助存储节点池(例如,150)中的存储节点候选的第三列表。第二列表和第三列表可以用于路由请求以将副本存储在第一辅助存储节点池和第二辅助存储节点池(例如,140和150)上。例如,元数据服务器112可以标识第一辅助存储节点池和第二辅助存储节点池(例如,140和150)中的存储节点候选,并将第二列表和第三列表提供给接受存储请求的存储节点以用于存储副本。在某些情况下,元数据服务器112可以将第二列表和第三列表提供给客户端,并且客户端可以将第二列表和第三列表提供给接受存储请求的存储节点(例如,经由存储请求本身或通过单独的消息)。
接受来自客户端的请求的存储节点可以利用标识与第二列表和第三列表相对应的分段的SRH来发送副本存储请求(例如,504和506)。如前所述,副本存储请求可以基于SRH被路由通过第一辅助存储节点池和第二辅助存储节点池,并由每个接收者存储节点候选进行处理(例如,接受或拒绝)。例如,接受来自客户端的请求的存储节点可以向第一辅助存储节点池(例如,140)发送第一副本请求(例如,副本请求504),以将多个副本的第一部分存储在第一辅助存储节点池中的一个或多个存储节点候选上。存储节点还可以向第二辅助存储节点池(例如,150)发送第二副本请求(例如,副本请求506),以将多个副本的第二部分存储在第二辅助存储节点池中的一个或多个存储节点候选上。
第一副本请求可以包括具有标识第一辅助存储节点池(例如,140)中的存储节点候选的SR列表(例如,第二列表)的SRH,并且第二副本请求可以包括具有标识第二辅助存储节点池(例如,150)中的存储节点候选的SR列表(例如,第三列表)的SRH。第一副本请求中的SRH可以使第一请求被路由通过包括SRH中的SR列表的路径(即,通过第一辅助存储节点池中的每个存储节点候选的路径),直到第一辅助存储节点池中的一个或多个存储节点候选接受该请求为止。类似地,第二副本请求中的SRH可以使第二副本请求被路由通过包括SRH中的SR列表的路径(即,通过第二辅助存储节点池中的每个存储节点候选的路径),直到第二辅助存储节点池中的一个或多个存储节点候选接受该请求为止。
存储节点可以从第一辅助存储节点池中的一个或多个存储节点候选接收对第一副本请求的接受,并从第二辅助存储节点池中的一个或多个存储节点候选接收对第二副本请求的接受。例如,存储节点可以从第一辅助存储节点池和第二辅助存储节点池中接受第一副本请求和第二副本请求的那些存储节点候选接收对第一副本请求和第二副本请求的接受。存储节点可以与接受第一副本请求和第二副本请求的那些存储节点建立连接,并将副本的第一部分存储在第一辅助存储节点池中已接受第一副本请求的那些存储节点上,并将副本的第二部分存储在第二辅助存储节点池中已接受第二副本请求的那些存储节点上。因此,存储节点可以使用由元数据服务器112选择的存储节点候选的第二列表和第三列表来建立与辅助存储节点池上的存储节点的连接,并在那些存储节点上存储多个副本。
在其他示例中,如步骤806中所述,接受来自客户端的请求的存储节点可以使用与从客户端接收的请求(例如,请求206)相关联的相同SR列表(例如,SR列表204),将数据复制到其他存储节点。例如,存储节点可以使用复制因子来确定要存储多少个副本。复制因子可以指示要存储的副本的数量。复制因子可以被存储节点知道,从另一设备(例如,客户端或元数据服务器)接收,也可以在SR列表中明确地指出(例如,通过将其编码在SR列表中的地址或分段中)。
当存储节点接受来自客户端的请求时,它可以创建并存储第一副本。然后,存储节点可以使用SR列表中的剩余分段(例如,SR列表中在尚未接收到来自客户端的请求或者不是活动分段的存储节点之后的分段)作为用于存储多个副本的存储节点候选的列表。存储节点可以使用如前所述的分段路由来将副本请求转发到用于存储多个副本的存储节点候选的列表中的每个存储节点候选(即,列表中的每个分段)。如本文所述,接收副本请求的每个存储节点候选可以决定是接受还是拒绝副本请求,并且如果该存储节点拒绝副本请求,则将该副本请求转发到列表中的下一分段。
由于复制因子是已知的(或以其他方式编码在SR列表中),为了避免创建不必要或不需要的副本,指示已经创建副本(例如,由接受来自客户端的请求的存储节点创建的副本)的信息和/或复制因子可以被传递到被标识为存储多个副本的存储节点候选的列表中的任何存储节点候选(例如,来自客户端的请求中的SR列表中的剩余分段)。这样,当存储节点候选接收到副本请求时,它可以确定是否所有数量的副本都已经被存储在相应的存储节点上,并且如果是的话,则存储节点可以拒绝该副本请求以避免超过复制因子定义的副本的数量。
此外,在某些情况下,在SR列表中的剩余分段的数量等于由复制因子定义的副本的数量时,来自客户端的请求的SR列表中没有存储节点候选接受来自客户端的请求的情况下,与那些分段(即,SR列表中的剩余分段的数量)相对应的存储节点候选可以被迫接受请求,以确保按复制因子指定的方式来存储多个副本。类似地,在某些情况下,当存储节点接受来自客户端的初始请求并随后发送副本存储请求以将多个副本存储在其他存储节点上时,如果必要的话,被标识为存储多个副本的存储节点候选的列表中的一个或多个存储节点候选(例如,来自客户端的请求中的SR列表的剩余分段)可以被迫接受副本请求,以便能够存储由复制因子定义的副本的数量。例如,当副本存储请求被路由通过SR列表中的剩余分段时,如果SR列表中的剩余存储节点候选(即,SR列表中的剩余分段)的数量等于要存储的剩余副本的数量,则SR列表中的剩余存储节点候选的数量可以被迫接受副本存储请求以确保满足复制因子。
在某些情况下,为了将数据副本存储在分布式存储环境102上,该方法可以包括使用SR喷射操作或策略(例如,544)将副本存储请求复制到不同的存储节点候选和/或池,并与多个存储节点建立并行连接。例如,元数据服务器112可以如上所述标识存储节点候选的多个列表,并将列表提供给客户端或接受来自客户端的请求的存储节点。多个列表可以包括第二SR列表,该第二SR列表标识第一辅助存储节点池(例如,140)中的存储节点候选。在某些情况下,多个列表还可以包括第三SR列表,该第三SR列表标识第二辅助存储节点池(例如,150)中的存储节点候选。客户端或存储节点可以使用SR喷射操作或策略以使用第二SR列表和/或第三SR列表来存储数据副本。
为了说明,客户端或存储节点可以发送基于SR喷射操作或策略重复的分组,以形成存储请求的第一副本和存储请求的第二副本。SR喷射操作或策略可以包括用于将第一副本和第二副本路由到第二SR列表和第三SR列表的指令。第一副本可以包括具有第二SR列表的SRH,并且第二副本可以包括具有第三SR列表的SRH。可以基于SRH中的第二SR列表来将第一副本路由到第一辅助存储节点池中的存储节点候选,并且可以基于SRH中的第三SR列表来将第二副本路由到第二辅助存储节点池中的存储节点候选。
SR喷射操作或策略可以配置第二SR列表和第三SR列表以将第一副本和第二副本连续地路由通过第一辅助存储节点池和第二辅助存储节点池中的存储节点候选,或者以其他方式将第一副本和第二副本路由到第一SR列表和第二SR列表中的第一相应跃点,并指示第一相应跃点将第一副本和第二副本分别多播到第一辅助存储节点池和第二辅助存储节点池。
客户端或存储节点可以从第一辅助存储节点池和/或第二辅助存储节点池中的已接收第一副本或第二副本并已接受第一副本或第二副本中的请求的那些存储节点接收对存储请求的接受。反过来,客户端或存储节点可以与那些存储节点建立并行连接,以将数据副本存储在那些存储节点处。
图8B示出了用于使用分段路由和负载平衡在分布式存储环境102中检索数据的示例方法820。在步骤822,元数据服务器112可以从客户端(例如,104、106或108)接收消息(例如,202),该消息标识在分布式存储环境102上检索数据内容的意图。元数据服务器112可以跟踪每个数据副本在分布式存储环境102中的存储位置,并使用该信息来标识哪些存储节点具有客户端请求的数据内容的副本。例如,元数据服务器112可以维护分布式存储环境102上的哪些存储节点具有所请求的数据内容的副本的记录,并使用该信息为来自客户端的数据内容请求选择存储节点候选。
在步骤824,元数据服务器112可以向客户端发送标识包含数据内容的一组存储节点的SR列表(例如,204)。例如,元数据服务器可以向客户端发送与由元数据服务器112为数据内容请求选择的一组存储节点候选相对应的分段列表,其包括分布式存储环境102中具有客户端可能能够检索的数据内容的副本的存储节点的至少一部分。
在步骤826,该方法然后可以包括基于数据请求中的SRH,引导来自客户端的数据请求(例如,206)通过包括标识一组存储节点的SR列表的路径。SRH可以包括SR列表,并且可以配置为引导数据请求通过路径,直到一组存储节点中的一个接受该数据请求为止。如前所述,当数据请求行进通过一组存储节点时,每个接收存储节点都可以基于存储节点处的操作条件来决定是接受还是拒绝数据请求。
在步骤828,当存储节点接受数据请求时,它向客户端发送该存储节点已经接受来自客户端的数据请求的指示(例如,响应214)。客户端和存储节点然后可以建立连接以用于客户端从存储节点检索数据内容。因此,在步骤830,存储节点可以将所请求的数据内容提供给客户端。
图8C示出了用于使用分段路由和负载平衡来将对数据的请求直接路由到分配给数据的地址的示例方法840。在步骤842,元数据服务器112可以从客户端(例如,104、106或108)接收消息(例如,202),该消息标识在分布式存储环境102上检索数据内容的意图。如前所述,元数据服务器112可以跟踪每个数据副本在分布式存储环境102中的存储位置。此外,在示例方法840中,分布式存储环境102中的数据可以具有分配给它的网络地址(例如,IPv6地址、IPv6前缀等),其可以用于标识和访问分布式存储环境102上的数据。元数据服务器112可以标识什么网络地址被分配给数据的任何特定副本,并使用该信息向客户端提供与客户端请求的数据内容的副本相对应的候选网络地址的列表。在某些情况下,来自客户端的消息本身可以标识所请求的数据内容的一个或多个网络地址。
在步骤844,元数据服务器112可以向客户端发送标识与分布式存储环境102上的数据内容的副本相关联的网络地址(例如,IP地址或前缀)的SR列表。例如,元数据服务器112可以发送SR列表,该SR列表包括分配给所请求的数据内容的不同副本的一组IPv6地址。客户端可以使用该SR列表以使用分段路由将对数据内容的请求路由到数据内容的副本的IPv6地址。
在步骤846,该方法可以包括基于数据请求中的SRH,引导或路由来自客户端的数据请求(例如,206)通过包括SR列表的路径,该SR列表标识网络地址。SRH可以包括SR列表,并且可以被配置为引导数据请求通过路径(例如,通过SR列表中的每个网络地址),直到承载数据内容的副本的相应存储节点接受该数据请求为止。当数据请求被路由到与SR列表中的分段相关联的网络地址(即,与SR列表中的分段相对应的数据内容的副本的网络地址)时,承载与该网络地址相关联的副本的存储节点可以接收数据请求并确定是接受还是拒绝请求,如本文所述。
在步骤848,当承载数据内容的副本的存储节点接收并接受数据请求时,它向客户端发送存储节点已接受数据请求的指示(例如,响应214)。然后,存储节点和客户端可以建立连接,以使客户端使用分配给数据内容的副本的网络地址来从存储节点检索数据内容的副本。因此,在步骤850,存储节点可以向客户端提供存储节点上的数据内容的副本。
在一些情况下,方法800、820和/或840可以使用分段路由以类似地负载平衡客户端请求到元数据服务器的(一个或多个)池(例如,元数据服务器池110和/或120)。这可以帮助减少由元数据服务器处的过载或有限带宽引起的任何延迟。例如,客户端可以发送标识在分布式存储环境102上存储或检索数据的意图的消息。该消息可以包括具有SR列表的SRH,该SR列表标识来自元数据服务器的一个或多个池(例如,110、120)的元数据服务器。SRH可以使来自客户端的消息被路由通过SR列表中的元数据服务器的路径,直到相关联的请求被SR列表中的元数据服务器中的一个接受为止。在接收到消息之后,每个元数据服务器可以基于元数据服务器处的操作条件来决定是接受还是拒绝相关联的请求。因此,例如,具有高负载或有限容量/带宽的元数据服务器可以拒绝该请求以避免延迟问题,而具有较低负载或较高容量/带宽的元数据服务器可以接受该请求,从而减少潜在的延迟问题。
现在,本公开转向图9和图10,其示出了示例网络设备和计算设备,例如交换机、路由器、节点、元数据服务器、负载均衡器、客户端设备等。
图9示出了适合于执行交换、路由、负载平衡和其他联网操作的示例网络设备900。网络设备900包括中央处理单元(CPU)904、接口902和总线910(例如,PCI总线)。当在适当的软件或固件的控制下动作时,CPU 904负责执行分组管理、错误检测和/或路由功能。CPU904优选地在包括操作系统和任何适当的应用软件的软件的控制下完成所有这些功能。CPU904可以包括一个或多个处理器908,例如来自INTEL X86系列微处理器的处理器。在某些情况下,处理器908可以是专门设计的用于控制网络设备900的操作的硬件。在某些情况下,存储器906(例如,非易失性RAM、ROM等)也形成CPU 904的一部分。然而,存在多种不同的方式可以将存储器耦合到系统。
接口902通常被提供为模块化接口卡(有时称为“线卡”)。通常,它们控制数据分组在网络上的发送和接收,并且有时支持与网络设备900一起使用的其他外围设备。可以提供的接口为以太网接口、帧中继接口、电缆接口、DSL接口、令牌环接口等。此外,可以提供各种非常高速的接口,例如快速令牌环接口、无线接口、以太网接口、千兆以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、WIFI接口、3G/4G/5G蜂窝电话接口、CAN总线、LoRA等。通常,这些接口可以包括适于与适当的介质进行通信的端口。在某些情况下,它们还可以包括独立的处理器,并且在某些情况下还包括易失性RAM。独立处理器可以控制诸如分组交换、介质控制、信号处理、密码处理和管理之类的通信密集型任务。通过为通信密集型任务提供单独的处理器,这些接口允许主CPU(例如,904)有效地执行路由计算、网络诊断、安全功能等。
尽管图9所示的系统是本公开的一个特定的网络设备,但是其决不是可以在其上实现本公开的唯一网络设备架构。例如,经常使用具有处理通信以及路由计算等的单个处理器的架构。此外,其他类型的接口和介质也可以与网络设备900一起使用。
不管网络设备的配置如何,它都可以采用一个或多个存储器或存储器模块(包括存储器906),该存储器或存储器模块被配置为存储用于通用网络操作的程序指令以及本文所述的漫游、路由优化和路由功能的机制。程序指令可以控制例如操作系统和/或一个或多个应用的操作。一个或多个存储器也可以被配置为存储诸如移动性绑定、注册和关联表之类的表等。存储器906还可以容纳各种软件容器以及虚拟化的执行环境和数据。
网络设备900还可以包括专用集成电路(ASIC),该ASIC可以被配置为执行路由和/或交换操作。例如,ASIC可以经由总线910与网络设备900中的其他组件进行通信,以交换数据和信号并协调网络设备900进行的各种类型的操作,例如路由、交换和/或数据存储操作。
图10示出了系统1000的示例计算系统架构,其可以用于处理数据操作和请求、存储数据内容和/或元数据以及执行其他计算操作。在该示例中,系统1000的组件使用诸如总线之类的连接1005彼此电通信。系统1000包括处理单元(CPU或处理器)1010和连接1005,该连接1005将包括存储器1015(例如,只读存储器(ROM)1020和随机存取存储器(RAM)1025)的各种系统组件耦合到处理器1010。系统1000可以包括高速存储器的缓存,其与处理器1010直接连接、紧邻处理器1010或集成为处理器1010的部分。系统1000可以将数据从存储器1015和/或存储设备1030复制到缓存1012,以供处理器1010快速访问。以此方式,缓存可以提供性能提升,从而避免了处理器1010在等待数据时的延迟。这些和其他模块可以控制或被配置为控制处理器1010执行各种动作。其他存储器1015也可以被使用。存储器1015可以包括具有不同性能特性的多种不同类型的存储器。处理器1010可以包括任何通用处理器和硬件或软件服务,例如存储在存储设备1030中的服务1 1032、服务2 1034和服务3 1036,其被配置为控制处理器1010以及其中软件指令被合并到实际处理器设计中的专用处理器。处理器1010可以是完全独立的计算系统,包含多个核或处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或非对称的。
为了使用户能够与计算系统1000进行交互,输入设备1045可以表示任意数量的输入机制,例如用于语音的麦克风,用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等等。输出设备1035也可以是本领域技术人员已知的许多输出机制中的一个或多个。在一些情况下,多模式(multimodal)系统可以使用户能够提供多种类型的输入以与计算系统1000进行通信。通信接口1040通常可以控制和管理用户输入和系统输出。对于在任何特定硬件装置上的操作没有限制,并且因此在开发它们时,此处的基本功能可以轻松地替代改进的硬件或固件装置。
存储设备1030是非易失性存储器,并且可以是硬盘或可以存储可由计算机访问的数据的其他类型的计算机可读介质,例如磁带、闪存卡、固态存储器设备、数字通用磁盘、盒式磁带、随机存取存储器(RAM)1025、只读存储器(ROM)1020及其混合。
存储设备1030可以包括用于控制处理器1010的服务1032、1034、1036。可以考虑其他硬件或软件模块。存储设备1030可以连接到连接1005。在一个方面,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与必要的硬件组件(例如,处理器1010、连接1005、输出设备1035等)相连接以执行功能。
为了说明的清楚起见,在某些情况下,本技术可以被表示为包括各个功能块,这些功能块包括含有设备、设备组件、以软件实现的方法中的步骤或例程、或硬件和软件的组合的功能块。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身之类的介质。
可以使用存储在计算机可读介质中或以其他方式可从计算机可读介质获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可以包括例如引起或以其他方式配置通用计算机、专用计算机或专用处理设备以执行特定功能或功能组的指令和数据。所使用的计算机资源的部分可以通过网络访问。计算机可执行指令可以是例如二进制、诸如汇编语言之类的中间格式指令、固件或源代码。可以用于存储指令、所使用的信息和/或在根据所述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、网络存储设备等等。
实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形式因素中的任何一种。这种形式因素(form factor)的典型示例包括膝上型计算机、智能电话、小型形式因素的个人计算机、个人数字助理、机架安装设备、独立设备等。本文描述的功能性还可以体现在外围设备或附加卡中。作为进一步的示例,这种功能性还可以在不同芯片或单个芯片中执行的不同过程之间的电路板上实现。
指令、用于传达这种指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其他结构是用于提供这些公开中描述的功能的装置。
尽管使用各种示例和其他信息来解释所附权利要求的范围内的各个方面,但是不应该基于这种示例中的特定特征或布置来暗示对权利要求的限制,因为本领域的普通技术人员将能够使用这些示例来导出各种各样的实现方式。此外,虽然已经用特定于结构特征和/或方法动作的示例的语言描述了一些主题,但是应当理解,所附权利要求中限定的主题不一定限于这些描述的特征或动作。例如,这种功能性可以不同地分布在除本文所标识的组件之外的组件中或在除本文所标识的组件之外的组件中执行。而是,所描述的特征和步骤被公开为在所附权利要求的范围内的系统的组件和方法的示例。
引用“集合中的至少一个”的权利要求语言表示该集合中的一个成员或该集合中的多个成员满足该权利要求。例如,引用“A和B中的至少一个”的权利要求语言表示A、B、或A和B。
Claims (20)
1.一种方法,包括:
从客户端设备接收电子消息,所述电子消息标识在分布式存储环境上执行数据操作的意图;
向所述客户端设备发送分段路由(SR)列表,所述SR列表标识从所述分布式存储环境中为所述数据操作选择的多个存储节点候选;
基于与从所述客户端设备接收到的数据操作请求相关联的分段路由报头(SRH),引导所述数据操作请求通过由所述SR列表定义的路径,所述SRH被配置为引导所述数据操作请求通过所述路径,直到来自所述多个存储节点候选的存储节点接受所述数据操作请求为止,其中,所述SRH包括所述SR列表;
向所述客户端设备发送对所述数据操作请求的响应,所述响应指示所述存储节点接受了来自所述客户端设备的所述数据操作请求;以及
在接受所述数据操作请求的所述存储节点处执行所述数据操作。
2.根据权利要求1所述的方法,其中,所述数据操作请求包括用于在所述分布式存储环境上存储数据的存储请求,所述方法还包括:
选择用于存储所述数据的主存储节点池以及用于存储所述数据的多个副本的一个或多个辅助存储节点池,其中,所述主存储节点池包括所述多个存储节点候选。
3.根据权利要求2所述的方法,其中,所述电子消息包括指示要存储的所述数据的副本的数量的复制因子,并且其中,所述一个或多个辅助存储节点池是基于所述复制因子选择的。
4.根据权利要求2至3中任一项所述的方法,还包括:
获得所述一个或多个辅助存储节点池的一个或多个相应SR列表,每个相应SR列表标识与所述相应SR列表相关联的相应辅助存储节点池中的相应多个存储节点候选;以及
由接受所述数据操作请求的所述存储节点向所述一个或多个辅助存储节点池中的每一个辅助存储节点池发送相应请求,以将所述多个副本的相应部分存储在所述相应辅助存储节点池中的所述相应多个存储节点候选中的一个或多个存储节点上,所述相应请求包括相应SRH,所述相应SRH包括与所述相应辅助存储节点池相关联的所述相应SR列表,所述相应SRH被配置为使所述相应请求被路由通过包括所述相应SR列表的相应路径,直到所述相应多个存储节点候选中的一个或多个存储节点接受所述相应请求为止。
5.根据权利要求4所述的方法,还包括:
从所述相应辅助存储节点池中的所述相应多个存储节点候选中的至少一个存储节点接收对所述相应请求的接受;以及
基于所述接受,将所述多个副本的相应部分存储在所述相应辅助存储节点池中的所述相应多个存储节点候选中的所述至少一个存储节点上。
6.根据权利要求2至5中任一项所述的方法,还包括:
向所述客户端设备发送所述一个或多个辅助存储节点池的一个或多个SR列表,每个相应SR列表标识与所述相应SR列表相关联的相应辅助存储节点池中的相应多个存储节点候选;
向所述相应辅助存储节点池中的所述相应多个存储节点候选发送所述存储请求的相应副本,其中,所述相应副本包括相应SRH,所述相应SRH包括与所述相应辅助存储节点池相关联的相应SR列表,所述相应副本是经由与所述存储请求相关联的SR喷射策略发送的;
响应于接收到所述一个或多个辅助存储节点池中的两个或更多个存储节点接受了与所述存储请求的相应副本相关联的存储请求的指示,在所述两个或更多个存储节点与所述客户端设备之间建立并行连接;以及
经由所述并行连接将所述数据存储在所述两个或更多个存储节点处。
7.根据前述权利要求中任一项所述的方法,其中,来自所述多个存储节点候选的所述存储节点基于所述存储节点的当前操作条件来接受所述数据操作请求。
8.根据前述权利要求中任一项所述的方法,其中,所述数据操作包括在所述分布式存储环境上检索数据的操作,并且所述数据操作请求包括从所述分布式存储环境检索所述数据的请求,其中,所述SR列表中标识的所述多个存储节点候选包括所述分布式存储环境中具有所述数据的存储副本的一组存储节点,并且其中,执行所述数据操作包括向所述客户端设备提供来自接受所述数据操作请求的所述存储节点的数据。
9.根据前述权利要求中任一项所述的方法,还包括:
从所述客户端设备接收第二电子消息,所述第二电子消息标识在所述分布式存储环境上检索数据内容的第二意图;
向所述客户端设备发送特定SR列表,所述特定SR列表标识与所述分布式存储环境上的所述数据内容的副本相关联的多个互联网协议(IP)地址;
基于与所述数据请求相关联的特定SRH,引导从所述客户端设备接收到的数据请求通过包括所述特定SR列表的第二路径,所述特定SRH被配置为引导所述数据请求通过所述第二路径,直到托管所述数据内容的副本的相应存储节点接受所述数据请求为止;
向所述客户端设备发送托管所述数据内容的副本的相应存储节点接受了来自所述客户端设备的所述数据请求的指示;以及
向所述客户端设备提供托管所述数据内容的副本的相应存储节点上的所述数据内容。
10.根据前述权利要求中任一项所述的方法,其中,所述电子消息包括第二SRH,所述第二SRH包括元数据服务器SR列表,所述元数据服务器SR列表标识与所述分布式存储环境相关联的多个元数据服务器,所述第二SRH使所述电子消息被路由通过包括所述元数据服务器SR列表的第二路径,直到相关联的连接请求被所述多个元数据服务器中的一个元数据服务器接受为止。
11.根据前述权利要求中任一项所述的方法,其中,所述数据操作请求包括用于在所述分布式存储环境上存储数据的存储请求,并且其中,所述SR列表标识复制因子,所述复制因子指示要存储在所述分布式存储环境上的所述数据的副本的数量,所述方法还包括:
由接受所述数据操作请求的所述存储节点向所述SR列表中的每个剩余分段发送相应请求,以将来自所述多个副本的相应副本存储在包括所述剩余分段的相应存储节点上,所述相应请求包括具有所述SR列表的所述SRH,所述SRH被配置为使所述相应请求被路由通过所述路径,直到多个存储节点候选接受所述相应请求为止,所述存储节点候选的数量等于所述副本的数量;以及
当所述多个存储节点候选接受所述相应请求时,将所述多个副本存储在接受所述相应请求的所述多个存储节点候选上。
12.一种系统,被配置为:
从客户端设备接收电子消息,所述电子消息标识在分布式存储环境上执行数据操作的意图;
向所述客户端设备发送分段路由(SR)列表,所述SR列表标识从所述分布式存储环境中为所述数据操作选择的多个存储节点候选;
基于与从所述客户端设备接收到的数据操作请求相关联的分段路由报头(SRH),引导所述数据操作请求通过包括所述SR列表的路径,所述SRH被配置为引导所述数据操作请求通过所述路径,直到来自所述多个存储节点候选的存储节点接受所述数据操作请求为止;
向所述客户端设备发送响应,所述响应指示所述存储节点接受了来自所述客户端设备的所述数据操作请求;以及
在接受所述数据操作请求的所述存储节点处执行所述数据操作。
13.根据权利要求12所述的系统,其中,所述数据操作请求包括用于在所述分布式存储环境上存储数据的存储请求,其中,所述系统还被配置为:
选择用于存储所述数据的主存储节点池以及用于存储所述数据的多个副本的一个或多个辅助存储节点池,其中,所述主存储节点池包括所述多个存储节点候选,并且其中,所述一个或多个辅助存储节点池是基于标识要存储的副本的数量的复制因子选择的。
14.根据权利要求13所述的系统,所述系统还被配置为:
获得所述一个或多个辅助存储节点池的一个或多个相应SR列表,每个相应SR列表标识与所述相应SR列表相关联的相应辅助存储节点池中的相应多个存储节点候选;
向所述一个或多个辅助存储节点池中的每一个辅助存储节点池发送相应请求,以将所述多个副本的相应部分存储在所述相应辅助存储节点池中的所述相应多个存储节点候选中的一个或多个存储节点上,所述相应请求包括相应SRH,所述相应SRH包括与所述相应辅助存储节点池相关联的所述相应SR列表,所述相应SRH被配置为使所述相应请求被路由通过包括所述相应SR列表的相应路径,直到所述相应多个存储节点候选中的一个或多个存储节点接受所述相应请求为止;以及
响应于从所述相应辅助存储节点池中的所述相应多个存储节点候选中的一个或多个存储节点接收到对所述相应请求的接受,将所述多个副本的相应部分存储在所述相应多个存储节点候选中的一个或多个存储节点上。
15.根据权利要求12至14中任一项所述的系统,其中,所述数据操作请求包括用于在所述分布式存储环境上存储数据的存储请求,并且其中,所述SR列表标识复制因子,所述复制因子指示要存储在所述分布式存储环境上的所述数据的副本的数量,所述系统还被配置为:
由接受所述数据操作请求的存储节点向所述SR列表中的每个剩余分段发送相应请求,以将来自所述多个副本的相应副本存储在包括所述剩余分段的相应存储节点上,所述相应请求包括具有所述SR列表的所述SRH,所述SRH被配置为使所述相应请求被路由通过所述路径,直到多个存储节点候选接受所述相应请求为止,所述存储节点候选的数量等于所述副本的数量;以及
当所述多个存储节点候选接受所述相应请求时,将所述多个副本存储在接受所述相应请求的所述多个存储节点候选上。
16.根据权利要求12至15中任一项所述的系统,其中,所述数据操作包括检索数据的操作,并且所述数据操作请求包括从所述分布式存储环境检索所述数据的请求,其中,所述SR列表中标识的所述多个存储节点候选包括所述分布式存储环境中具有所述数据的存储副本的一组存储节点,并且其中,执行所述数据操作包括向所述客户端设备提供来自接受所述数据操作请求的所述存储节点的所述数据。
17.一种计算机可读存储介质,具有存储在其中的指令,所述指令在由计算机系统的一个或多个处理器执行时使所述计算机系统:
从客户端设备接收电子消息,所述电子消息标识在分布式存储环境上执行数据操作的意图;
向所述客户端设备发送分段路由(SR)列表,所述SR列表标识从所述分布式存储环境中为所述数据操作选择的多个存储节点候选;
基于与从所述客户端设备接收到的数据操作请求相关联的分段路由报头(SRH),引导所述数据操作请求通过包括所述SR列表的路径,所述SRH被配置为引导所述数据操作请求通过所述路径,直到来自所述多个存储节点候选的存储节点接受所述数据操作请求为止;
向所述客户端设备发送响应,所述响应指示所述存储节点接受了来自所述客户端设备的所述数据操作请求;以及
在接受所述数据操作请求的所述存储节点上执行所述数据操作。
18.根据权利要求17所述的计算机可读存储介质,存储有指令,所述指令在由所述一个或多个处理器执行时使所述计算机系统:
选择用于存储所述数据的主存储节点池以及用于存储所述数据的多个副本的一个或多个辅助存储节点池,其中,所述主存储节点池包括所述多个存储节点候选,并且其中,所述一个或多个辅助存储节点池是基于标识要存储的副本的数量的复制因子选择的;
获得所述一个或多个辅助存储节点池的一个或多个相应SR列表,每个相应SR列表标识与所述相应SR列表相关联的相应辅助存储节点池中的相应多个存储节点候选;
向所述一个或多个辅助存储节点池中的每一个辅助存储节点池发送相应请求,以将所述多个副本的相应部分存储在所述相应辅助存储节点池中的所述相应多个存储节点候选中的一个或多个存储节点上,所述相应请求包括相应SRH,所述相应SRH包括与所述相应辅助存储节点池相关联的所述相应SR列表,所述相应SRH被配置为使所述相应请求被路由通过包括所述相应SR列表的相应路径,直到所述相应多个存储节点候选中的一个或多个存储节点接受所述相应请求为止;以及
响应于从所述相应辅助存储节点池中的所述相应多个存储节点候选中的至少一个存储节点接收到对所述相应请求的接受,将所述多个副本的相应部分存储在所述相应辅助存储节点池中的所述相应多个存储节点候选中的至少一个存储节点上。
19.根据权利要求17至18中任一项所述的计算机可读存储介质,其中,所述多个存储节点候选与主存储节点池相关联,所述计算机可读存储介质存储指令,所述指令在由所述一个或多个处理器执行时使所述计算机系统:
向所述客户端设备发送一个或多个辅助存储节点池的一个或多个SR列表,每个相应SR列表标识与所述相应SR列表相关联的相应辅助存储节点池中的相应多个存储节点候选;
向所述相应辅助存储节点池中的所述相应多个存储节点候选发送存储请求的相应副本,其中,所述相应副本包括相应SRH,所述相应SRH包括与所述相应辅助存储节点池相关联的所述相应SR列表,所述相应副本是经由与所述存储请求相关联的SR喷射策略发送的;
响应于接收到所述一个或多个辅助存储节点池中的两个或更多个存储节点接受了与所述存储请求的相应副本相关联的所述存储请求的指示,在所述两个或更多个存储节点与所述客户端设备之间建立并行连接;以及
经由所述并行连接将所述数据存储在所述两个或更多个存储节点处。
20.根据权利要求17至19中任一项所述的计算机可读存储介质,存储指令,所述指令在由所述一个或多个处理器执行时使所述计算机系统:
从所述客户端设备接收第二电子消息,所述第二电子消息标识用于在所述分布式存储环境上检索数据内容的第二意图;
向所述客户端设备发送特定SR列表,所述特定SR列表标识与所述分布式存储环境上的所述数据内容的副本相关联的多个互联网协议(IP)地址;
基于特定SRH,引导从所述客户端设备接收到的数据请求通过包括所述特定SR列表的特定路径,所述特定SRH被配置为引导所述数据请求通过所述特定路径,直到托管所述数据内容的副本的相应存储节点接受所述数据请求为止;
向所述客户端设备发送托管所述数据内容的副本的相应存储节点接受了来自所述客户端设备的所述数据请求的指示;以及
向所述客户端设备提供托管所述数据内容的副本的相应存储节点上的所述数据内容。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/121,525 | 2018-09-04 | ||
US16/121,525 US10904335B2 (en) | 2018-09-04 | 2018-09-04 | Reducing distributed storage operation latency using segment routing techniques |
PCT/US2019/049011 WO2020051076A1 (en) | 2018-09-04 | 2019-08-30 | Reducing distributed storage operation latency using segment routing techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112640371A true CN112640371A (zh) | 2021-04-09 |
CN112640371B CN112640371B (zh) | 2022-06-03 |
Family
ID=67957409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980057286.8A Active CN112640371B (zh) | 2018-09-04 | 2019-08-30 | 在分布式存储环境上执行数据操作的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10904335B2 (zh) |
EP (1) | EP3847784B1 (zh) |
JP (1) | JP7441823B2 (zh) |
CN (1) | CN112640371B (zh) |
CA (1) | CA3110722A1 (zh) |
WO (1) | WO2020051076A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891409A (zh) * | 2024-03-13 | 2024-04-16 | 济南浪潮数据技术有限公司 | 分布式存储系统数据管理方法、装置、设备及存储介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8960674B2 (en) | 2012-07-27 | 2015-02-24 | Bally Gaming, Inc. | Batch card shuffling apparatuses including multi-card storage compartments, and related methods |
USD764599S1 (en) | 2014-08-01 | 2016-08-23 | Bally Gaming, Inc. | Card shuffler device |
US10904335B2 (en) * | 2018-09-04 | 2021-01-26 | Cisco Technology, Inc. | Reducing distributed storage operation latency using segment routing techniques |
US11470176B2 (en) * | 2019-01-29 | 2022-10-11 | Cisco Technology, Inc. | Efficient and flexible load-balancing for clusters of caches under latency constraint |
CN111770475B (zh) * | 2019-03-31 | 2022-04-22 | 华为技术有限公司 | 时延获取方法及装置、优化方法及装置 |
CN113438160B (zh) * | 2020-03-23 | 2024-05-31 | 中兴通讯股份有限公司 | 路由方法、路由装置及计算机可读存储介质 |
US11258876B2 (en) * | 2020-04-17 | 2022-02-22 | Microsoft Technology Licensing, Llc | Distributed flow processing and flow cache |
CN113630320B (zh) * | 2020-05-06 | 2023-03-24 | 瞻博网络公司 | 计算机网络内创建隧道的方法、入口网络装置及存储介质 |
US11811867B2 (en) * | 2020-09-01 | 2023-11-07 | International Business Machines Corporation | Data transmission routing based on replication path capability |
CN114265721A (zh) * | 2020-09-16 | 2022-04-01 | 伊姆西Ip控股有限责任公司 | 选择备份目的地的方法、电子设备和计算机程序产品 |
US11853439B2 (en) * | 2020-12-30 | 2023-12-26 | Activision Publishing, Inc. | Distributed data storage system providing enhanced security |
KR20230097362A (ko) * | 2021-12-24 | 2023-07-03 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
CN114531393B (zh) * | 2021-12-30 | 2023-11-28 | 百果园技术(新加坡)有限公司 | 分段路由策略下发方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102333120A (zh) * | 2011-09-29 | 2012-01-25 | 广东高新兴通信股份有限公司 | 一种负载均衡处理的流存储系统 |
US20150248253A1 (en) * | 2012-09-13 | 2015-09-03 | Hyosung Itx Co., Ltd | Intelligent Distributed Storage Service System and Method |
US20170026224A1 (en) * | 2015-07-22 | 2017-01-26 | Cisco Technology, Inc. | Resilient segment routing service hunting with tcp session stickiness |
US20170251073A1 (en) * | 2016-02-29 | 2017-08-31 | Intel Corporation | Technologies for managing replica caching in a distributed storage system |
WO2017184528A2 (en) * | 2016-04-19 | 2017-10-26 | Cisco Technology, Inc. | Content routing in an ip network |
US20180131616A1 (en) * | 2016-11-07 | 2018-05-10 | Cisco Technology, Inc. | Tactical traffic engineering based on segment routing policies |
US20180203866A1 (en) * | 2017-01-17 | 2018-07-19 | Cisco Technology, Inc. | Distributed object storage |
US20180219783A1 (en) * | 2017-01-30 | 2018-08-02 | Cisco Technology, Inc. | Reliable load-balancer using segment routing and real-time application monitoring |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802301A (en) | 1994-05-11 | 1998-09-01 | International Business Machines Corporation | System for load balancing by replicating portion of file while being read by first stream onto second device and reading portion with stream capable of accessing |
US6856991B1 (en) | 2002-03-19 | 2005-02-15 | Cisco Technology, Inc. | Method and apparatus for routing data to a load balanced server using MPLS packet labels |
US9537718B2 (en) * | 2013-03-15 | 2017-01-03 | Cisco Technology, Inc. | Segment routing over label distribution protocol |
US9762488B2 (en) * | 2014-03-06 | 2017-09-12 | Cisco Technology, Inc. | Segment routing extension headers |
US10313415B2 (en) * | 2014-07-18 | 2019-06-04 | Cisco Technology, Inc. | Using segment routing to access chunks of content |
US10270691B2 (en) * | 2016-02-29 | 2019-04-23 | Cisco Technology, Inc. | System and method for dataplane-signaled packet capture in a segment routing environment |
GB2550622B (en) * | 2016-04-19 | 2018-10-24 | Cisco Tech Inc | Information centric networking routing in an IP network |
US10148560B2 (en) * | 2016-07-28 | 2018-12-04 | Cisco Technology, Inc. | Enhanced error signaling and error handling in a network environment with segment routing |
WO2018033769A1 (en) * | 2016-08-15 | 2018-02-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Segment routing based on maximum segment identifier depth |
US20180302490A1 (en) * | 2017-04-13 | 2018-10-18 | Cisco Technology, Inc. | Dynamic content delivery network (cdn) cache selection without request routing engineering |
US10454822B2 (en) * | 2017-07-27 | 2019-10-22 | Cisco Technology, Inc. | Full-path validation in segment routing |
US10942666B2 (en) * | 2017-10-13 | 2021-03-09 | Cisco Technology, Inc. | Using network device replication in distributed storage clusters |
US10671445B2 (en) * | 2017-12-04 | 2020-06-02 | Cisco Technology, Inc. | Cost-optimal cluster configuration analytics package |
US10904335B2 (en) * | 2018-09-04 | 2021-01-26 | Cisco Technology, Inc. | Reducing distributed storage operation latency using segment routing techniques |
US11113114B2 (en) * | 2019-04-09 | 2021-09-07 | Cisco Technology, Inc. | Distributed object placement, replication, and retrieval for cloud-scale storage and data delivery |
-
2018
- 2018-09-04 US US16/121,525 patent/US10904335B2/en active Active
-
2019
- 2019-08-30 EP EP19769304.7A patent/EP3847784B1/en active Active
- 2019-08-30 WO PCT/US2019/049011 patent/WO2020051076A1/en unknown
- 2019-08-30 CN CN201980057286.8A patent/CN112640371B/zh active Active
- 2019-08-30 CA CA3110722A patent/CA3110722A1/en active Pending
- 2019-08-30 JP JP2021507654A patent/JP7441823B2/ja active Active
-
2020
- 2020-12-23 US US17/132,125 patent/US11811872B2/en active Active
-
2021
- 2021-12-10 US US17/547,766 patent/US11838361B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102333120A (zh) * | 2011-09-29 | 2012-01-25 | 广东高新兴通信股份有限公司 | 一种负载均衡处理的流存储系统 |
US20150248253A1 (en) * | 2012-09-13 | 2015-09-03 | Hyosung Itx Co., Ltd | Intelligent Distributed Storage Service System and Method |
US20170026224A1 (en) * | 2015-07-22 | 2017-01-26 | Cisco Technology, Inc. | Resilient segment routing service hunting with tcp session stickiness |
US20170251073A1 (en) * | 2016-02-29 | 2017-08-31 | Intel Corporation | Technologies for managing replica caching in a distributed storage system |
WO2017184528A2 (en) * | 2016-04-19 | 2017-10-26 | Cisco Technology, Inc. | Content routing in an ip network |
US20180131616A1 (en) * | 2016-11-07 | 2018-05-10 | Cisco Technology, Inc. | Tactical traffic engineering based on segment routing policies |
US20180203866A1 (en) * | 2017-01-17 | 2018-07-19 | Cisco Technology, Inc. | Distributed object storage |
US20180219783A1 (en) * | 2017-01-30 | 2018-08-02 | Cisco Technology, Inc. | Reliable load-balancer using segment routing and real-time application monitoring |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891409A (zh) * | 2024-03-13 | 2024-04-16 | 济南浪潮数据技术有限公司 | 分布式存储系统数据管理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3847784A1 (en) | 2021-07-14 |
US20210185124A1 (en) | 2021-06-17 |
WO2020051076A1 (en) | 2020-03-12 |
US11811872B2 (en) | 2023-11-07 |
US20220103631A1 (en) | 2022-03-31 |
US11838361B2 (en) | 2023-12-05 |
CA3110722A1 (en) | 2020-03-12 |
EP3847784B1 (en) | 2023-12-20 |
JP2021534663A (ja) | 2021-12-09 |
JP7441823B2 (ja) | 2024-03-01 |
CN112640371B (zh) | 2022-06-03 |
US10904335B2 (en) | 2021-01-26 |
US20200076892A1 (en) | 2020-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112640371B (zh) | 在分布式存储环境上执行数据操作的方法和系统 | |
US10917351B2 (en) | Reliable load-balancer using segment routing and real-time application monitoring | |
CN112470436B (zh) | 用于提供多云连通性的系统、方法、以及计算机可读介质 | |
US10545914B2 (en) | Distributed object storage | |
US6535509B2 (en) | Tagging for demultiplexing in a network traffic server | |
US9942153B2 (en) | Multiple persistant load balancer system | |
US20220236885A1 (en) | Master data placement in distributed storage systems | |
JP2022518372A (ja) | レイテンシ制約下でのキャッシュのクラスタに対する効率的で柔軟な負荷分散 | |
US10742545B2 (en) | Multicasting system | |
US11824765B2 (en) | Fast redirect of traffic when pods fail | |
CN109981768A (zh) | 分布式网络存储系统中的io多路径规划方法及设备 | |
US11122131B1 (en) | Edge cloud resource location using enhanced DNS service | |
Nascimento et al. | Evaluation of cache for bandwidth optimization in ICN through software-defined networks | |
Antonielli | Development and comparison of MQTT distributed algorithms for HiveMQ | |
CN115065730B (zh) | 一种数据处理方法、第一容器、电子设备及存储介质 | |
CN115622938A (zh) | 算力服务处理方法、装置及系统 | |
CN118175090A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |