带你读《对象存储实战指南》第二章协调和复制2.2复制(二)

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 《对象存储实战指南》第二章协调和复制2.2复制(二)

3. 数据副本维度的一致性分类

 

服务端数据副本维度的一致性,定义服务端多个数据副本的不同对象访问表现及相同   对象并发访问表现,如图 2-152007年,AndrewTanenbaum DistributedSystemsPrinciplesandParadigms书中定义如下典型类型。

image.png

2-15     副本一致性模型对

 

·   顺序一致性 ( SequentialConsistency)   。所有请求在多个数据副 间按相同顺序执行例如, W1(X)示对象 X写请1, R2(X)示对象 X读请求 2, W3(Y)示对象 Y写请求 3,果数据副本 l1~3序执行表示为 Wi(X)-(X)-> W3(Y), 那么 所有数据副本都必须按该顺序此时服务端需要进行全局序列化控制,对所有请求进行    访问排序,类似千提供局的锁,对性能有较大影响

·  因果一致性(CausalConsistency) 存在先后 依赖关系 的写(因果关系),必须在所有数据副本中都表现为相同的顺序,而没果关系 在不同数据副本中 则可以表现为不同的顺序例如W1(X)表示对象X写请1,   W2(X)示对象X写请2'      (X) W2(X) 存在因果关系 , 并且 川(X)(X) 发生 表示为(X)-(X) , 那么所有数据本存储的顺序为 W1(X)-(X)如果W3( Y)表示Y的写请求 3时发生 ,数据副本 1写入顺序可表示为 川(X)-(X)-(Y),据副本 2入顺序以表W1(X)->W3(Y)- > W2(X)相比较于顺序一致性,因果一致性只需要在相同对象   上控制并发,无须对所有对象的请求做并发控制似细粒度的锁,从而提供更好的性能

·  最终一致性 ( EventualConsistency ) 。多个数据副本需要全部同时更新完毕才返回 ,只需要最后将所有数据副本更新为相同值即可例如,服务端 3个数据副本收到更新X的值为 101,  只需要 2数据副本完成更新就可以返回户端,第 3数据本可能在 lmin后更新 101相比前面的一模型要求所有数据副本 必须全部更新返回,最终一致以降低更新开销 在某数据副本发生异时保证时延。

尽管服务端数据副 本为最终致性,但只要服务端读/写 控制得当,在客户端读请求就能得到最新写入数据 客户端因有更高致性

 

2.2.3复制协议 

务端数据副本维 度致性和复 制协议紧密 相关,复制协议控制多个 请求的顺序,以及单请求的持久化保存成功 的决策。客户端 维度的数据致性也和制协议紧密 相关复制协议控制 求的响应返回逻辑

2007年,AndrewTanenbaumDistributedSystems:PrinciplesandParadigms义如下典型类型的制协议: 千主制协议 ( PrimaryBasedProtocols) 客户端写复制协( ClientReplicateWriteProtocols ),如图 2-16所示

 image.png

2-16制协议对比

 

从图 2-16中可见,正常情况下,基于主复制 协议请求至需要 21跳由端发送请求给主 ( Primary) ,   2跳由主并行将请求发给多个副本)。客户端写复制协议完成

请求需要 l(客户端并行发送请求给多个副本)。因此客户端写复制协议的时延更 短,但在并发冲突时代价很大。而基于主复制协议增加了时延,但是高效地解决了并发冲突问题。

 

1.    . 基于主复制协议

 

基于主复制协议要求所有客户端将请求发给主,由主节点为请求编,如图2-16  ( a)    所示W1(X)的序列号为 lW2(X)的序列号为 2W3(Y)的序列号为 3,由主将请求发给其他副本, 其他副本根据数据副本 的致性模型 (顺序致性、因果致性、最终致性)执行请求。

同时主节点控制请求返回的决策 机制。例如,复制副本总数为   N   时,采用最终致性模型,保证主写入 W1(X)成功,并且主收到其他副 本写入 叭(X)的响应。如果成功 响应的总数?   N/2+1,则返回客户 端 叭(X)写入成功,在后端保证所有副本都写入 川(X)。当节点出现故障时 ,甚至主节点出现故障时 ,基千 投票机制仍然保证能返回最新W1(X)写入数据,从而在客户端维度体现为强一 致性

为了保证基千主复制协议在节点出现故障后能够快速恢复,可以采用日志复制技术,在现上 YR/RAFT是非常 好的参考算法

2.    客户端写复制协议

 

客户端写复制协议要求 客户端部署制逻辑代码实现数据复制,并且所 有客户端能够并发地执行写入请求。由于不像基千主复制协议那样,由主节点负责请求的顺序性,因此并发冲突是客户端写复制协议的挑战,它只适合并发冲突较少的场景。为了解决并发冲突,客户端写复制协议提供了以下 2种方案。

·   主动复制 ( ActiveReplication)。为了控制客户端并发冲突,客户端指定专用的协调节点列号,由该协调节点负责为所户端请求 列号,列号就是逻辑时钟( LogicalClock)  技术,从而可以保证所有请求的先后顺序但是该方法 存在扩展性问题,因为所有客户端的请求都需要向它申请序列号,所以非常容易形成系统瓶颈。

·   投票复制 ( Quorum-basedReplication) 投票 是解决冲突的机制,定义系统的副本总数为 N, 读该对象时成功返回 的副本数为读 投票 RQ,写 该对象时成功返回的副本 数为写投票 WQ,那么 必须满 足如下 条件。

条件 l:  RQ+ WQ>N 

条件 2:  Wq> N/2 

由于RQ+ WQ> N,表示读、写存在重叠,因此能够读到最新数。同WQ> N/2,表示写入超过半成功 ,因此在副本节点出现故障后 仍然能够让系统最终更新为最新值。如果写入冲突少,则投票复制非常好;如果冲突较多,则将带来复杂的冲突处理,并影响系统性能。

 

2.2.4存储领域的复制技术应用 

1.    SAN/NAS的复制技术

 

对于 SAN的块和 NAS的文件,应用需要复制时间点 兀~E的数据,基于复制数据源可以分为如下两种复制类型。

·   基于快照的复制。T1时刻对块文件打快照 1, T2 时刻对块文件打快照 2, 需要复制快照 l和快2的差量数据。

·   基千 IO日志的复制。记录兀时刻 到 兀时 刻之间的数据更新 IO请求,并把它记录到日志(对于文件系统说,通常是文件变化日志),后根据日志进 行数据 制,技术上类似 VR的日志复制。

从技术角 度分析基千快照的制可以节约制带,因为在 兀 时刻到兀时 刻之间可多次更新相同的数据块1000次更新 100MBA) ,此时就只需要复1

文件 A占用 100MB带宽。基千 IO的复制,可以实现更细粒度的时间点的恢复,业界基于 该技术实现持续数据保护( ContinuousDataProtection, CDP) 功能因为每次更 新数据块/文件都需要复制,所以需要消耗更大的带宽。

针对数据从位置 A复制到位置 B的需求,基于业务定义的恢复点目标 ( RecoveryPointObjective, RPO) 和恢时间目标( RecoveryTimeObjective, RIO) 又分为如下 2 方法。

·    同步复制。请求写入时 ,必须同时写入位置A和位置 B的存储,即使位置 A的存储发生故障 ,位置B存储上的数仍然存在,从而零"恢复点目标

·   异步复制。请求写入时,只要位置A存储成功就 返回客户 端成功,在后端写入位置B存储,在位置 A的存储发生故障后,位B存储上的数据还能继使用 ,但可能几分钟前的数据因未制到 B而丢失,从而实现分钟级的恢复点目标。

2.    对象存储的复制技术

 

开源系统 CEPH的对象存储构建在底层 RADOS( ReliableAutonomicDistributed ObjectStore) 技术上 ,其核心是基千 OSD( ObjectStorage Device) 的数据复制,而 OSD采用是基千主复 制协议,如图 2-17所示户端将所 有写请求都会发送给主 OSD, OSDOSD复制数据,当所有从 OSD完成写请求处理并成功响应后 ,主 OSD才返回 ,客户端写请求完成。客户端读请求为保证强致性,也会通过主 OSD来执行,而不能去从 OSD数据,这尽管会增加主 OSD的负载,但也保证能够 读到最新的数据 。

image.png

2-17      CEPH的数制技术

 

CEPHRADOS采用基于主制协议保证强一 致性,因为块和文件存储语义上 有迫切的强一致性要求 ,从而方便在此 础上支待 CEPH块存储、文件存储、对象存储,但是强一致性会带来如下的不足。

·   主节点的性能瓶颈。所有客户端 的写、读请求都会到主节点,再加上主节点还要负责往多个从节点复制数据,因此主节点必然承受更大的性能压力。

·    时延增加。客户端的写请求有 2次网络转发 ,第 1次到主节点,第 2次到从节点,再加上网络往返,会增加请求的时延。

然而对象存储具有不可修改 ( Immutable  )  属性,写入的对象无法更新写,只能全部覆盖写,该特性决定对象的数据可以设计为无须支持并发写,只有对象的元数据存在并发写。   也就是说,在整个数据路径上不需要所有环节 都具备强致性,所以可以进行如下 优化。

·基千主复制协议、客户端写复制协议分场景组合使用优化性能。对象元数据存在并     发请求访问 ,采用基于主复 制协议实现强致性,尽管会增加时延,但是会 降低并发请求的处理难度。因为对象存储数据不可以修改,所以采用客户端写复制协议,它只1次网络转 发,而且可降低网 络时延。综合起来,元数据的强一致性、数据的不可修改属性,使得对象存储具备强 致性。

·优化投票,减少错误时的抖动。数据冗余复制时,默认所有冗余数据被成功保存后再 返回成功,但是分布式系统中网络异常、服务器故障、硬盘亚健康是常态,为了减少错误带来的抖动,可允许投票时无须所有冗余数据都完成处理的响应就可以返回成   功,从而减少 异常对时延的影 响例如,3副本时可 以完成 2副本就返回 多数成)RAID和纠删码N+M(N份数据块  M份校验块)时可以完成(N+M)/2+1块就返回校验块多 数完成),从而可以快速响应请求 ,减少抖动

·   优化读并发,提高带宽。由千对象 数据的不可修改属性,客户端可以并行地 向多个副本读取数据 ,提高访问带宽例如,客户端读取 3MB数据,可以在主节点读取 1MB据,在另外两 个从节点并行读取其他 2MB数据,从而快速从个节点议取数据,只在一个节 点读取数据性能优化了3

公共 对象存储服务面 对的场和负载众多,通常会在不同 的场对本章所讲解的技术进行优化 ,保证对应场应用的使用体验

对象存储的同城冗余存储和跨地域复制特性 ,从功能定义层面类似千 SAN/NAS存储的同步复制和异步复制,它们都关注复制的恢复点目标和恢复时间目标

 





相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
对象存储
|
对象存储
|
存储 对象存储
带你读《对象存储实战指南》第三章命名和同步3.4小结
《对象存储实战指南》第三章命名和同步3.4小结
149 0
带你读《对象存储实战指南》第三章命名和同步3.4小结
|
存储 对象存储 块存储
带你读《对象存储实战指南》第三章命名和同步3.3逻辑时钟(二)
《对象存储实战指南》第三章命名和同步3.3逻辑时钟(二)
154 0
|
存储 数据库 对象存储
带你读《对象存储实战指南》第三章命名和同步3.3逻辑时钟(一)
《对象存储实战指南》第三章命名和同步3.3逻辑时钟
153 0
带你读《对象存储实战指南》第三章命名和同步3.3逻辑时钟(一)
|
存储 监控 算法
带你读《对象存储实战指南》第三章命名和同步3.2物理时钟同步(一)
《对象存储实战指南》第三章命名和同步3.2物理时钟同步(一)
189 0
带你读《对象存储实战指南》第三章命名和同步3.2物理时钟同步(一)
|
域名解析 存储 缓存
带你读《对象存储实战指南》第三章命名和同步3.1命名技术(三)
《对象存储实战指南》第三章命名和同步3.1命名技术(三)
151 0
带你读《对象存储实战指南》第三章命名和同步3.1命名技术(三)
|
网络安全 对象存储 网络架构
《对象存储实战指南》第三章命名和同步3.1命名技术(二)
《对象存储实战指南》第三章命名和同步3.1命名技术
163 0
《对象存储实战指南》第三章命名和同步3.1命名技术(二)
|
监控 网络协议 Java
带你读《对象存储实战指南》第三章命名和同步3.1命名技术
《对象存储实战指南》第三章命名和同步3.1命名技术
160 0
带你读《对象存储实战指南》第三章命名和同步3.1命名技术
|
vr&ar 对象存储
带你读《对象存储实战指南》第二章协调和复制2.3小结
《对象存储实战指南》第二章协调和复制2.3小结
116 0
带你读《对象存储实战指南》第二章协调和复制2.3小结