大规模分布式存储系统原理解析与架构实战 读书笔记
2017-01-10
第1章 概述
- 分布式存储概念
- 分布式存储的几个特性
- 可扩展
- 低成本
- 高性能
- 易用
- 分布式系统以及数据库技术
- 数据分布
- 一致性
- 容错
- 负载 均衡
- 事务与并发控制
- 易用性
- 压缩/解压缩
- 分布式存储分类
- 非结构化数据
- 结构化数据
- 半结构化数据
- 不同的分布式存储系统适合处理不同类型的数据,共分为四类分布式存储系统:分布式文件系统,分布式键值系统,分布式表格系统,分布式数据库。
第一篇 基础篇
第2章 单机存储系统
- 存储系统的性能主要包括两个维度:吞吐量和访问延时,磁盘和SSD的访问延时差别很大,但带宽差别不大,因此,磁盘适合大块顺序访问的存储系统,SSD适合随机访问较多或者对延时比较敏感的关键系统,二者也常常组合在一起进行混合存储,热数据(访问频繁)存储到SSD中,冷数据(访问不频繁)存储到磁盘中。
- 单机存储引擎
- 哈希存储引擎
- B树存储引擎
- LSM树存储引擎
- 数据模型:文件、关系、键值模型
- 事务与并发控制
- 为了提高读事务性能,可以采用写时复制(Copy-On-Write COW)或者多版本并发控制(Multi-Version Concurrency Control MVCC)技术避免写事务阻塞读事务。
- ACID
- SQL的隔离级别 Read Uncommitted, Read Committed, Repeatable Read, Serializable, Lost Update, Dirty Reads,Non-Repeatable Reads, Second Lost Updates problem, Phantom Reads
- 并发控制, 数据库锁
- 解决死锁的思路主要有两种:1 每个事务设置一个超时时间,超时后自动回滚。2 死锁检测,检测到死锁后可以通过回滚其中某些事务来消除循环依赖。
- 故障恢复
- 操作日志
- 重做日志
- 优化手段
- 数据压缩
- 压缩算法
- Huffman算法,找到一种前缀编码方式使得编码长度最短
- LZ系列压缩算法,是一种动态创建字典的压缩算法,压缩工程中动态创建字典并保存在压缩信息里面。
- BMDiff与Zippy
- 列式存储
第3章 分布式系统
- 分布式系统中有两个重要的协议,包括Paxos选举协议和两个阶段提交协议。Paxos协议用于多个节点之间达成一致,
往往用于实现总控节点选举。两个阶段提交协议用于保证跨多个节点操作的原子性,这些操作要么全部成功,要么全部失败。
- 基本概念
- 异常;服务器宕机;网络异常;磁盘故障(磁盘损坏或磁盘数据错误)
- 超时,RPC执行结果的三种状态:成功,失败,超时。分布式系统中接口设计为“幂等”,超时时可以不断重试。
- 一致性,数据冗余备份时将出现这个问题。从两个角度理解一致性,第一个角度用户,或者称为客户端,即客户端读写
操作是否符合某种特性;第二角度时存储系统,即存储系统的多个副本之间是否一致,更新的顺序是否相同等。
一般要求存储系统能够读写一致性,会话一致性,单调读,单调写等特性。
- 衡量指标:性能,每秒处理读操作QPS Query Per Second,每秒写操作 TPS Transaction Per Second。
设计系统时高吞吐量和低延迟需要做个权衡。可用性。一致性。可扩展性。
- 性能分析。
- 数据分布。两种,哈希分布如一致性哈希代表系统Amazon的Dynamo系统;另一个顺序分布,即每张表哥上的数据
按照主键整体有序,代表系统有Google的Bigtable系统。
- 哈希分布,只支持随机读取操作不支持顺序扫描。
- 顺序分布。
- 负载均衡。
- 复制。
- 容错。
- 故障检测
- 故障恢复
- 可扩展性
- 总控节点
- 数据库扩容
- 异构系统
- 分布式协议
- 两个阶段和Paxos协议。两个阶段保证跨多个节点操作的院子性,也就是说跨多个节点的操作要么在所有节点上全部执行成功,要么全部失败。Paxos协议用于确保多个节点对某个投票达成一致。
- Two-phase Commit 2PC;请求阶段,提交阶段;可能面临的故障,事务参与者发生故障,给每个事务设置一个超时时间,如果某个事务参与者一直不响应,到达超时时间后整个事务失败。协调者发生故障,协调者需要将事务相关信息记录到操作日志并同步到备用协调者,假如协调者发生故障,备用协调者可以接替它完成后续工作,如果没有备用协调者,协调者又发生了永久性故障,事务参与者将无法完成事务而一直等待下去。总而言之,2PC提交协议是阻塞协议,执行过程中需要锁住其他更新,且不能容错,大多数分布式存储系统都敬而远之,放弃对分布式事务的支持。
- Paxos协议。准备-》批准-》确认。正确性,可终止性。
- Paxos与2PC;Paxos协议一种用法是用它来实现全局的锁服务或者命名的配置服务。另一种用法是用它来将用户数据复制到多个数据中心。2PC协议最大的缺陷在于无法处理协调宕机问题。两者的结合起来,通过2PC保证多个数据分片上操作的原子性,通过Paxos协议实现同一个数据分片的多个副本之间的一致性,另外Paxos解决了2PC的协调者宕机问题,当2PC协调者故障时,通过Paxos协议选举出新的协调者继续提供服务。
- 集群整体切换
- 单个集群跨机房
- Paxos选主副本。
第二篇 范型篇
第4章 分布式文件系统
- 分布式文件系统的主要功能有两个:一个是存储文档、图像、视频之类的Blob类型数据;另一个作为分布式表格系统的持久化层。
- GFS系统节点分为三种角色:GFS Master(主控服务器)、GFS ChunkServer(CS, 数据块服务器)以及GFS客户端。
- GFS关键问题;
- 租约机制
- 一致性模型
- 追加流程
- 容错机制
- Master设计
- Master内存占用
- 负载均衡
- 垃圾回收
- 快照
- Taobao File System 读多写基本一次
- TFS设计思路:多个逻辑图片文件共享一个物理文件。
- NameServer:Block管理,包括创建、删除、复制、重新均衡;DataServer管理,包括心跳、DataServer加入及退出;以及管理Block与所在DataServer之间的映射关系。与GFS Master相比,TFS
NameServer最大的不同就是不需要保存文件目录树信息,也不需要维护文件与Block之间的映射关系。
- 追加流程
- 图片去重是一个键值存储系统。Tair。
- Facebook Haystack
- 内容分发网络
- 分级存储
- 低功耗服务器定制,考虑是I/O密集型还是CPU密集型。
第5章 分布式键值系统
问题 |
采取的技术 |
数据分布 |
改进的一致性哈希(虚拟节点) |
复制协议 |
复制写协议 |
数据冲突处理 |
向量时钟 |
面临故障处理 |
数据回传机制 |
永久故障后的恢复 |
Merkle哈希树 |
成员资格以及错误检测 |
基于Gossip的成员资格和错误检测协议 |
第6章 分布式表格系统
第7章 分布式数据库