带你读《对象存储实战指南》第二章协调和复制2.2复制(一)-阿里云开发者社区

开发者社区> -开发者助手-> 正文

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

简介: 《对象存储实战指南》第二章协调和复制2.2复制
+关注继续查看

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

2.1.1数据冗余技术

 

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

 

1. 副本

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

2.  RAID

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

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

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

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

•    RAID3类型。将数据按字节 (Byte做条带 ,同时用校验 ( Parity典型如 XOR保证冗余。例如 ,将 1MB数据存放到 块盘,其中第 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它计算两份校验数据 P和 Q然后将它们存储在额外存储空间内 ,如10块盘存数据 、2块盘存校验。同样,为了降低固 定盘存放校验数据对 修复的性能影响,会像 RAID5那样将校 验块分布 到所有盘上,提升修性能

将 RAID2~RAID5数据存到 N个盘,校验数据只有 个盘,存储放大比为 N+lIN;

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

1.   纠删码 

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

 

2.2.2复制一致性

 

业界的性由以下两个术语来描述:CAP和 ACID 

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

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

所以,CAP的 C描述数据副本之间的致性,而 ACID的 C和 I结合起来 描述多事务并发请求在单份数据库记录 上的读、写的性,本书点描述 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返回给部分客户端,将副本 M1B值 100回另外部分客户端 ,那么就导致不同客户端得到对象 X的不同值

image.png

图 214一致性模

 

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

 

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

·  单调读一致性若议对象 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)

(接下文





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《大数据存储:MongoDB实战指南》一导读
多年来,我一直在和数据库存储技术打交道,深知数据存储技术在整个IT系统中起着至关重要的作用,尤其是随着云计算时代的到来,所有企业都面临着海量的数据信息,如何处理这些数据成为当前研究的热点。在过去二十几年中,数据的存储是关系数据库的天下,它以高效、稳定、支持事务的优势几乎统治了整个行业的存储业务;但是随着互联网的发展,许多新兴产业如社交网络、微博、数据挖掘等业务快速增长,数据规模变得越来越庞大,高效存储、检索、分析这些海量的数据,关系数据库变得不再适用。
1768 0
大话存储系列7——文件系统和IO处理流程
1、文件系统 在早期的计算机系统中,每个程序都必须自己管理磁盘,在磁盘中放自己的数据,程序需要直接和磁盘控制器打交道。有多少个程序要利用磁盘,就有多少个磁盘交互启动接口。
1059 0
k8s与监控--prometheus的远端存储
前言 prometheus在容器云的领域实力毋庸置疑,越来越多的云原生组件直接提供prometheus的metrics接口,无需额外的exporter。所以采用prometheus作为整个集群的监控方案是合适的。
2859 0
ORACLE 存储过程中的Authid Current_User
ORACLE用户具有DBA权限,却会出现无法在存储过程里面创建一张普通表的现象。因为即使用户拥有DBA权限,用户拥有的role权限在存储过程是不可用的。遇到这种情况,通常解决方法是进行显式的权限分配: grant create table to user a;但这种方法太麻烦,因为有可能执行一个存储过程,需要很多不同权限。
931 0
编程实战——电影管理器之XML存储电影信息数据
但凡管理器之类的软件,存储数据是必不可少的。存储数据的话,有几种选择。一是用数据库,把数据存储到数据库里;一是用文本文件,把数据存储到文本文件里;一种是利用XML文件,把数据对象转换为XML后,存储到XML文件(实际上也是文本文件)。
709 0
1328
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载