LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > MEMO的多层次容错机制设计

MEMO的多层次容错机制设计

2021-07-13 Memolabs 来源:区块链网络

容错机制的好坏是计算机系统性能是否优良的一大体现。

在数据存储领域,容错机制是指系统中出现数据损坏或丢失时,系统能够自动将损坏或丢失的数据恢复到发生事故前的状态,使系统能够连续正常运行的一种技术。

分散式存储系统以分布在全球的边缘设备为节点,P2P点对点环境低可信的特点使系统的可靠性和安全性都受到了很大的挑战,因此容错机制的设计更为重要。

一、容错机制常用技术

常见的数据容错技术有两种,多副本技术和纠删码技术。

1

多副本技术

多副本技术即将原始数据生成多个备份,并分别存储在多个不同的存储节点上。当出现某个节点不可用的情况下,便可以使用剩余节点上的数据进行操作,提升了存储系统的可靠性。多副本技术的数据修复过程也很简单,只需要从存活节点上拷贝副本数据到新加入的节点上就可。

多副本技术的优点是使用简单、稳定性高、维护方便。但其缺点也很明显,因为存储多个副本使得存储开销大大增加,当存储的数据量达到PB甚至EB时,其存储开销将会是不小的负担,同时也会提高硬件的电力开销、增加硬件设备空间开销等。

2

纠删码技术

纠删码是将数据分割成片段后再将冗余数据块扩展、编码,并将其存储在不同的位置上的一种技术。

纠删码的基本原理是把传输的信号分段,加入一定的校验再让各段间发生一定的联系,即使在传输过程中丢失掉部分信号,接收端仍然能通过算法把完整的信息计算出来。切确的讲,纠删码技术本身更多是用于传输,而并不是存储。

RS是一种最经典的纠删码,它的工作原理首先是将存储数据切割成k个同等大小的原始数据块,记为(D1,D2,。。。Dk),接着根据一个固定的编码法则对这些原始数据块计算出N个冗余数据块,记为(P1,P2,。。。Pn),这(k+n)个数据块就称为一个条带,RS码的容错机制使得下载同一条带的任意k个数据块,都可以通过解码算法修复出这个条带的所有数据块。

纠删码的优点是空间消耗低,因此成为目前分布式存储系统中最常用的技术。与多副本技术相比,其缺点是修复成本过高,因为纠删码的修复过程是一个降级读的和过程,修复时读取的数据块往往是丢失数据块的几倍之多。

多副本技术与纠删码技术各项性能对比表:

二、Filecoin和Storj的容错技术

任何技术都并非十全十美,多副本容错性高的同时也带来了冗余程度高,纠删码冗余度低但是其数据读取和恢复效率都比较低。

比如Filecoin网络中的所有文件只能使用多副本技术进行容错,而且为了保证数据的安全性设计了复杂的验证机制,使得实际应用中存储和下载往往需要消耗数小时,使得可用性也极低。

而Storj则是综合利用了两种技术,它所存的文件均进行加密后,使用纠删码进行容错,且原始数据与校验数据均保存在存储节点上。但是它提供了一个比较中心化的元数据存储系统,专门存放元数据指针,用户必须信任该元数据存储系统,且元数据会定期备份到Storj中,而每个用户的元数据存储系统将部署在卫星节点上。其元数据使用的是多副本容错,并且要求用户信任其元数据存储系统,但是以p2p的环境特点来看,元数据存储系统并不能摆脱百分百不作恶的可能。并且,Storj目前仅考虑使用最简单的RS纠删码作为容错手段,在数据修复、丢失识别等阶段还有很大的提升空间。

三、MEMO的容错机制设计目标

鉴于Filecoin和Storj在安全性和可靠性上都受到一定考验,因此MEMO的容错机制设计初衷,就是希望设计出一种可靠性和安全性更高的容错机制。

因此MEM0在容错机制设计上立下了以下几个目标:

1.冗余度尽可能低

2.容错能力尽可能高

3.修复性能尽可能好

4.一致性必须得到保证

为了实现以上目标,即在保证安全可靠的同时,最大程度减少整个容错机制的冗余度。

这其实是一个不断寻找平衡的过程,如果只用多副本技术,容错能力可达到最高,但是系统冗余却非常高;如果只用纠删码技术,冗余度可达到最低,但是容错能力和修复能力都较低。

最终MEMO设计了多层次容错机制,采用了冗余度高的多副本容错为主、冗余度低的纠删码容错为辅的设计策略。同时以各数据的体量和应用特点为依据,体量大的数据尽量采用纠删码容错,体量小的数据可采用多副本容错。

四、MEMO系统中三类数据的特点

MEMO所设计的容错机制中,涉及对三种数据进行操作,分别是基本映射关系数据、元数据和数据。

基本关系映射数据(智能合约):用来表示用户方、中介方和存储方达成存储协议的数据,基本映射关系数据规定了存储协议中用户的需求、中介方和存储方的数量、确定的存储价格等基本信息,是该分散式存储模型中最基本的的数据类型,基本映射关系数据具有体量小且稳定的特点。

元数据是指数据的数据,它规定了数据的存放位置、修改时间、权限等信息,只有先获取了元数据,才能找到用户方上传的数据,元数据具有体量适中、更改频率适中、读取频繁的特点。

数据是指用户方存储到存储方上的实际数据,是整个分散式存储模型中占比最大的数据,也是赋予分散式存储模型存在意义的数据,具有体量大且更改频繁的特征。

五、MEMO容错机制的设计:

利用每一种数据各不相同的特点,Memolabs研发团队设计了多层次处理机制,其目标是是保障数据安全性的同时,提升容错的性价比。

1

基本映射关系数据的容错设计

基本映射关系非常重要,它确定了一个服务模型,让用户知道将数据存放在哪些存储方上,中介方向哪些存储方进行验证,因此基本映射关系数据的容错机制需要考虑完整性和可靠性两方面。

完整性设计:MEMO设计将基本关系映射数据保存在区块链上,因为区块链自身具有可溯源、不可篡改的特性,区块链中每个区块的哈希值都依靠前一区块的哈希值计算而得,因此可保证区块都以此连接,最终形成了从初始块到当前区块的一条完整链,区块中的任何数据都可以追本溯源。如果有恶意节点想要改变区块链上某一区块内的数据,那么意味着需要将该区块以及之后的所有区块都进行更改,因此要想改变区块链上区块的信息是一件几乎不可能发生的事。于是,保存在区块中的基本映射关系数据也就拥有了防篡改的特点,保证其完整性。

可靠性设计:对基本映射关系数据进行多副本容错处理,这样设计的原因是因为多副本容错技术具有修复流量小、无计算开销的优点,而基本映射关系数据需要经常读取且所占用的存储空间小,其数据一般在KB级以内,其重复性要求其修复代价尽可能低,故对基本映射关系进行多副本处理再合适不过。

2

元数据的容错机制

元数据主要起着描述用户方的数据属性的作用,元数据用来支持如指示存储位置、历史数据、资源查找等功能。元数据的容错机制设计同样需要从完整性和可靠性两方面进行考虑。

完整性设计:为了防止元数据遭到篡改,设计使用BLS签名正确性验证方案,并且在元数据和数据在被读取时进行挑战验证过程。因为该验证方案具有传输数据量小、验证迅速的的特点,非常适合在p2p这一类的低可信环境使用。而如果采用哈希值的验证方式,由于低可信环境各节点不可信的特点,被验证方不得不传输所有数据,当验证数据的数据级很大时会对存储网络带来极大的影响,甚至可能造成崩溃。

当用户需要下载所存数据、中介方需要修复丢失的数据或元数据、对数据或元数据进行挑战时均需要进行数据正确性验证,为了使得验证过程能顺利进行,上传数据和元数据时也必须进行BLS签名方案的编码操作,将BLS签名与数据一块上传至存储方节点中。

可靠性设计:为了防止元数据的丢失,同样对元数据使用多副本容错方式进行处理,将其副本保存在存储方节点上,因为元数据在系统中读取和更新频率都比较高,如果使用纠删码容错方式会导致数据的读取延时非常大且更新繁琐,因为更新必须要先对元数据进行修复,而使用多副本容错则省去了元数据修复这一过程,简化了元数据的更新流程。

3

数据的容错机制

用户的数据既是整个系统中占比最高的数据,也是与用户方体验息息相关的数据。

完整性设计:因为数据与元数据只是存在体量差异、功能差异,而两者均存储在分散式存储模型中的存储层,即均存储在一个低可信度的环境中,因此就其完整性设计方面来说,两者并无区别,故也需要对数据进行正确性验证,出于与元数据容错机制中相同的考虑,对数据使用BLS签名的正确性验证策略。

可靠性设计:考虑到用户方的需求具有多样性特点,所以数据既可选择使用多副本容错方式进行处理,又可选择使用纠删码容错方式进行处理,在这里,容错方式的选择权交给用户方。而为了减少存储方的存储开销,在用户方没有明确容错方式的前提下,数据默认使用纠删码容错方式进行处理,该做法的好处在于可以减轻存储方的存储开销,相较于纠删码的降低读代价,存储方的存储代价则显得更为重要。

4

数据修复机制

在多层次容错基础上,为了提高修复性能,MEMO从修复并行性、修复传输量、修复时机选择这三个方面入手,采用延迟修复策略、并行修复策略、优化丢失数据块识别过程等手段,提高整个容错机制的修复性能。

MEMO独创了RAFI策略(风险感知的数据失效确认策略),RAFI主要优化了风险分类和确认策略这两个步骤。

在风险分类上,RAFI不再是根据条带中丢失数据块的个数,而是根据条带中失效数据块的个数进行风险分类,其中失效数据块指所拥有丢失数据块和不可用数据块,在这种分类方法下,可以有效减少数据不可用与丢失的可能性;而在确认策略上,RAFI的核心设计原则是:一个条带拥有的失效数据块越多则这些数据块的失效确认时间应越短,即对不同风险的条带设置不同的超时阈值,从而提高可靠性和可用性。

在失效确认上,采用RAFI策列,在失效确认至失效修复前,采用延迟修复策略,最后的修复过程,则根据数据所使用的容错策略进行响应的修复。

小结

多层次容错设计是MEMO保证数据完整性和可靠性的一大基础,MEMO根据各类数据的特点进行分层设计,将多副本技术和纠删码技术进行适当组合,力求在可靠性、安全性和冗余度之间找到一个最佳平衡。另外,MEMO还利用延迟修复机制和RAFI提升了数据修复效率,让系统的安全性和可靠性得到进一步提升。

—-

编译者/作者:Memolabs

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...