CN110651262B - 分层分布式存储系统以及用于边缘计算系统的技术 - Google Patents
分层分布式存储系统以及用于边缘计算系统的技术 Download PDFInfo
- Publication number
- CN110651262B CN110651262B CN201880033298.2A CN201880033298A CN110651262B CN 110651262 B CN110651262 B CN 110651262B CN 201880033298 A CN201880033298 A CN 201880033298A CN 110651262 B CN110651262 B CN 110651262B
- Authority
- CN
- China
- Prior art keywords
- tag
- value
- server
- edge
- content
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 95
- 238000004891 communication Methods 0.000 claims abstract description 33
- 230000001172 regenerating effect Effects 0.000 claims description 9
- 230000008929 regeneration Effects 0.000 abstract description 32
- 238000011069 regeneration method Methods 0.000 abstract description 32
- 230000003993 interaction Effects 0.000 abstract description 16
- 230000002085 persistent effect Effects 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 44
- 238000012545 processing Methods 0.000 description 41
- 230000004044 response Effects 0.000 description 19
- 230000008439 repair process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 14
- 230000009471 action Effects 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/611—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了一种两层纠删码的容错分布式存储系统,该系统为读取和写入操作提供原子访问。在一些实施例中,当值需要在后端层中从持久性存储装置中被重新创建时,用于在后端层中存储数据的被称为再生码(例如,最小带宽再生码)的一类纠删码被用于降低后端大容量存储的成本并且有助于降低读取操作的通信成本。通过分离边缘层服务器和后端服务器的功能,提供了用于使用存储高效的纠删码的原子性的模块化实施方式。这种两层模块化架构允许一致性实施方式所需的协议实质上被限于客户端和边缘层之间的交互,而实施纠删码所需的协议实质上被限于边缘和后端层之间的交互。
Description
背景技术
如本领域中所知,边缘计算系统和利用这样的系统的应用是新兴的分布式计算范例。在边缘计算中,用户(或“客户端”)与网络边缘上的服务器交互。这样的服务器因此被称为形成了服务器的第一层。边缘服务器又与边缘计算系统的后端中的第二层服务器交互,并因此被称为“后端层服务器”。虽然边缘服务器通常地理邻近客户端,但是服务器的后端层经常被提供作为通常地理上远离客户端和边缘服务器的云中心或数据中心的一部分。边缘服务器到客户端的地理邻近允许客户端和边缘层之间的高速操作,而边缘服务器和后端之间的通信通常慢得多。这样的分散的边缘处理或计算被认为是物联网(IoT)技术的关键促成因素。
众所周知,总的来说,提供对存储的数据的一致访问是分布式计算系统中的基本问题,并且特别是在边缘计算系统中。不考虑涉及的实际计算,边缘计算系统中的应用程序(也被简单称为“应用”或者更简单的“者更简”)通常必须写入和读取数据。在若干写入器试图并发地或同时地更新存储的数据的设置中,可能会混淆应该在写入操作期间被存储和在读取操作期间被返回的数据版本。因此,对数据访问的强一致性机制的实现是边缘计算系统中的重要的问题,并且在处理来自很多用户的大量数据的那些系统中尤其重要。
为了降低和理想地最小化针对相同数据的不同版本的可能的混淆,可以施加和实施一致性策略(或规则)来处理因为由客户端并发访问数据而出现的问题。一种公知并广泛认同的且最令人满意的一致性策略形式被称为“原子性”或“强一致性”,其在应用级别给分布式系统(例如,边缘计算系统)的用户单个机器执行并发的读取和写入操作的印象,犹如执行一个接一个地发生(即,顺序地)。因此,简单地说,原子性给数据服务的用户各种并发的读取和写入操作是顺序发生的印象。理想的一致性解决方案应该尽可能仅经由与边缘层的交互来完成客户端操作,从而引发低延时。
然而,在所有的情况下这是不可能的,因为实际的边缘服务器具有有限的资源,例如有限的存储容量,并且在一些系统和/或使用中,边缘层服务器在总存储容量和其它资源方面可能会受到严格限制。例如,在为数千个文件提供服务的情况下,边缘服务器通常没有能力来一直存储所有文件。在这种情况下,边缘服务器依靠服务器的后端层来永久存储较低访问频率的文件。因此,第一层中的服务器充当第二层服务器的虚拟客户端。
尽管在传统的处理系统中广泛地实施和使用各种一致性策略(通常弱于强一致性策略),但缺乏适合边缘计算系统的有效实施方式。如上所述,边缘计算系统中的一个重要挑战是降低后端层服务器的操作成本。边缘层服务器和后端层服务器之间的通信以及后端层中的持久性存储都会带来后端层的操作成本。因此,可以通过有效利用边缘层服务器来实现成本降低。
发明内容
本文描述的是面向分层分布式存储(LDS)系统的构思、系统和技术以及相关技术。在一个实施例中,描述了为读取和写入操作提供原子访问的两层纠删码的容错分布式存储系统。这样的系统和技术在包括具有分布式存储装置的边缘计算系统的分布式存储系统中得到了使用。
本文描述的系统和技术解决了以下边缘计算挑战:(1)通过以下方式有效利用边缘层服务器来降低后端层服务器的操作成本:(a)控制边缘层服务器和后端层服务器之间的通信;和(b)控制后端层的持久性存储;(2)实行/控制一致性(例如,用于读取和写入操作的原子访问);和(3)尽可能经由仅与边缘层服务器的交互来完成客户端操作。
所描述的系统和技术在边缘计算系统中针对读取和写入操作实现了原子性一致的数据存储,同时为用户保持令人满意的速度水平。在实施例中,构思的优点来自于纠删码的使用。在实施例中,可以使用最小带宽再生(MBR)码。在实施例中,可以使用随机线性网络码(RLNC)。
由于本文描述的技术和系统可特定地适用于边缘计算系统,可以提供多个特征。例如,如一些边缘计算系统可以要求的,本文描述的LDS技术确保客户端仅与边缘服务器交互,并且不与后端服务器交互。在一些实施例中,这对于将LDS技术应用到边缘计算系统是重要的要求。通过确保客户端仅与边缘服务器交互且不与后端服务器交互,本文描述的LDS技术允许通过只与边缘层交互来完成客户端操作(即,仅客户端仅需要与一个或多个边缘层服务器交互)。具体地说,客户端写入操作(即,客户端将数据写入)将更新的文件存储到边缘层中并终止。客户端写入操作不需要等待边缘层将数据卸载到后端层。在包括客户端和边缘层服务器之间的高速链路(例如,提供相对低量的网络延时的链路)的实施例中这种特性是特别有利的。对于读取操作,边缘层可以有效地充当代理缓存,其保存与频繁更新的文件相对应的数据。在这种情况下,要求读取的数据可以在边缘层处直接可用,并且不需要从后端层取回。
此外,本文描述的LDS系统和技术有效地使用边缘层来改善(并理想地优化)后端层的操作成本。具体地说,LDS技术可以使用称为最小带宽再生(MBR)码的特殊类别的纠删码来同时改善(并理想地优化)两层之间的通信成本,以及后端层中的存储成本。
此外,LDS技术是容错的。在大型分布式系统中,个体服务器通常是商品服务器,所述商品服务器容易由于各种原因而出现故障,例如电源故障、软件错误、硬件失灵等。然而,根据本文描述的LDS技术来操作的系统能够继续为客户端服务读取和写入操作,但是一部分服务器可能在在系统操作期间的不可预知的时间崩溃。因此,只要崩溃次数不超过已知的门限,系统就是可用的。
用于容错的底层机制是冗余的一种形式。通常,简单的冗余(例如,复制)会增加存储成本,但至少一些本文描述的实施例使用纠删码来实施这种冗余。本文描述的LDS技术在同一时刻实现了容错和低存储和/或通信成本。
根据本文描述构思的一个方面,分层分布式存储(LDS)系统包括耦合到多个后端层服务器的多个边缘层服务器。每个边缘层服务器包括:用其耦合到一个或多个客户端节点的接口,用于处理来自客户端节点的读取和/或写入请求和生成标签-值对的处理器,用于存储标签-值对的列表的存储装置,以及用于接收来自所述处理器的标签-值对并与多个后端服务器的一个或多个接合的后端服务器层接口。每个后端层服务器包括:用于与边缘层中的一个或多个服务器通信的边缘层接口,用于生成码的处理器,以及其中存储有标签-值对的编码的版本的存储装置。在一些情况下,标签-值对可以经由纠删码、MBR编码或随机线性网络编码技术进行编码。后端层服务器对来自边缘层服务器的通信做出响应。
在优选的实施例中,边缘层服务器中的存储装置是临时存储装置,并且后端层服务器中的存储装置是持久性存储装置。
在这种特定布置的情况下,提供了在边缘计算系统中实现原子一致性的系统和技术。因为用户(或客户端)只与边缘层中的服务器交互,该系统和技术在边缘计算系统中变得实用,在该边缘计算系统中客户端交互需要被限于边缘。通过分离边缘层服务器和后端服务器的功能,提供了用于使用存储高效的纠删码的原子性的模块化实施方式。具体地说,一致性实施方式所需的协议在很大程度上被限于客户端和边缘层之间的交互,而实施纠删码所需的协议在很大程度上被限于边缘层和后端层之间的交互。这样的模块性使得系统具有改善的性能特性并且可以用于边缘计算应用以外的应用中。
本文描述的LDS技术因此提供了用于有利地将再生码(例如,存储高效的纠删码)用于一致数据存储的方法。
应该认识到,在先前技术系统中,再生码的使用在很大程度上被限于存储不可变的数据(即,未被更新的数据)。对于不可变的数据,这些码提供了良好的存储效率,并且减少了用于对系统进行操作的网络带宽。
然而,使用本文描述的技术,即使对于正经历更新的数据并且在要求强一致性的情况下,经由再生码而可能的良好的存储效率和降低的网络带宽的优点也可以被实现。因此,本文描述的LDS技术实现将纠删码用来存储频繁更新的数据。这样的用于支持频繁更新的数据的系统对于大数据应用是可扩展的。因此,本文描述的纠删码的使用提供了具有令人满意的效率和容错特性的边缘计算系统。
人们认识到在诸如联网在线游戏之类的应用以及甚至虚拟现实中的应用中需要涉及大量数据的一致数据存储的实施方式。因此,现在可以经由本文描述的边缘计算系统和技术来实施这样的应用。
根据本文描述的构思的另外的方面,已经认识到,在处理数百万个文件(可以表示为对象)的系统中,边缘计算系统中的边缘服务器不具有在整个执行期间内存储全部对象的能力。实践中,在任何给定的时间,只有全部对象的一部分(并且在一些情况下,只有全部对象的非常小的部分)经历并发访问;在本文描述的系统中,边缘层中的有限存储空间可以充当正被访问的那些对象的临时存储装置。服务器的后端层在整个执行期间为全部对象提供永久存储。因此,边缘层中的服务器可以充当第二层后端的虚拟客户端。
如上所述,边缘计算系统中的一个重要需求是降低后端层的操作成本。如前所述,这可以通过有效利用边缘层来实现。边缘层和后端层之间的通信以及后端层中的持久性存储带来了第二层的操作成本。这些因素经由本文描述的技术得到了解决,因为用于实现原子存储服务的分层方法具有以下优点:在来自对任何对象的写入操作的高并发间隔期间,可以用边缘层来保留正被(并发地)写入的较近期版本,同时过滤掉过时的版本。避免将每个版本的数据写入到后端层的能力降低了两层之间的总体写入通信成本。因此,所描述的架构允许将边缘层配置为用于被频繁读取的数据的代理缓存层,从而避免从后端层读取此类数据的需要。
在实施例中,后端层中的数据存储可以经由使用码来实现,这些码包括但不限于纠删码和随机线性网络码。在一些实施例中,可以使用一种被称为最小带宽再生码的纠删码。从存储成本的视角来看,这些可以与流行的纠删码(例如,Reed-Solomon码)一样高效。
根据本文描述的构思已经认识到,当需要从存储在后端层(例如,其可以对应于云层)的编码数据重新创建期望的数据时,使用再生码(而不是使用例如Reed-Solomon码)提供了降低读取通信成本的额外优点。还认识到最小带宽再生(MBR)码可以用于同时优化读取和存储成本。
因此,本文描述的系统和技术可以将再生码用于持久数据存储。本文描述的分层架构自然地允许用于实现原子性和纠删码(在后端层中,例如云层中)所需的协议的分层。实施原子性所需要的协议在很大程度上限于客户端和边缘服务器之间的交互,而实现纠删码所需的协议在很大程度上限于边缘服务器和后端(或云)服务器之间的交互。此外,本文描述的实施方式的模块性使得它甚至适合于不一定需要两层系统的情况。
本文描述分层分布式存储(LDS)构思和技术实现了两层异步网络上的多写入器、多读取器原子存储服务。
根据本文描述的技术的一个方面,将对象值(即,数据)写入到第一层后,写入操作完成。该写入操作不会等待第一层存储第二层中的对应的编码数据。
对于读取操作,与写入操作的并发性增加了直接从第一层服务内容的机会。如果内容(或数据)不是从第一层直接被服务的,第一层的服务器将从第二层重新生成编码数据,这些编码数据将被转发给读取器。
在实施例中,第一层中的服务器经由所谓的写入到后端层(“写入到L2”)操作以及从后端层重新生成以及“从L2重新生成”操作与第二层的服务器交互来实现在第二层中的再生码。
在具有第一层和第二层的系统(其中,第一层具有n1个服务器,并且第二层具有n2个服务器)中,所描述的系统可以容忍第一层和第二层中的多个故障f1、f2,其分别对应于f1<n1/2和f2<n2/2。
在其中n1=θ(n2);f1=θ(n1);f2=θ(n2)的系统中,写入和读取成本分别由θ(n1)和θ(1)+n1I(δ>0)给出,其中,δ是与写入或者内部写入到L2操作(其与读取操作并发)的数量密切相关的参数。注意,如果δ>0,则I(δ>0)等于1;并且如果δ=0,则I(δ>0)等于0。注意,在上下文中符号a=θ(b),任何两个变量参数a和b用于意指a和b的值是可比较的,并且只相差一个固定的百分比。当δ=0来自最小带宽再生(MBR)码的使用时,能够将读取成本降低到θ(1)。为了确定临时存储成本对总体存储成本的贡献,可以执行多对象(例如,N)分析,其中,N个对象中的每一个由LDS技术的独立实例实施。多对象分析假设点对点信道为有界延时。识别了每单位时间并发写入操作总数的条件,使得第二层中的永久存储成本支配第一层的临时存储成本,并且由θ(N)给出。此外,可以计算出在有界延时下成功的客户端操作的完成时间的界限。
使用再生码使得能够高效地修复在分布式存储系统中的故障节点。对于相同的存储开销和弹性,用于修复(也被称为“修复带宽”)的通信成本大大低于码(例如,Reed-Solomon码)所需的成本。在本文描述的技术的一个方面中,在第一层中虚拟客户端将内部读取操作转换为修复操作,并且这实现了总体读取成本的降低。在本文描述的技术的一个方面中,使用了提供精确修复的MBR码。也可以使用被称为随机线性网络码(RLNC)的不同类的码。RLNC码允许经由功能修复来实现再生码。RLNC码提供了概率保证,并且允许在选择的操作点时再生码的近似最佳的操作。
附图说明
可以通过以下对附图的描述更充分地理解上述特征,在附图中:
图1是具有用于耦合到多个客户端节点的编码的一致分布式存储装置的分层架构的系统的示意图;
图1A是示出具有用于编码的一致的分布式存储装置的分层架构的网络中的读取和写入操作的示意图;
图2是边缘层服务器的框图;
图2A是后端层服务器的框图;
图3是通过边缘层服务器将内容写入到后端层服务器的写入器客户端的示意图;
图3A是示出从多个不同的写入器节点到边缘层的并发写入操作的示意图;
图3B是示出写入操作的两个阶段的示意图;
图3C是示出内部写入到后端层服务器操作(也称为“内部写入L2写操作)的示意图;
图3D是示出广播原语的作用的示意图;
图3E是示出在写入器客户端、边缘层服务器和后端层服务器之间的写入操作的示意图;
图3F-3H是示出写入操作的一系列流程图;
图4是通过边缘层服务器从后端层服务器读取内容的读取器客户端的示意图;
图4A是示出来自编码内容的读取操作的示意图;
图4B是示出来自后端层服务器的读取操作的两个阶段的示意图;
图4C是示出来自后端层服务器(也称为“从L2读取”动作)的读取操作的四种可能性的示意图;
图4D是示出读取操作的第三阶段的示意图;
图4E是示出在读取器客户端、边缘层服务器和后端层服务器之间的读取操作的示意图;
图4F是读取操作的流程图;并且
图4G-4J是示出读取操作的各个阶段的一系列流程图。
具体实施方式
现在参考图1,具有用于编码的一致分布式存储装置的分层架构的网络包括两层纠删码容错分布式存储系统11,该系统11包括概括地表示为14的多个边缘层服务器14a-14d和概括地表示为16的多个后端层服务器16a-16e。
应当认识到,尽管在该特定示例中仅示出了四个边缘层服务器14a-14d,但是系统11可以包括任何数量的边缘层服务器14。类似地,尽管在该特定示例中仅示出了五个后端层服务器16a-16e,但是系统11可以包括任何数量的后端层服务器16。一般来说,边缘层可以包括n1个服务器,而后端层可以包括n2个服务器。
多个客户端节点12(有时在本文中也被称为“客户端”或“用户”)耦合到边缘层服务器14。为了清楚起见,用参考数字18a、18b来标识写入器客户端(即,想要将内容(或数据)v1、v2写入到后端层16中的一致存储装置的客户端节点),并且用参考数字20a-20d标识读取器客户端(即,想要读取内容或数据的客户端节点)。
当提供系统11作为边缘计算系统的一部分时,在边缘层中的服务器14和客户端12之间可能存在高速通信路径(即,在客户端12和服务器14之间提供低网络延时的通信路径)。此外,可以提供后端层服务器16作为数据中心或云中心的一部分,并且通常经由通常慢于高速路径19、21(就网络延时而言)的一个或多个通信路径23耦合到边缘层服务器14。
如图1所示,写入器客户端18a、18b均可以独立地向边缘层服务器14提供相同内容的两个版本(v1、v2)。以下面将详细描述的方式,边缘层服务器14解析数据的最近期的版本,并且可以经由通信路径23将最近期的版本(在该情况下,内容的版本v2)提供给后端层服务器以用于持久性存储。
类似地,一个或多个读取器客户端20a-20d均可以独立地从边缘层服务器14请求期望的内容的最新版本。在下面将详细描述的方式中,边缘层服务器14将内容的最近期版本(在该情况下,内容的版本v2)提供给读取器客户端20a-20d中的适当的一个。这种内容有时直接从一个或多个边缘层服务器14提供,并且有时边缘层服务器14与后端层服务器16通信以取回并递送所需的信息用以向一个或多个读取器客户端20a-20d提供所请求的内容。
现在参考图1A,客户端-边缘交互(即,在客户端节点(例如,写入器和读取器节点18、20)与边缘层服务器14a-14c之间的交互)在系统11中实现一致性是很重要的,而边缘-后端交互(即,在边缘层服务器14和后端层服务器16之间的交互)实现(很大程度上)纠删码或其它码(例如,RLNC)。也就是说,一致性实施方式所需的协议在很大程度上限于客户端12和边缘层服务器14之间的交互,而实施纠删码或其它码所需的协议很大程度上限于边缘层服务器14和后端层服务器16之间的交互。
现在参考图2,典型的边缘层服务器14a包括耦合到处理器32的客户端节点接口30。处理器32耦合到后端层接口34。因此,边缘节点层服务器可以与客户端节点12(图1)和后端层节点16(图1)通信。重要的是,客户端节点12不与后端层服务器16直接通信。每一个边缘层服务器14还包括存储装置36(在优选实施例中,该存储装置可以被提供作为临时存储装置),其中存储有标签-值对(t,v)的列表。
现在参考图2A,可以与上文结合图1描述的后端层服务器16相同或相似的典型的后端层服务器40包括耦合到处理器44的边缘层接口42。处理器44还耦合到存储装置46(在优选实施例中,该存储装置46被提供作为临时存储装置)。存储装置46被配置为在其中存储标签-值对(t,v)的一个或多个列表,其可以用例如再生码或RLNC来存储。从本文的描述可以显而易见的是,处理器44有助于重新生成过程。
在描述可能发生在分层分布式存储(LDS)系统中的写入和读取操作之前(结合下文的图3-4J),提供概述和一些介绍性构思和定义。应当理解在本文描述的说明性系统和技术中,假设分布式存储系统包括三种类型的异步处理器:写入器(W)、读取器(R)和服务器(S)。服务器被组织成两个逻辑层和其中,由ni,i=1;2个服务器构成。
每个过程有一个唯一的id,并且id是完全有序的。客户端(读取器/写入器)交互限于中的服务器,并且中的服务器又与中的服务器交互。此外,和中的服务器分别由{s1,s2,…,sn1}和{sn1+1,sn1+2,…,sn1+n2}表示。
还假设客户端是形式合法的,即,客户端仅在其先前的操作(若有的话)完成后才发出新的操作。正如下面将详细描述的,层1-层2交互经由明确定义的动作写入L2和从L2重新生成来发生。这些动作有时在本文中称为由中的服务器发起的内部操作。
还针对过程假设了崩溃故障模型。因此,一旦过程崩溃,它就不会针对执行的剩余部分执行任何进一步的步骤。
本文描述的LDS技术设计旨在容忍在层中的崩溃故障,其中,f1<n1/2和f2<n2/3。任何数量的读取器和写入器在执行期间可能崩溃。上面的界限来自于确保每一层服务器中有足够的服务器处于活跃状态,以保证有足够数量的用于标签的编码的元素,以便允许对对应值进行解码。通信可以经由任何两个过程之间可靠的点到点链路来进行建模。这意味着只要目标过程是非故障的,就可以保证在链路上发送的任何消息最终到达目标过程。该模型允许发送方过程在将消息放入信道中后失败;消息递送仅取决于目的地是否是非故障的。
关于活性和原子性特性,一个对象(例如,x)是经由支持读取/写入操作的LDS算法实施的。对于多个对象,执行多个LDS算法的实例。对象值v来自于集合V。最初v被设置为可分辨的值v0(∈V)。读取器R请求针对对象x的读取操作。类似地,写入器W请求写入操作。非故障客户端处的每个操作以调用步骤开始并以响应步骤终止。当π的调用步骤没有相关联的响应步骤时,则操作π在执行中是不完整的;否则操作π是完整的。在执行中,如果操作π1的响应步骤先于另一操作操作π2的调用步骤,则操作(读取或写入)π1先于π2。如果两个操作都不在另一操作之前,则这两个操作是并发的。
“活性”是指以下特性:在LDS技术的任何形式合法的执行期间由非故障的读取器或写入器发起的任何读取或写入操作完成,尽管任何其它客户端的崩溃故障,并且在边缘层中高达f1个服务器崩溃以及在后端层中高达f2个服务器崩溃。执行的原子性是指以下特性:执行中的读取和写入操作可以按顺序次序排列,该顺序与调用和响应的顺序一致。
关于再生码的使用,使用再生码框架,其中,大小为B个符号的文件被编码并且跨n个节点被存储,使得每个节点存储α个符号。假设该符号是从有限域得到的(对于某个q)。可以使用来自任何k个节点(kα个符号)的内容来解码原始文件
对于故障节点的修复,替换节点接触系统中d≥k个幸存节点的任何子集,并从每个d个符号中的每一个下载β个符号。来自助手节点的β个符号可能是节点中α个符号的函数。码(例如,C)的参数将被表示为{(n,k,d)(α;β)},其文件大小B,上界为B≥。
两个极端操作点对应于最小存储开销(MSR)操作点(其中,B=kα)并且最小修复带宽(MBR)操作点(其中,α=dβ)。在实施例中,可以使用MBR操作点处的码。在MBR点处的文件大小可以由 给出。
在一些实施例中,使用精确的修复码可以是优选的,这意味着修复后的替换节点的内容与崩溃故障之前存储在节点中的内容实质上相同。文件对应于被写入的对象值v。在其它实施例中,使用不是精确修复码的码(例如,随机线性网络码(RLNCs))可以是优选的。
在实施例中(并将会结合下文的图3-3E示出),可以使用命名为C的{(n=n1+n2,k,d)(α,β)}MBR码。参数k和d是这样的:在n1=2f1+k和n2=2f2+d的情况下,可以定义从码C导出出的两个附加码C1和C2。码C1通过将注意力限于C的第一n1个编码符号上而获得,而码C2通过将注意力限于C的最后n2个编码符号上获得。因此,如果[c1 c2 … cn1 cn1+1 … cn1+n2];ci∈表示C的码字,则向量[c1 c2 … cn1]和[cn1+1 … cn1+n2]将分别是C1和C2的码字。
这三个码的用法如下。具有对对象值v的访问权(在执行的适当点处)的第一边缘层中的每个服务器使用码C2对对象值v进行编码,并将编码数据cn1+i发送到中的服务器sn1+i;1≥i≥n2。在读取操作期间,边缘层中的服务器sj可以潜在地重构使用来自后端层的内容的编码数据cj。这里,编码数据cj可以被认为是码C的一部分,并且经由修复过程(由边缘层中的服务器sj调用)来重构编码部分cj,其中,d助手服务器属于后端层通过在MBR点处操作,可能减少并理想地最小化服务器sj重构cj所需的成本。最后,在本文描述的LDS技术中,读取器在读取操作期间从边缘层中的k个服务器接收k个编码数据元素的可能性被允许。在这种情况下,读取器用码C1尝试解码对象值v。
在本文描述的LDS技术的一个实施例中需要的一个MBR码构造的重要特性是以下事实:在计算助手数据时,助手节点只需要知道故障节点的索引,而不需要知道其助手数据将用于修复的其它d-1个助手的集合。需要注意的是,并非所有的再生码构造(包括MBR码的构造)都具有此属性。在实施例中,服务器从后端层中的所有服务器中请求帮助,并且不先验地知道将形成助手节点的服务器的子集。在这种情况下,优选的是每个助手节点能够在不知道其它d-1个助手服务器的情况下计算其β个符号。
在实施例中,第一层中的虚拟客户端可以将内部读取操作转换为修复操作,并且这实现了总体读取成本的降低。
关于存储和通信成本,与读取或写入操作相关联的通信成本是在作为操作的一部分的发送的消息中被发送的总数据的(最坏情况的)大小。在计算写入成本的同时,可以包括由于作为写入的结果而发起的内部写入L2操作引起的成本,即使这些内部写入L2操作不影响写入操作的终止点。执行中任何点处的存储成本是存储在边缘层和后端层的服务器中在最坏情况下的数据总量。边缘层中的总数据带来了临时存储成本,而在后端层中的总数据带来了永久存储成本。在确定存储或通信成本时,可以忽略由元数据(用于记账的数据,例如标签、计数器等)带来的成本。此外,可以通过对象值v的大小来规范化成本;换句话说,表示成本就如同对象值v的大小为1个单位。
下面将结合图3-3H描述写入操作。
现在参考图3,写入器18寻求经由通信路径19将内容(也成为“对象值”V)写入到边缘层中的服务器14。在接收到值V(并且在进行某些操作之后——将在其它图中描述)时,边缘层服务器14执行内部“写入L2”操作,其中,该值被写入到后端层中的后端服务器16中的持久性存储装置(例如,图2A中的存储装置46)。在通信路径24上执行写入L2操作,并且在下面结合图3C来描述。
现在参考图3A,多个写入器(这里是三个写入器18a、18b、18c)经由通信路径19a-19c将相同内容的三个版本v1、v2、v3并发地写入到服务器14。以下面将详细描述的方式,服务器14确定要经由通信路径24将内容的哪个版本(在该示例中,版本v3)发送到后端服务器16中的持久性存储装置。如图3A所示,用码cn1+1-cn1+n2对内容进行编码,并且内容分布在后端服务器16中的多个后端服务器之中。在该示例中,内容分布在所有服务器16之中。
在实施例中,理想的目标是在所有的后端服务器中存储相应的编码内容。考虑到这个目标,相应的编码元素被发送到所有后端服务器。如果接收回n2-f2个响应(即,如果我们确定相应的编码元素被写入到至少n2-f2个后端层服务器,则内部写入操作被认为是完整的),则令人满意。
现在参考图3B,边缘计算系统的边缘层14包括五个边缘层服务器14a-14e(即,n.=5)和发起内容v的写入的写入客户端18(或更简单地说“写入器”18)。通常,写入操作有两个阶段,并且目的是在边缘层中临时地存储对象值v,使得边缘层中的服务器的高达f1个故障不会导致值的丢失。在说明性示例中,f1的值被设置为1(即,f1=1),并且k的值被设置为3(即,k=3)。f1和f2的值分别基于n1和n2的值来选择,并且k和d取决于上述的所选择的码的参数。
在第一阶段(有时也称为“获取标签”阶段)期间,写入器18确定新标签以供值被写入。标签包括一对值:自然数和标识符,该标识符可以是简单的一串数位或数字,例如(3,“id”)。如果第一标签的自然数部分大于另一标签,或者如果它们相等,则认为一个标签与另一标签相比较大或较近期,第一标签的标识符按字典顺序大于(或晚于)第二标签的标识符。因此,对于任何两个不同的标签,都有较大的标签,并且与此类似,在给定的标签集合中,在所有标签中有最大的标签。注意这样的标签用于替代实际的时间戳。
在第二阶段(也称为“放入数据”阶段)中,写入器将新的标签-值对发送到边缘层中的所有服务器,这些服务器将传入的对添加到它们相应的本地列表(例如,如图2所示的临时存储装置36中的一个或多个列表)。将新的标签-值对添加到其列表的任何服务器也将对应的数据接收消息(例如,元数据)56a-56b广播到边缘层中的其它服务器。服务器15均仅在它们听到来自服务器14中的至少f1+k个服务器(包括其自身)的广播消息之后,才向写入器18发送回确认58a-58d。应当理解,在该示例中,边缘层服务器14e不发送确认消息,即,存在一个故障(f1=1)。随后,针对此标签接收f1+k个消息的每个服务器发起写入L2动作,其目的是将标签-值对卸载到后端层中的永久存储装置。
重要的是注意到,写入器不被保持等待内部写入L2操作的完成。也就是说,完成写入操作不需要与后端层通信。而是,写入器一接收到来自边缘层中的服务器的确认的门限数量(例如,f1+k个确认)就会终止。一旦服务器(例如,服务器14a)完成内部写入L2操作,与写入操作相关联的值将从服务器14a的临时存储装置移除(例如,从图2中的存储装置36移除)。服务器还可以借此机会清除其列表中的任何旧条目,这可以有助于消除与来自列表的任何失败的写入相对应的条目。
在本文描述的技术中,广播原语56用于某个元数据消息递送。原语具有这样的属性:如果消息被边缘层中的任何一个服务器消费,则相同的消息最终会由边缘层中的每个非故障服务器消费。在可靠通信信道之上原语的一种实施方式在2017年12月12日提交的第15/838,966号共同未决申请中被描述,并通过引用方式将其全部内容并入本文。在该实施方式中,调用广播协议的过程首先经由点对点信道将消息发送到边缘层的f1+1个服务器的固定集合Sf1+1。这些服务器中的每一个在第一次接收到消息时,在消费消息本身之前将消息发送到边缘层中的所有服务器。当调用广播协议的过程在将消息发送到所有边缘层服务器之前崩溃时,原语在该场景中有所帮助。
现在参考图3C,示出了内部写入L2的操作。边缘层中的每个服务器都使用提交的标签tc来追踪它写入到后端层的最新标签-值对。只有在新标签t与提交的标签tc相比较近期时(即,t>tc),服务器才针对新标签-值对(t,v)发起写入L2操作,否则新标签-值对(t,v)简单地被忽略。
在本文描述的技术中,后端层中的每个服务器在执行期间的任何点处,存储对应于恰好一个标签的编码数据。接收标签编码元素对(t,c)作为内部写入L2操作的一部分的后端层中的服务器用传入的一对替换本地a标签编码元素对如果新标签值t与本地标签值相比较近期(即, )的话。由边缘层中的服务器s发起的写入L2操作在其接收到来自后端层中的f1+d个服务器的确认后终止。应当理解,在这种方法中,没有任何值被永远存储在边缘层的任何非故障服务器中。上面提供了k、d的选择方程。
现在参考图3D,描述了广播原语的作用。应当理解,广播原语的作用是使得边缘层中的所有(非故障)服务器14接收消息,或者边缘层中的任何服务器14都不接收消息。在一个实施例中,广播原语使用O(n2)通信成本协议。在本文描述的过程的一些部分中,需要以下机制以使过程按期望工作。假设客户端想要向所有n个服务器发送消息,则期望的结果是(a)所有的非故障服务器最终都接收到消息或者(b)没有任何服务器接收到消息,这适用于在客户端发送这些消息的同时出现故障的时候。换句话说,不期望的是出现这样的场景:一些非故障服务器接收消息,并且某个另一组非故障服务器集没有接收到它。例如通过使用广播原语来实现保证,即,可以实现该保证的协议。
如图3D所示,写入器向每个边缘层服务器14发送标签-值对(tw,v)。在接收到标签-值对(tw,v)时,每个服务器在边缘层中广播消息,以指示其已接收到标签-值对(tw,v)。例如,服务器14a向服务器14b-14e广播。一旦每个服务器接收到足够数量的广播消息(例如,f1+k个广播消息),服务器向写入器18发送确认。
广播原语至少有两个重要目的。第一,它允许边缘层中的服务器14延迟内部写入L2操作直到向写入器发送确认ack;以及第二,因为系统只回写标签,所以广播原语避免了在读取操作中“回写”值的需要。在从后端层中的服务器读取(因为MBR码不够)时,将成本降低到O(1)是重要的。O(1)是指独立于系统尺寸参数(例如,n1或n2)的量。
现在参考图3E,示出了用于写入操作的所有过程。写入器18确定新标签(t)以供值(v)被写入并将新标签-值对(t,v)50发送到服务器14a。服务器14a将新标签-值对的接收广播到边缘层服务器14b-14e。一旦每个服务器接收到期望的/足够的数量的广播消息(例如,f1+k个广播消息),服务器就将新的标签-值对提交到存储装置17,并且然后如上文结合图3C描述的发起内部写入L2操作。
在一个实施例中,用于写入器w∈W和读取器r∈R的LDS技术包括执行“获取标签”操作的写入器,该操作包括向边缘层中的服务器发送QUERY-TAG(查询标签)。然后,写入器等待来自f1+k个服务器的响应,并且选择最近期(或最高)的标签t。写入器还执行“放入数据”操作,其包括创建新标签tw=(t:z+1;w)并将(PUT-DATA,(tw;v))发送到中的服务器。然后,客户端等待来自中的f1+k个服务器的响应,并终止。
应当理解,在一个实施例中标签用于对象值的版本控制。标签t被定义为一对(z,w),其中,并且w∈W写入器的ID,或者空标签,我们用⊥表示它。我们使用来表示所有可能标签的集合。对于任何两个标签t1;我们认为如果(i)t2.z>t1.z,或(ii)t2.z=t1.z并且t2.w>t1.w或(ii)t1=⊥和t2≠⊥,则t2>t1
边缘层中的每个服务器维护以下状态变量:a)列表,其形成用于作为写入操作的一部分而接收的标签-值对的临时存储装置,b)ΓC 其指示当前正被服务的读取器集合。对(r;treq)∈Γ指示在读取操作期间读取器r请求标签treq。c)tc:在服务器处提交的标签,d)K:由服务器用作内部从L2重新生成操作的一部分的键值集合。键属于并且值属于这里表示与编码数据元素{cs(v),v∈V}相对应的所有可能的助手数据的集合。除此以外,服务器还为各种操作维护三个计数器变量。后端层中的服务器的状态变量包括一个(标签,编码元素)对。对于任何服务器s,符号s、y被用于指代其状态变量y。因此,符号s.y|T代表在执行点T处的s.y的值。应当理解,技术的执行片段只是(所有集合)状态和动作的交替序列。“动作”是指在不等待进一步外部输入的情况下由任何一个过程执行的代码块。
图3F-3H是一系列的流程图,其示出了可以在边缘计算系统和与其耦合的客户端内(例如,在图1所示的客户端、边缘层服务器和后端层服务器内)实现的过程。矩形元素(由图3F中的元素70代表)(在本文中表示为“处理块”)代表计算机软件指令或指令组。菱形元素(由图3F中的元素78代表)(在本文中表示“判定块”)代表影响由处理块代表的计算机软件指令的执行的计算机软件指令或指令组。
替代地,处理和判定块可以代表由功能等效电路(例如,数字信号处理器(DSP)电路或专用集成电路(ASIC))执行的步骤。流程图不描绘任何特定编程语言的语法,而是示出本领域普通技术人员制造电路或生成计算机软件以执行特定装置所要求的处理的所要求的功能信息。应该注意的是,为了清楚起见,可以省略许多例程程序元素,例如循环和变量的初始化以及临时变量的使用。所描述的块的特定序列仅是说明性的,并且可以在不偏离本文寻求保护的构思、结构和技术的精神的情况下进行改变。因此,除非另有说明,下面描述的块是无序的,这意味着在可能的情况下,可以以任何方便的或期望的顺序来执行由块代表的功能。
现在在实施例中参考图3F-3H,处理从处理块70开始,其中,写入器节点(例如,图1中的节点18之一)发起写入请求。这可以例如通过向边缘层中所有的服务器发送查询标签来实现。并且当然,只有中的将不会崩溃(即,无故障)的服务器将最终接收到消息。处理继续前进到块72,其中,写入器确定要写入的值(v)(即,内容或数据)的新标签(t)(例如,时间戳)。处理块70和72包括写入操作的阶段I。
写入操作的阶段II在处理块74中开始,其中,写入器将新的标签-值对(t,v)发送到边缘层中的服务器。优选地,标签-值对被发送到边缘层中的所有服务器。处理继续前进到处理块76,其中,边缘层中接收到标签-值对(t,v)的每个服务器向边缘层中的所有服务器发送数据接收广播消息(例如,元数据)。
处理继续前进到判定块78,其中,确定了标签-值对是否对应于用于该服务器的新标签-值对(即,是与该服务器中已经提交的标签-值对tc相比较近期的新接收标签-值对)。如果做出判定标签对不是新的标签对,则如处理块96所示,向写入器发送确认。
如果在判定块78中,做出判定标签对确实对应于新的标签对,则处理继续前进到块80,其中,边缘层中的服务器将传入的标签-值对(t,v)添加到其相应的本地列表(例如,如图2中存储在每层服务器的存储装置36中)。处理继续前进到判定块82,其中,对服务器是否从预定数量的其它边缘层服务器(例如,至少f1+k个边缘层服务器,包括其自身)接收到广播消息做出判定。选择必须被接收的广播消息的数量,使得在等待边缘层将编码数据卸载到后端层之前,对于写入器而言终止写入操作是“安全”的。“安全”意指保证了至少一个边缘服务器将成功完成写入L2操作。应该注意的是,在实践中这是作为中断驱动过程而不是作为决策循环来实施的。为了方便起见,仅示出由判定块82实施的循环,以便促进对附图说明和在本文中寻求保护的广泛构思的解释的清楚性。
响应于从预定数量的服务器接收广播消息的边缘层服务器,处理继续前进到处理块84,其中,每个边缘层服务器向写入器发送回确认。写入器需要f1+k个ACK,因此至少f1+k个服务器必须发送确认(ACK)。
过程接着继续前进到判定块86,其中,对标签是否与服务器中已经存在的标签(即,提交的标签tc)相比较近期以及标签-值对(t,v)是否仍在用于该边缘层服务器的标签-值对的列表中做出判定。
如果标签不是较最近的,或者如果标签并非仍在列表中,则处理结束。
否则,处理接着继续前进到处理块88,其中,提交的标签tc被更新为标签,并且所有未完成的读取请求用具有小于或等于提交的标签值tc的treq值的标签对值(tc,vc)来服务。如也在处理块88中示出的,这些读取从未完成的读取请求的列表移除。此外,并且如处理块88所示,移除了与小于值tc的标签的列表中的标签-值对相关联的值。处理接着继续前进到处理块90,其中,边缘层服务器将标签-值对卸载到后端层中的永久存储装置。这可以例如通过服务器发起如上所述的写入L2动作来实现。
过程接着继续前进到判定块92,其中,对服务器是否完成内部写入L2操作做出了判定。尽管块92被示出为实施循环的判定块,实践中,这将被实施为中断驱动过程,并且因此处理块94将仅在完成了内部写入L2操作时才被实施。
一旦服务器完成了内部写入L2操作,处理然后就流到处理块94,其中,边缘层节点服务器从其临时存储装置移除与写入操作相关联的值。可选地,服务器也可以从其列表清除任何旧条目。然后,处理结束。
下面结合图4-4J描述读取操作。
现在参考图4,读取器节点20希望取回内容v1。在总体概述中,在读取操作期间,如果读取操作与并发写入或内部写入L2操作重叠,则读取器20从边缘层中的临时存储装置获取服务的标签-值对(t,v)。如果不重叠,则边缘层中的服务器经由从L2重新生成操作(如下所述)重新生成标签编码元素对,然后将其发送到读取器20。
现在参考图4A,在边缘层服务器重新生成标签编码元素对的情况下,所谓的“节点”16提供部分的编码内容,边缘层助手服务器(例如,服务器14a)和读取器20需要使用码C1来解码值v。现在参考图4B,在实施例中,读取操作包括三个阶段:“获取提交的标签”阶段;“获取数据”阶段;以及“放入标签”阶段。
在第一个或“获取提交的标签”阶段期间,读取器标识最小标签treq,它可以在操作结束时返回其对应的值。
在第二个或“获取数据”阶段,读取器将treq发送到中的所有的服务器,等待来自f1+k个不同服务器的响应,使得1)响应中的至少一个包含标签-值对,例如(tr,vr)或者2)响应中的至少k个包含与某个固定标签(例如tr,使得tr≥treq)相对应的编码元素。在后一种情况下,读取器使用码C2来解码与标签tr相对应的值vr。服务器在接收到获取数据请求时,检查是否(treq,vreq)或(tc,vc);tc>treq是其列表;在这种情况下,s立即用对应的对来响应读取器。否则,s将读取器添加到其未完成读取器的列表中,发起从L2重新生成操作,其中,s尝试经由从中的服务器获取帮助的修复过程来重新生成标签编码的数据元素对(t’;c’s);t’≥treq。如果从⊥重新生成失败了,则服务器s只需将(⊥,⊥)发送回读取器。
应该注意的是,不管重新生成操作是否成功,服务器都不会从其未完成读取器的列表移除读取器。在LDS技术中,允许服务器s也在广播响应动作期间用标签-值对来响应注册的读取器。可能的是,在服务器等待从到重新生成的响应的同时,新标签经由广播响应(broadcast-resp)动作由s提交;在这种情况下,如果t≥tc,则服务器s将(t,v)发送到r,并且还从其未完成读取器的列表中将r注销。
现在参考图4C,从从L2读取操作得到四种可能性。第一种可能性是,服务器将标签-值对(tc,vc)作为并发写入操作的一部分进行提交,使得tc≥treq。在这种情况下,服务器将标签-值对(tc,vc)发送到读取器并且注销读取器(不等待从L2读取响应)。
第二种可能性是,服务器重新生成标签-值对(t,c1),使得t≥treq。在这种情况下,服务器将标签-值对(t,c1)发送到读取器,并且不注销读取器。
第三种可能性是,服务器重新生成标签-值对(t,c1),使得t<treq。在这种情况下,服务器将空的集合标签-值对(⊥,⊥)发送到读取器,并且不注销读取器。
第四种可能性是,由于并发写入L2动作,服务器不会重新生成任何标签编码元素对(标签,编码元素)。在这种情况下,服务器将空的集合标签-值对(⊥,⊥)发送到读取器并且不注销读取器。
应当理解,读取器期望来自预定数量的服务器(例如,f1+k个服务器)的响应,使得其之一是标签-值对(标签,值),其中,标签≥treq或它们中的预定数量(例如,它们中的k个)是用于相同标签的标签编码元素对,即标签≥treq(在这种情况下为解码值)。
现在参考图4D,在第三阶段,读取器回写与返回的值vr相对应的标签tr,并且确保在读取操作完成之前中的至少f1+k个服务器具有至少和tr一样高的提交的标签。然而,值vr在第三阶段不被回写,并且这对于降低读取成本是重要的。第三阶段也有助于从中的服务器注销读取器。
现在参考图4E,示出了总体的读取操作。读取器执行“获取提交标签”操作,其中,读取器向边缘层中的服务器发送QUERY-COMM-TAG(查询通信标签)。然后,读取器等待f1+k个响应,并且选择最高的标签,例如treq。读取器还执行“获取数据”操作,其中,读取器将(QUERY-DATA;treq)发送到中的服务器,并等待来自f1+k个服务器的响应,使得它们中的至少一个服务器是(标签,值)对,或者它们中的至少k个是对应于某个公共标签的(标签,编码元素)对。在后一种情况下,使用码C1来解码对应的值。从可用的(标签,值)对中选择与最高的标签相对应的(tr;vr)对。读取器还执行放入数据操作,其中,读取器将(PUT-TAG,tr)发送到边缘层中的服务器,并等待来自中的f1+k个服务器的响应,并且然后返回请求的值vr。
现在参考图4F,在总体概述中,如处理块140所示地开始读取操作,其中,在一个或多个边缘层服务器处接收到读取请求。过程接着继续前进到判定块142,其中,对是否存在与并发写入操作或内部写入L2操作的重叠做出判定。如果做出判定重叠存在,则处理继续前进到处理块144,其中,读取器接收从边缘层中的一个或多个服务器的临时存储装置(例如,从一个或多个边缘层服务器中的临时存储装置)服务的标签-值对(t,v)。
如果在判定块142中做出判定重叠不存在,则处理继续前进到处理块146,其中,边缘层中的一个或多个服务器重新生成标签编码的元素对(标签,编码元素)。在这个场景中,边缘层服务器利用来自后端层服务器的信息。这可以例如经由从L2重新生成操作来实现,如上面结合图4C所述。然后,边缘层重新生成的标签、编码元素对被发送到读取器。
然后,处理继续前进到处理块150,其中,读取器使用适当的码来解码值V。然后,处理结束。
现在参考图4G-4J,读取操作包含三个阶段,其中,第一阶段在处理块160处开始,其中,在一个或多个边缘层服务器处接收读取请求。处理继续前进到处理块162,其中,读取器识别其在操作结束时可以返回的其对应值的最小标签treq。“最小标签”是指由上面解释的标签比较规则定义的最小标签。这结束了阶段I处理。
阶段II处理在处理块164中开始,其中,读取器向边缘层中的所有服务器发送最小标签值treq。
处理继续前进到判定块166,其中,对读取器是否从预定数量的不同边缘层服务器中(包括其自身)接收到响应做出判定,使得以下条件中的至少一个为真:(A)响应包含标签-值对(tr,vr)或(B)至少一个响应包含与某个固定标签tr相对应的编码元素。也就是说,某个标签大于或等于所请求的标签(其可能或可能不是所请求的标签-值对),这意味着标签-值对被存储在该服务器的本地存储装置中,或者必须返回编码元素(这意味着没有任何适当的标签-值对被存储在服务器的本地存储装置中,并且因此服务器必须与L2通信以获取编码元素)。在实施例中,预定数量的不同边缘层服务器可以是至少f1+k个不同的边缘层服务器。
一旦条件之一为真,判定块170和173然后就确定条件A或B中的哪一个为真。如果在判定块170中,判定条件A不为真,则条件B必定为真,并且处理继续前进到块176,读取器使用编码元素解码对应于标签tr的值vr。处理继续前进到块175,其中,读取器回写对应于值vr的标签tr并确保在读取操作完成之前至少f1+k个服务器使它们的提交标签至少与tr一样高。
如果在判定块170中,判定条件A为真,则处理继续前进到块172,其中,选择与最近期(或“最大”)标签相对应的标签-值对。处理接着继续前进到判定块173,其中,对条件B是否也为真做出判定。如果条件B不也是真的,则标签-值对(tr,vr)被设置为标签-值对(t,v)。如上所述,处理继续前进到块175。
如果在判定块173中,判定条件B也为真,则处理继续前进块174,其中,读取器使用码C2来解码对应于标签tr的值vr,并且如果标签t与标签tr相比较近期,则标签-值对(t,r)被重命名为(tr,vr)(即,如果t>tr,则将(t,v)重命名为(tr,vr))。
现在参考图4I,说明性的阶段二服务器协议在块192中开始,其中,服务器s从读取器接收读取请求以及标签请求treq。过程接着流到判定块194,其中,对(treq,vreq)或(tc,vc)tc>treq是否在服务器列表中做出判定。如果条件之一为真,则服务器s立即用处理块196中所示的对应标签-值对响应读取器。然后,处理结束。
如果判定块194中的条件不为真,则处理继续前进到块198,其中,服务器s将读取器与treq一起添加到其未完成读取器的列表。然后,处理继续前进到处理块200,其中,服务器s发起从L2重新生成操作,在该操作中服务器s尝试经由从中的服务器获得帮助的修复过程来重新生成标签编码的数据元素对(tl,cl),tl≥treq。
然后处理继续前进到判定块202,其中,对从后端层重新生成是否失败做出判定。如果重新生成失败,则处理流到块204,其中,服务器s仅简单地空集(┴,┴)发送回读取器。应该注意的是,不管重新生成是否成功,服务器都不会从其未完成读取器的列表移除读取器。也就是说,即使个体的重新生成成功,在边缘中的k个服务器的集合中的重新生成可能不会成功,使得所有的这些服务器都重新生成相同的标签。这是因为并发的写入操作才发生的。在这种情况下,通过不从服务器的未完成读取器的列表移除读取器,我们允许服务器直接将值转发到服务器(即使在个体成功的重新生成之后,但是集体性失败),使得最终完成读取操作。然后阶段二处理结束。
如果在判定块202中判定重新生成没有失败,则处理流到块206,其中,边缘层重新生成的标签编码元素对被发送到读取器。然后,阶段二处理结束。
下面介绍了LDS技术的若干有趣的属性。当证明算法的活性和原子性时,这些可能被认为是有用的。符号Sa C|Sa|=f1+k用于表示在执行期间从不崩溃的中的f1+k个服务器的集合。以下引理仅适用于在引理中出现的相关执行点处的活动的服务器。
对于对应于非故障读取器或写入器的Π中的每一个操作π,存在相关联的(标签,值)对,其被表示为(tag(π),value(π))。对于写入操作π,可以将(tag(π),value(π))对定义为写入器在放入数据阶段发送的消息(tw,v)。如果π是读取,则(tag(π),value(π))对被定义为(tr,v),其中,v是被返回的值,并且tr是相关联的标签。以类似的方式,还可以为那些失败的写入操作定义标签,这些写入操作至少成功地完成了第一轮写入操作。则这只是写入器将在放入数据阶段使用的标签tw,如果该标签还活动的话。如前所述,在完成第一轮之前失败的写入被忽略。
对于LDS的执行中的任何两点T1、T2,如果在执行中T1早于T2发生,则我们认为T1<T2。下面的三个引理描述了提交的标签tc以及列表中的标签的属性。
引理IV.1(提交的标签的单调性)。考虑LDS的执行中的任何两点T1和T2,使得T1<T2。然后,对于任何服务器s.tc|T1≥s.tc|T2。
引理IV.2(较旧标签的垃圾收集)。对于任何服务器在LDS的执行中的任何点T处,如果(t,v)∈s.L,我们有t≥s.tc。
引理IV.3(与完成的操作相对应的标签的持久性)。考虑在LDS的执行中的任何成功的写入或读取操作φ,并让T作为在φ完成后的执行中的任何点。对于在中活跃在T处的f1+k个服务器的任何集合S’,存在s∈S’,使得s.tc|T≥tag(φ)并且max{t:(t;*)∈s.L|T}≥tag(φ)。
下面的引理表明,内部从L2重新生成操作遵守先前完成的内部写入L2操作。在引理的证明中使用了我们的假设f2<n2/3。
引理IV.4(内部读取关于内部写入的一致性)。让σ2表示由中的某个服务器执行的成功的内部写入L2(t,v)操作。接下来,考虑由服务器在完成σ2之后发起的内部从L2重新生成操作π2,使得标签编码的元素对(例如,(t’,c’))由服务器s成功地重新生成。然后,t’≥t;即,重新生成的标签至少与在读取开始前被写入的内容一样高。
以下三个引理是证明读取操作的活性的关键。
引理IV.5(如果内部从L2重新生成操作失败)。考虑由服务器在执行的T点处发起的内部从L2重新生成操作,使得s1未基于响应来重新生成任何标签编码元素对。然后,在执行中存在点e,使得下面的语句为真:存在Sa的子集Sb,使得|Sb|=k,并且其中
引理IV.6(如果内部从L2重新生成操作重新生成与请求标签相比较旧的标签)。考虑由服务器在执行的T点处发起的内部从L2重新生成操作,使得s1仅基于响应成功地重新生成(t,c),其中,t<treq。这里treq是由相关联的读取器在获取数据阶段发送的标签。然后,在执行中存在一个点,使得下面的语句为真:存在Sa的子集Sb,使得|Sb|=k,并且 其中
引理IV.7(如果两个内部从L2重新生成操作重新生成不同的标签)。考虑在执行的T和T’点处分别由中的服务器s和s’发起内部从L2重新生成操作。假设s和s’重新生成标签t和t’,使得t<t’。然后,在执行中存在一个点,使得下面的语句为真:存在Sa的子集Sb,使得|Sb|=k,并且其中
定理IV.8(活性)。考虑任何LDS算法的形式合法的执行,其中,最多f1<n1/2和f2<n2/3个服务器分别在层和中崩溃故障。然后,完成与非故障客户端相关联的每个操作。
定理IV.9(原子性)。LDS算法的每个形式合法的执行都是原子的。
与读取/写入操作相关联的存储和通信成本,并对算法实施延时分析,其中,提供了对成功的客户端操作的持续时间的估计。在有界的延时下我们还分析了多对象系统,以确定临时存储对总体存储成本的贡献。我们计算了其中两层中节点数量为同阶(即,n1=Θ(n2))的系统的成本。我们进一步假设再生码的参数k、d是这样的,k=Θ(n2);d=Θ(n2)。这个假设与实际系统中码的使用是一致的。
在这个分析中,我们假设对应于任何失败的写入操作π,存在成功的写入操作π’使得tag(π)>tag(π)。这实质上避免了其中执行只是一串不成功的写入的病态情况。注意,在证明活性或原子性的同时,并没有施加对执行性质的限制。
引理V.1(存储装置的临时性质)。考虑成功的写入操作π∈β。然后,β中存在执行点Te(π),使得对于β中所有的T’≥Te(π),我们有s.tc|T’≥tag(π)和
对于失败的写入操作π∈β,让π’作为β中的第一个成功的写入,使得tag(π’)>tag(π)。然后,清楚的是对于β中的所有T’≥Te(π’),我们有 t≤tag(π),因此引理V.1也间接地应用于失败的写入。此外,对于任何失败的写入π∈β,我们将π的终止点Tend(π)定义为从引理V.1获得的点Te(π’)。
定义1(扩展写入操作)。对应于任何写入操作π∈β,我们定义假设的扩展写入操作πe,使得tag(πe)=tag(π),Tstart(πe)=Tstart(π)并且Tend(πe)=max(Tend(π);Te(π)),其中,Te(π)是从引理V.1得到的。
β中所有的扩展写入操作的集合应被表示为Πe。
定义2(并发参数δp)。考虑任何成功的读取操作p∈β,并让πe表示在p开始之前完成的β中最后一个扩展写入操作。让∑={σe∈Πe\tag(σ)>tag(πe)并且σe与p重叠}。我们定义并发参数δp为集合∑的基数。
引理V.2(写入、读取成本)。与β中的任何写入操作相关联的通信成本由n1+n1n2=Θ(n1)给出。与β中的任何成功的读取操作p相关联的通信成本由n1(1+)+n1Ι(δp>0)=Θ(1)+n1Ι(δp>0)给出。这里,如果δp>0,则Ι(δp>0)为1,并且如果δp=0,则Ι(δp>0)为0。
应该注意的是,在缺乏来自扩展写入的并发性的情况下,将读取成本降低到Θ(1)的能力来自于在MBR点处再生码的使用。取决于系统参数,在其它操作点处再生码不保证给出相同的读取成本。例如,在两层中的任一层中的服务器数量相同并且具有相同的容错能力相同(即,n1=n2;f1=f2)的系统中,可以证明,即使δp=0,在MSR点处使用码也意味着读取成本为Ω(n1)。
引理V.3(单对象永久存储成本)。在LDS算法的执行中的任何点处,中的(最坏情况)存储成本由Θ(1)给出。
备注2。使用MSR码而不是MBR码将给出存储成本=Θ(1)。对于固定的n2;k,d,由于MBR码而引起的存储成本最多是MSR码的存储成本的两倍。只要我们关注阶结果(order-result),MBR码在存储成本和读取成本二者方面都做得很好;同样参见备注1。
对于有界延时分析,假设各种点到点的链路上的延迟的上界如下:1)T1,对于在中的服务器和客户端之间的任何链路,2)T2,对于在中的服务器和中的服务器之间的任何链路,以及3)T0,对于在中的两个服务器之间的任何链路。我们还假设,当与任何链路上的延迟相比时,任何过程上的本地计算所花费的时间可以忽略不计。在边缘计算系统中,T2通常远高于T1和T0。
引理V.4(写入、读取延时)。β中的成功写入操作在4T1+2T0的持续时间内完成。相关联的扩展写入操作在最长(3T1+2T0+2T2;4T1+2T0)的持续时间内完成。β中的成功的读取操作在最长(6T1+2T2;5T1+2T0+T2)的持续时间内完成。
1)经由多对象分析,对临时存储装置的并发写入操作的数量的影响:考虑经由LDS算法的N个独立实例,实施在本文中描述的两层存储系统中的N个原子对象。假设每个对象的值的大小为1。让θ表示由系统在T1时间单位的任何持续时间内经历的并发扩展写入操作的总数的上界。在θ的适当条件下,可以证明,总存储成本以中的永久存储成本为主。做出了如下的简化假设:1)系统是对称的,使得n1=n2; T0=T1,并且3)所有调用的写入操作都是成功的。应该注意的是有可能放宽这些假设中的任何假设并给出更为复杂的分析。同样,让μ=T2/T1。
引理V.5(临时存储的相对成本)。在执行中的任何点处,和中的最坏情况的存储成本上界为[5+2μ]θn1和。具体地说,如果θ<<,则总体存储成本以中的永久存储成本为主,并由Θ(N)给出。
上面描述的是用于支持读取/写入操作的强一致性数据存储的两层模型。本文描述的系统和LDS技术是由边缘计算应用的激增激发的。在系统中,第一层更接近(就网络延时而言)客户端,并且第二层存储大量数据。在频繁的读取和写入操作的情况下,大多数操作都是在不需要与后端层通信的情况下被服务的,从而减少了操作的延时。在那方面,第一层充当代理缓存。如本文描述的,在一个实施例中,再生码用于同时优化存储和读取成本。在实施例中,可能的是在后端层中实施纠删码的服务器的修复。实施方式的模块性可能使得层的后端中的修复问题比现有技术系统中的修复问题更简单。此外,认识到实施方式的模块性可以有利地用于实施不同的一致性策略例(如规律性),而不影响后端中的纠删码的实现。类似地,来自再生码的类别的其它码包括但不限于后端层中随机线性网络编码(RLNC)的使用,这些其它码也可以在不显著影响客户端协议的情况下被使用。
Claims (20)
1.一种用于在具有边缘层和后端层的网络中使用的方法,所述边缘层包括第一边缘服务器和多个第二边缘服务器,并且所述后端层包括多个后端服务器,所述方法包括:
由所述第一边缘服务器接收与内容相对应的第一值-标签对,所述第一值-标签对是从写入器接收的,所述第一值-标签对包括所述内容的第一值和第一标签;
发送指示已经由所述第一边缘服务器接收到所述第一值-标签对的第一数据接收广播消息,所述第一数据接收广播消息是从所述第一边缘服务器发送到所述多个第二边缘服务器的;
由所述第一边缘服务器接收多个第二数据接收广播消息,每个第二数据接收广播消息是由所述多个第二边缘服务器中的不同的第二边缘服务器发送的,并且指示所述第二边缘服务器也已经从所述写入器接收到所述第一值-标签对;
由所述第一边缘服务器通过使用再生编码基于所述第一值-标签对来生成第一编码数据,所述第一编码数据对所述内容的所述第一值的一部分进行编码;以及
将所述第一编码数据从所述第一边缘服务器发送到所述多个后端服务器中的给定的后端服务器,
其中,仅当在所述第一边缘服务器处接收到预定数量的第二数据接收广播消息时,所述第一编码数据才被生成并且被发送到所述给定的后端服务器。
2.根据权利要求1所述的方法,还包括:
由所述第一边缘服务器向所述写入器发送确认,以指示所述第一边缘服务器已经接收到所述第一值-标签对,所述确认是在所述预定数量的第二数据接收广播消息被接收之后并且在所述第一编码数据被生成之前发送的。
3.根据权利要求1所述的方法,其中,所述第一边缘服务器被配置为:在生成和发送所述第一编码数据之前,等待直到所述预定数量的第二数据接收广播消息在所述第一边缘服务器处被接收为止。
4.根据权利要求1所述的方法,还包括:由所述第一边缘服务器接收与所述内容相对应的第二值-标签对,其中:
所述第二值-标签对包括所述内容的第二值和第二标签,
所述内容的所述第一值和所述内容的所述第二值是所述内容的不同版本,并且
仅当与所述第二值相比所述第一值是所述内容的较近期的版本时,所述第一编码数据才被生成和发送。
5.根据权利要求1所述的方法,还包括:
由所述第一边缘服务器接收与所述内容相对应的第二值-标签对,所述第二值-标签对包括所述内容的第二值和第二标签;
由所述第一边缘服务器通过比较所述第一标签和所述第二标签来检测所述第一标签是否大于所述第二标签,
当所述第二标签大于所述第一标签时:由所述第一边缘服务器通过使用再生编码基于所述第二值-标签对来生成第二编码数据,并且将所述第二编码数据从所述第一边缘服务器发送到所述给定后端服务器,
其中,所述第二编码数据对所述内容的所述第二值的一部分进行编码,并且
其中,当所述第一标签大于所述第二标签时,所述第一编码数据被生成和发送。
6.根据权利要求1所述的方法,其中,所述第一数据接收广播消息是使用广播协议来发送的,所述广播协议保证如果所述第一数据接收广播消息由所述多个第二边缘服务器之一接收,则所述第一数据接收广播消息也将由所述多个第二边缘服务器中的所有剩余的非故障第二边缘服务器接收。
7.根据权利要求1所述的方法,还包括:
接收针对包括请求标签的所述内容的读取请求,所述读取请求是在所述第一边缘服务器处从读取器接收的;
比较所述请求标签和所述第一标签;以及
从所述给定的后端服务器取回所述第一编码数据,并且将所述第一编码数据发送到所述读取器,
其中,基于所述请求标签和所述第一标签之间的比较的结果,所述第一编码数据被从所述给定的后端服务器取回并且被转发到所述读取器。
8.一种用于在具有边缘层和后端层的网络中使用的装置,所述边缘层包括多个边缘服务器,并且所述后端层包括多个后端服务器,所述装置包括:
存储器;
通信接口;以及
至少一个处理器,其操作地耦合到所述存储器和所述通信接口,所述至少一个处理器被配置为:
接收与内容相对应的第一值-标签对,所述第一值-标签对是从写入器接收的,所述第一值-标签对包括所述内容的第一值和第一标签;
发送指示所述第一值-标签对已经由所述至少一个处理器接收的第一数据接收广播消息,所述第一数据接收广播消息是发送到所述多个边缘服务器的;
接收多个第二数据接收广播消息,每个第二数据接收广播消息是由所述多个边缘服务器中的不同的边缘服务器发送的,并且指示所述边缘服务器也已经从所述写入器接收到所述第一值-标签对;
通过使用再生编码基于所述第一值-标签对来生成第一编码数据,所述第一编码数据对所述内容的所述第一值的一部分进行编码;以及
由所述通信接口将所述第一编码数据发送到所述多个后端服务器中的给定的后端服务器,
其中,仅当预定数量的第二数据接收广播消息由所述至少一个处理器接收时,所述第一编码数据才被生成并且被发送到所述给定的后端服务器。
9.根据权利要求8所述的装置,其中,所述至少一个处理器还被配置为:
向所述写入器发送确认,以指示所述至少一个处理器已经接收到所述第一值-标签对,所述确认是在所述预定数量的第二数据接收广播消息被接收之后并且在所述第一编码数据被生成之前发送的。
10.根据权利要求8所述的装置,其中,所述至少一个处理器被配置为:在生成和发送所述第一编码数据之前,等待直到所述预定数量的第二数据接收广播消息由所述至少一个处理器接收为止。
11.根据权利要求8所述的装置,还包括:接收与所述内容相对应的第二值-标签对,其中:
所述第二值-标签对包括所述内容的第二值和第二标签,
所述内容的所述第一值和所述内容的所述第二值是所述内容的不同版本,并且
仅当与所述第二值相比所述第一值是所述内容的较近期的版本时,所述第一编码数据才被生成和发送。
12.根据权利要求8所述的装置,还包括:
所述至少一个处理器还被配置为:
接收与所述内容相对应的第二值-标签对,所述第二值-标签对包括所述内容的第二值和第二标签;
通过比较所述第一标签和所述第二标签来检测所述第一标签是否大于所述第二标签,
当所述第二标签大于所述第一标签时:通过使用再生编码基于所述第二值-标签对来生成第二编码数据,并且将所述第二编码数据发送到所述给定后端服务器,
所述第二编码数据对所述内容的所述第二值的一部分进行编码,并且
当所述第一标签大于所述第二标签时,所述第一编码数据被生成和发送。
13.根据权利要求8所述的装置,其中,所述第一数据接收广播消息是使用广播协议来发送的,所述广播协议保证如果所述第一数据接收广播消息由所述多个边缘服务器之一接收,则所述第一数据接收广播消息也将由所述多个边缘服务器中的所有剩余的非故障边缘服务器接收。
14.根据权利要求8所述的装置,其中,所述至少一个处理器还被配置为:
接收针对包括请求标签的所述内容的读取请求,所述读取请求是从读取器接收的;
比较所述请求标签和所述第一标签;以及
从所述给定的后端服务器取回所述第一编码数据,并且将所述第一编码数据发送到所述读取器,
其中,基于所述请求标签和所述第一标签之间的比较的结果,所述第一编码数据被从所述给定的后端服务器取回并且被转发到所述读取器。
15.一种存储一个或多个处理器可执行指令的非暂时性计算机可读介质,所述指令在由至少一个处理器执行时使所述至少一个处理器执行用于在具有边缘层和后端层的网络中使用的方法,所述边缘层包括多个边缘服务器,并且所述后端层包括多个后端服务器,所述方法包括:
接收与内容相对应的第一值-标签对,所述第一值-标签对是从写入器接收的,所述第一值-标签对包括所述内容的第一值和第一标签;
发送指示所述第一值-标签对已经由所述至少一个处理器接收的第一数据接收广播消息,所述第一数据接收广播消息是发送到所述多个边缘服务器的;
接收多个第二数据接收广播消息,每个第二数据接收广播消息是由所述多个边缘服务器中的不同的边缘服务器发送的,并且指示所述边缘服务器也已经从所述写入器接收到所述第一值-标签对;
通过使用再生编码基于所述第一值-标签对来生成第一编码数据,所述第一编码数据对所述内容的所述第一值的一部分进行编码;以及
将所述第一编码数据发送到所述多个后端服务器中的给定的后端服务器,
其中,仅当预定数量的第二数据接收广播消息在所述至少一个处理器处被接收时,所述第一编码数据才被生成并且被发送到所述给定的后端服务器。
16.根据权利要求15所述的非暂时性计算机可读介质,其中,所述方法还包括:
向所述写入器发送确认,以指示所述至少一个处理器已经接收到所述第一值-标签对,所述确认是在所述预定数量的第二数据接收广播消息被接收之后并且在所述第一编码数据被生成之前发送的。
17.根据权利要求15所述的非暂时性计算机可读介质,其中,所述方法还包括:在生成和发送所述第一编码数据之前,等待直到所述预定数量的第二数据接收广播消息被接收为止。
18.根据权利要求15所述的非暂时性计算机可读介质,其中:
所述方法还包括:接收与所述内容相对应的第二值-标签对,
所述第二值-标签对包括所述内容的第二值和第二标签,
所述内容的所述第一值和所述内容的所述第二值是所述内容的不同版本,并且
仅当与所述第二值相比所述第一值是所述内容的较近期的版本时,所述第一编码数据才被生成和发送。
19.根据权利要求15所述的非暂时性计算机可读介质,其中:
所述方法还包括:
接收与所述内容相对应的第二值-标签对,所述第二值-标签对包括所述内容的第二值和第二标签;
通过比较所述第一标签和所述第二标签来检测所述第一标签是否大于所述第二标签,以及
当所述第二标签大于所述第一标签时:通过使用再生编码基于所述第二值-标签对来生成第二编码数据,并且将所述第二编码数据发送到所述给定后端服务器,
其中,第二编码数据项对内容项的第二表示的一部分进行编码,并且
其中,当所述第一标签大于所述第二标签时,第一编码数据项被生成和发送。
20.根据权利要求15所述的非暂时性计算机可读介质,其中,所述第一数据接收广播消息是使用广播协议来发送的,所述广播协议保证如果所述第一数据接收广播消息由所述多个边缘服务器之一接收,则所述第一数据接收广播消息也将由所述多个边缘服务器中的所有剩余的非故障边缘服务器接收。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762509390P | 2017-05-22 | 2017-05-22 | |
US62/509,390 | 2017-05-22 | ||
PCT/US2018/033844 WO2018217715A1 (en) | 2017-05-22 | 2018-05-22 | Layered distributed storage system and techniques for edge computing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110651262A CN110651262A (zh) | 2020-01-03 |
CN110651262B true CN110651262B (zh) | 2024-03-26 |
Family
ID=64272249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880033298.2A Active CN110651262B (zh) | 2017-05-22 | 2018-05-22 | 分层分布式存储系统以及用于边缘计算系统的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10735515B2 (zh) |
EP (1) | EP3631641A4 (zh) |
CN (1) | CN110651262B (zh) |
WO (1) | WO2018217715A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112788089B (zh) * | 2019-11-11 | 2023-11-07 | 财团法人工业技术研究院 | 多边缘云的网络通讯控制方法及边缘运算装置与系统 |
CN111522656A (zh) * | 2020-04-14 | 2020-08-11 | 北京航空航天大学 | 一种边缘计算数据调度与分布方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102891869A (zh) * | 2011-07-20 | 2013-01-23 | 郑州威科姆科技股份有限公司 | 一种内容分发网络及内容发布、调度方法 |
CN103109511A (zh) * | 2010-04-07 | 2013-05-15 | 杰出网络公司 | 内容分发网络中的部分对象分配 |
CN105930103A (zh) * | 2016-05-10 | 2016-09-07 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
CN106375362A (zh) * | 2015-07-24 | 2017-02-01 | 广州市百果园信息技术有限公司 | 分布式服务器的缓存同步方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102971712A (zh) * | 2010-05-19 | 2013-03-13 | 阿卡麦科技公司 | 边缘服务器http post消息处理 |
US20120266044A1 (en) * | 2011-04-18 | 2012-10-18 | The Chinese University Of Hong Kong | Network-coding-based distributed file system |
US8769138B2 (en) * | 2011-09-02 | 2014-07-01 | Compuverde Ab | Method for data retrieval from a distributed data storage system |
US9892198B2 (en) * | 2012-06-07 | 2018-02-13 | Oath Inc. | Page personalization performed by an edge server |
US20140304513A1 (en) | 2013-04-01 | 2014-10-09 | Nexenta Systems, Inc. | Storage drive processing multiple commands from multiple servers |
US9756128B2 (en) * | 2013-04-17 | 2017-09-05 | Apeiron Data Systems | Switched direct attached shared storage architecture |
US20160012465A1 (en) * | 2014-02-08 | 2016-01-14 | Jeffrey A. Sharp | System and method for distributing, receiving, and using funds or credits and apparatus thereof |
-
2018
- 2018-05-22 EP EP18806248.3A patent/EP3631641A4/en active Pending
- 2018-05-22 WO PCT/US2018/033844 patent/WO2018217715A1/en active Application Filing
- 2018-05-22 CN CN201880033298.2A patent/CN110651262B/zh active Active
- 2018-05-22 US US15/986,202 patent/US10735515B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109511A (zh) * | 2010-04-07 | 2013-05-15 | 杰出网络公司 | 内容分发网络中的部分对象分配 |
CN102891869A (zh) * | 2011-07-20 | 2013-01-23 | 郑州威科姆科技股份有限公司 | 一种内容分发网络及内容发布、调度方法 |
CN106375362A (zh) * | 2015-07-24 | 2017-02-01 | 广州市百果园信息技术有限公司 | 分布式服务器的缓存同步方法及系统 |
CN105930103A (zh) * | 2016-05-10 | 2016-09-07 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
Non-Patent Citations (2)
Title |
---|
lei gao et al.Application Specific Data Replication for Edge Services.www2003:the twelfth international world wide web.2003,第449-460页. * |
王意洁 ; 许方亮 ; 裴晓强 ; .分布式存储中的纠删码容错技术研究.计算机学报.2017,(第01期),第236-255页. * |
Also Published As
Publication number | Publication date |
---|---|
EP3631641A4 (en) | 2021-02-17 |
US20180337996A1 (en) | 2018-11-22 |
WO2018217715A1 (en) | 2018-11-29 |
EP3631641A1 (en) | 2020-04-08 |
CN110651262A (zh) | 2020-01-03 |
US10735515B2 (en) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956601B2 (en) | Fully managed account level blob data encryption in a distributed storage environment | |
US10489422B2 (en) | Reducing data volume durability state for block-based storage | |
US10764045B2 (en) | Encrypting object index in a distributed storage environment | |
US9411685B2 (en) | Parity chunk operating method and data server apparatus for supporting the same in distributed raid system | |
US9405483B1 (en) | Optimized write performance at block-based storage during volume snapshot operations | |
US9372870B1 (en) | Peer to peer code generator and decoder for digital systems and cluster storage system | |
CN101488104B (zh) | 一种实现高效安全存储的系统和方法 | |
US9250811B1 (en) | Data write caching for sequentially written media | |
US11074129B2 (en) | Erasure coded data shards containing multiple data objects | |
US9477551B1 (en) | Method and system for data migration between high performance computing architectures and file system using distributed parity group information structures with non-deterministic data addressing | |
US10509582B2 (en) | System and method for data storage, transfer, synchronization, and security | |
WO2011140991A1 (zh) | 分布式文件系统的文件处理方法及装置 | |
US20170371571A1 (en) | Efficient erasure coding of large data objects | |
Konwar et al. | A layered architecture for erasure-coded consistent distributed storage | |
CN110651262B (zh) | 分层分布式存储系统以及用于边缘计算系统的技术 | |
US11038960B1 (en) | Stream-based shared storage system | |
Zorgui et al. | Storage-efficient shared memory emulation | |
US11874796B1 (en) | Efficient garbage collection in optimistic multi-writer database systems | |
US20240330320A1 (en) | Synchronous database replication using erasure coding | |
US12086445B1 (en) | Maintaining partition-level parity data for improved volume durability | |
CN116149575B (zh) | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 | |
Xia et al. | In‐network block repairing for erasure coding storage systems | |
Yang | Efficient Consensus and Synchronization for Distributed Systems | |
de Juan-Marín et al. | THE OVERHEAD OF SAFE BROADCAST PERSISTENCY |
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 |