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

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

分布式系 统应用到存储和数据库时 ,数据需要冗 余,而复制技术就是将数据复制 到多台服务器 ,从而在某台服务器 发生故障,仍然能够提供服务

2.1.1数据冗余技术

 

在计算机系统中,为原始数据增加额外的辅助数据来帮助错误检测和 数据恢复 ,就叫作数据冗余 ( Data Redundancy) 例如,循环冗 余校验 ( CyclicRedundancyCheck, CRC)、副本、独立硬盘冗 余阵列  ( RedundantArrayofIndependentDisks,  RAID)、纠删码就是典型的数据冗 余技术

 

1. 副本

将数据写入为多份副本 ,如 2   副本、3   副本,从而在单个副本发生故障后还能够读出数据,并进行数据修 复。按副本方式写入数据会存 存储放大比,如 2副本的存储放大比为2

2.  RAID

RAID多块盘组合在起,通过算法提供数据冗 余,典型情况下待多种 RAID 类型:

•     RAIDO类 型 。将数据切 片存放到多块盘。例如,将1MB据切为 8份,每份为 128KB ,存放到 8块盘。该类型通过多块盘同时存储数据 ,达到提升性能 的目的,此时没有 数据冗余,存储放大 比为 l

•   RAIDl类型。将数据冗 余存储,也叫作数据镜像 ,可以写 2份或多 份,没有校验计算代价。此时有数据冗余,存储放大比为 N( N表示镜像份数)

•   RAID2。将数据按位(bit)做条带   (Striping),同时汉明码  ( HammingCode)计算校验保证冗,将1MB数据存放到9,其中第9块盘专存放码校验,其他8按位存放1MB,第1位存放到第1,第2位存放到28位存放88明码校值存放99存放到第1,依此

•    RAID3类型。将数据按字节 (Byte) 做条带 ,同时用校验 ( Parity, 典型如 XOR保证冗余。例如 ,将 1MB数据存放到 9 块盘,其中第 9块盘专门存放校验值,其他 8块盘按字节 存放 1MB数据,第1字节存放到第 1块盘,第 2字节存放到第 2块盘8字节存放到第 8块盘,前8字节的校验值存放到第 9块盘,第9节存放到第 1块盘,依此类推。

•    RAID4。将数据按块(Block)做条带,同时校验(Parity,典型如XOR异或)。例,将1MB数据存放到9,其中第9块盘专存放校验值,其他8块盘按条带大小存放1MB,其分块大小为4KB。那么,第1存放到第  l,第2存放到第 2                                         8存放到第8,前8(共32KB)验值存放到第9,第9存放到第1,依此

•   RAIDS。巾千RAID4的盘存放校,在发数据故障时都需要读取校验,因此该盘成为统瓶RAID5为了解决该问校验数据轮转存放到不同。例如,数据按128KB存放到9,第1MB的数据按顺序存到盘l~盘8校验数据存放到盘9,2MB的数据按顺存到盘2~盘9校验数据存放到盘

l,依此类推。从而将系统的校验数据分布到所有的盘上,在数据修时就可以充分发挥多盘的能力 ,提高数据修性能

•    RAID6类型。巾千 RAID5只有一块盘存放校验数据,在盘容量大20TB) 时修复时间很长,在此期间可能再次发生盘故障,从而出现数据丢失,为了解决该间题引RAID6, 它计算两份校验数据 PQ) 然后将它们存储在额外存储空间内 ,如10块盘存数据 、2块盘存校验。同样,为了降低固 定盘存放校验数据对 修复的性能影响,会像 RAID5那样将校 验块分布 到所有盘上,提升修性能

RAID2~RAID5数据存到 N个盘,校验数据只有 1 个盘,存储放大比为 ( N+l) IN;

RAID6数据存到 M个盘,校验数据只有 2个盘,存储放大比为 ( M+2) IM 

1.   . 纠删码 

RAID6技术最多提供 2个校验块 的计算,为了支撑更多校验块计算,业界引入 基千里德-所罗门 ( Reed-Solomon) 算法。该算法支待基千 N个数据块计 铮 M个校验块 ,存储放大比为 ( N+M) IN

 

2.2.2复制一致性

 

业界的性由以下两个术语来描述:CAPACID 

•   CAP。该术 语于 1998年由 EricBrewer提出,其中 C表示一( Consistency, 读请求应该得到最新写入 数据,或者返回 错误),A表示可用 性 (Availability, 读/写 请求尽量得到响读可以不用返回最入数据),P分区容错能力 ( Partitiontolerance,网络节点丢包后,系统能够继续工作),对千典型的分布式系统最多只满足以上的两项。CAP    常用千分布式系 统,特别是副本数据冗 余场景,最终致性(BASE) 就是选择满足AP而牺牲C

•    ACID。该术语于 1983AndreasReuterTheoHarderJimGray的成果上提出其中 A表示原子性(Atomicity) , C示一致( Consistency) , I表示隔( Isolation ) ,D示持久( Durabty)ACID常用千 数据库系统,它不关注层副本数据冗 余是重点描述个并发事务请求对 数据库记录   现,特别是写事务写事务请求读事务和写事务请求间的

所以,CAPC描述数据副本之间的致性,而 ACIDCI结合起来 描述多事务并发请求在单份数据库记录 上的读、写的性,本书点描述 CAP的分布式系统多副据的

 

1.   . — 致性模型

对千典型的客户端/服务端系 统,通常都是从客户端衡致性的。但是分布式系 统存放多副本时 ,会有两种维度的致性模型 ( ConsistencyModel) ,如图 2-14所示

·   客户端一致性模型。户端会同时访问服务端,如图 2-14中的户端 l写对象X表示W(X); 客户端 2写对象 X, 表示W(X); 客户端 3读对X, 表示R(X)客户端 N写对象 Y, 表示W(Y) 此时客户端 N访Y客户端 1~3访问X没有关联,可以同时执行客户端1~3都是访问X, 所以执行的顺序和返   回值决致性,应用和编程语言非常关 注该致性行为 。

·  数据副本一致性模型。服务端采用分布式系统 多数据副本时,正常状态时,个副保存的值相同,但某些故障状态时,不同副本可能保存的值全相同。例如,图2-14的副本 1~3X的值为 101,而副本 M因为某些故障导致X的值为旧值 100此时,多副本针对 X的值并未完全达成,还需要将副NX更新101;

如果系统设计不当,将 X对象的新值101返回给部分客户端,将副本 M1B100回另外部分客户端 ,那么就导致不同客户端得到对象 X的不同值

image.png

2- 14一致性模

 

1.   客户端维度的— 致性模型

 

客户端维 的一致性定义 访间不同对象及相同对象 并发读的表现,2007年,AndrewTanenbaumDistributedSystems: PrinciplesandParadigms书 中 定义如下典型类型

·  单调读一致性若议对象 X值为 v, 其后所 有读取对象 X的请求必须返V

·  单调写一致性户端的同进程内,只有写对象 X的请求从服务 端返回后,才能执行新 的写请求

·   读自己写一致性在客端的同一进程内对象 X的请求从服务 端返回后,后续请求必须返回新的 入值

·   读后写一致性在客户端的同进程内,在对象X前,必须先读取对象 X的值,根据该旧值再写入 新值读后写致性常用 千 MVCC的多版本并发控制

上面从教科书 的维度描述了致性模型,而从应用编程的角 度户端维度的致性模型最好满 足如下要求

·  不同对象的访问请求读、可并发执行、互不干扰

·   相同对象的请求可并发执行、互不干扰

·  相同对象的读、请求并发执行,但 请求(如入对象X的值为 111) 返回成功再发起 的读请求必须返新值如议取对象 X的值必须为 111) 是在哪个户端 发起的请求

·   针对相同对象同时发起写请求,则以最后写请求为准 ( LastWriteWin) 例如,户端 l的请求A入对象X的值为111,此时户端 2的请求B入对象X的值为 112,两个求几乎同时从户端写入对象 X。请AB通过网络后 有先达服务端,服务端将以最后收到的那个请求来更新对象    X的值,假设由于网络问题请求B最后到达服务端,那么对X的值最终被保存112由于网络影响,客户 端并发写请求的一致性控制方案,最好是应用根据业务逻辑采用锁机制进行控

在某些情况下,为了提高      读请求的成功应用接收返回的旧,叫作最终致性( EventualConsistency) 例如,写请求 (写入对象 X的新值为 111) 返回成功后 ,再发起的读求可以返回刚写入的值如读取对象 X的值返回最111) ,也可 以返回旧值 (如读取对象X的值返回旧的 100)

(接下文





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