大规模分布式存储系统原理解析与架构实战

始读于2014年5月31日兔家中,前三章完成于2014年6月10日22:21:41

后几张是讲一些具体产品的内容,对于每一个产品,都需要确实的使用和经验,以后需要的时候再研究不迟,技术永远在使用中进步更大。

以前对存储尤其是分布式存储的整体知识体系不是太清楚,只是片段式的知道一些理论,通过此书的学习,对分布式存储的原理将豁然开朗,不管是理论的还是后面几章讲述的具体产品,都能做到知其然知其所以然。另外,书中对Paxos协议也进行了深入介绍,理解此协议对时下流行的去中心化将有“夫子言之,于我心有戚戚焉”的感觉。

当然,如果想完全彻底了解更底层一些的存储知识,建议阅读冬瓜头的《大话存储2》(此书过后,存储从此无战事矣)。

全书思维导图:

Paxos协议过程:

1.单机存储引擎就是哈希表、B树等数据结构在机械磁盘、SSD等持久化介质上的实现。单机存储系统是单机存储引擎的一种封装,对外提供文件、键值、表格或者关系模型

2.IO南北桥架构:北桥芯片通过前端总线(Front Side Bus,FSB)与CPU相连,内存模块以及PCI-E设备(如高端的SSD设备Fusion-IO)挂接在北桥上。北桥与南桥之间通过DMI连接,DMI的带宽为1GB/s,网卡(包括千兆以及万兆网卡),硬盘以及中低端固态盘(如Intel 320系列 SSD)挂接在南桥上

3.常用硬件性能参数:

4.SMP(Symmetric Multi-Processing)结构

5.存储引擎是存储系统的发动机,直接决定了存储系统能够提供的性能和功能.

6.哈希存储引擎是哈希表的持久化实现,支持增、删、改,以及随机读取操作,但不支持顺序扫描,对应的存储系统为键值(Key-Value)存储系统

7.B树(B-Tree)存储引擎是B树的持久化实现,不仅支持单条记录的增、删、读、改操作,还支持顺序扫描,对应的存储系统是关系数据库。当然键值系统也可以通过B树存储引擎实现

8.LSM树(Log-Structured Merge Tree)存储引擎和B树存储引擎一样,支持增、删、改、随机读取以及顺序扫描。它通过批量转储技术规避磁盘随机写入问题,广泛应用于互联网的后台存储系统。

9. LSM树(Log Structured Merge Tree)的思想非常朴素就是将对数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘,读取时需要合并磁盘中的历史数据和内存中最近的修改操作。LSM树的优势在于有效地规避了磁盘随机写入问题,但读取时可能需要访问较多的磁盘文件

10.POSIX(Portable Operating System Interface)是应用程序访问文件系统的API标准,它定义了文件系统存储接口及操作集。POSIX标准适合单机文件系统,在分布式文件系统中,出于性能考虑,一般不会完全遵守这个标准。

11.NFS(Network File System)文件系统允许客户端缓存文件数据,多个客户端并发修改同一个文件时可能出现不一致的情况。

12.关系数据库采用B树存储引擎,更新操作性能不如LSM树这样的存储引擎。另外,如果只有基于主键的增、删、查、改操作,关系数据库的性能也不如专门定制的Key-Value存储系统。

13.压缩的本质就是找数据的重复或者规律,用尽量少的字节表示。Huffman编码是一种基于编码的优化技术,通过统计字符出现的频率来计算最优前缀编码。LZ系列算法一般有一个窗口的概念,在窗口内部找重复并维护数据字典。常用的压缩算法包括Gzip、LZW、LZO

14.分布式系统中有两个重要的协议,包括Paxos选举协议以及两阶段提交协议。Paxos协议用于多个节点之间达成一致,往往用于实现总控节点选举。两阶段提交协议用于保证跨多个节点操作的原子性,这些操作要么全部成功,要么全部失败。

15.分布-->复制-->一致性-->容错。副本是分布式存储系统容错技术的唯一手段。由于多个副本的存在,如何保证副本之间的一致性是整个分布式系统的理论核心。

16.常见分布式故障:

17.分布式系统中的单层结构和双层结构:

18.主流的分布式存储系统大多带有总控节点,且能够支持成千上万台的集群规模。

19.尽量减少对总控节点的压力,一般分布式文件系统相比其他分布式系统需要存一些目录信息,可能支持上万集群机器的时候存在瓶颈,可以通过两层结构的方式,总控节点存root信息,第二层节点存meta信息

20.将存储节点分为若干组,每个组内的节点服务完全相同的数据,其中有一个节点为主节点,其他节点为备节点。由于同一个组内的节点服务相同的数据,这样的系统称为同构系统。同构系统扩容时需要从单个节点拷贝大量数据,不适合自动化

21.异构系统将数据划分为很多大小接近的分片,每个分片的多个副本可以分布到集群中的任何一个存储节点。如果某个节点发生故障,原有的服务将由整个集群而不是某几个固定的存储节点来恢复

22.分布式重要的两个协议:两阶段提交协议用于保证跨多个节点操作的原子性,也就是说,跨多个节点的操作要么在所有节点上全部执行成功,要么全部失败。Paxos协议用于确保多个节点对某个投票(例如哪个节点为主节点)达成一致。Paxos协议有两种用法:一种用法是用它来实现全局的锁服务或者命名和配置服务,例如Google Chubby以及Apache Zookeeper。另外一种用法是用它来将用户数据复制到多个数据中心,例如Google Megastore以及Google Spanner

23.为了实现高可用性,主节点往往将数据以操作日志的形式同步到备节点。如果主节点发生故障,备节点会提议自己成为主节点

24.Paxos协议执行步骤如下:

1)批准(accept):Proposer发送accept消息要求所有其他节点(acceptor,接受者)接受某个提议值,acceptor可以接受或者拒绝。

2)确认(acknowledge):如果超过一半的acceptor接受,意味着提议值已经生效,proposer发送acknowledge消息通知所有的acceptor提议生效。

当出现网络或者其他异常时,系统中可能存在多个proposer,他们各自发起不同的提议。这里的提议可以是一个修改操作,也可以是提议自己成为主节点。如果proposer第一次发起的accept请求没有被acceptor中的多数派批准(例如与其他proposer的提议冲突),那么,需要完整地执行一轮Paxos协议。过程如下:

1)准备(prepare):Proposer首先选择一个提议序号n给其他的acceptor节点发送prepare消息。Acceptor收到prepare消息后,如果提议的序号大于他已经回复的所有prepare消息,则acceptor将自己上次接受的提议回复给proposer,并承诺不再回复小于n的提议。

2)批准(accept):Proposer收到了acceptor中的多数派对prepare的回复后,就进入批准阶段。如果在之前的prepare阶段acceptor回复了上次接受的提议,那么,proposer选择其中序号最大的提议值发给acceptor批准;否则,proposer生成一个新的提议值发给acceptor批准。Acceptor在不违背他之前在prepare阶段的承诺的前提下,接受这个请求。

3)确认(acknowledge):如果超过一半的acceptor接受,提议值生效。Proposer发送acknowledge消息通知所有的acceptor提议生效。Paxos协议需要考虑两个问题:正确性,即只有一个提议值会生效;可终止性,即最后总会有一个提议值生效。Paxos协议中要求每个生效的提议被acceptor中的多数派接受,并且每个acceptor不会接受两个不同的提议,因此可以保证正确性。Paxos协议并不能够严格保证可终止性。但是,从Paxos协议的执行过程可以看出,只要超过一个acceptor接受了提议,proposer很快就会发现,并重新提议其中序号最大的提议值。因此,随着协议不断运行,它会往“某个提议值被多数派接受并生效”这一最终目标靠拢。

来自为知笔记(Wiz)

附件列表

时间: 2024-08-06 14:34:00

大规模分布式存储系统原理解析与架构实战的相关文章

《大规模分布式存储系统:原理解析与架构实战》读书笔记(1)

第一章 概述 1.1 分布式存储的概念: 分布式存储系统是大量普通 PC 服务器通过 Internet 互联,对外作为一个整体提供存储服务. 分布式存储系统有如下特征:可扩展,低成本,高性能,易用. 分布式存储系统的挑战主要在于数据. 态信息的持  ,要求在自动迁移.自动容错.并发读写的过程中保证数据的一致性.分布式存储涉及的技术主要来自两个领 域:分布式系统以及数据库. 1.2分类 分布式存储面 的数据需求比较复杂,大致可以分为三类:非结构化数据,结构化数据,半结构化数据 (1)分布式文件系统

分布式事务原理解析

1. 分布式事务原理解析 1.1. TCC分布式事务 了解过TCC分布式事务的都知道它有三个阶段:try,confirm,cancel,但很多文章就只有原理图,和对原理图的解释,看一遍也留不下印象,这里用实际场景举个例子,说明TCC分布式事务原理 try阶段:假设我们又订单系统,它需要调用库存和积分系统,try阶段我们进行的是预处理,比如下单1个商品,在try操作中,我们在库存表设置个冻结字段,表示冻结1个商品,商品的存量先不扣除,而积分表同样添加个预增加积分字段,添加个预积分比如10 conf

《大规模分布式存储系统》读书摘记(持续更新)

3 分布式系统 3.5 容错 故障检测: 心跳协议: 当机器发生故障时,需要将上面的服务迁移到其他服务器上,为了保证强一致性,需要确保故障机器不再提供服务: 主要问题:正常机器和故障机器之间需要对“故障机器是否应该被认为发生故障而停止服务”达成一致.异步网络中多态机器无法达成一致. 租约:带有超时时间的一种授权.考虑一个提前量.P51 故障恢复: 分布式存储系统分为:单层结构和双层结构.一般都为单层,每个数据分片维护多个副本:Bigtable为双层,存储和服务分开,服务层只有一个副本. 单层结构

redis实现分布式锁原理解析

目录 1.什么是分布式锁? 2.redis实现的分布式锁 3.内部实现解析 3.1.redis中的数据变化 3.2.redisson的实现方式 1.什么是分布式锁? 分布式锁,是控制分布式系统之间同步访问共享资源的一种方式.在分布式系统中,常常需要协调各个系统之间的动作.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁. 2.redis实现的分布式锁 使用的是redisson框架操作

MQ关于实现最终一致性分布式事务原理解析

本文讲述阿里云官方文档中关于通过MQ实现分布式事务最终一致性原理 概念介绍 事务消息:消息队列 MQ 提供类似 X/Open XA 的分布式事务功能,通过消息队列 MQ 事务消息能达到分布式事务的最终一致. 半事务消息:暂不能投递的消息,发送方已经成功地将消息发送到了消息队列 MQ 服务端,但是服务端未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状态,处于该种状态下的消息即半事务消息. 消息回查:由于网络闪断.生产者应用重启等原因,导致某条事务消息的二次确认丢失,消息队列 MQ

分布式存储系统 知识体系

最近看完了杨传辉老师写的<大规模分布式存储系统>一书,发现里面很多知识点和之前看的<大型网站系统与Java中间件>有很多相通之处,也渐渐加 深了我对分布式技术的兴趣.但无奈分布式涵盖范围太广了,分布式存储.分布式计算.CAP理论.Paxos算法.什么GFS.Hadoop. Dynamo.BigTable.Spanner等等,不下点功夫还真不能理顺它们之间的内在关系.所以结合两书以及一些优秀博文,总结了分布式存储的知 识体系,为以后打下基础而努力.由于初入泥潭,必然有些理解不当的地方

CK21190-Mycat分布式架构之Mycat分布式架构实战解析

CK21190-Mycat分布式架构之Mycat分布式架构实战解析 Mycat是国内第一个卖电子书的开源软件,参与的作者们平生第一次分到了一笔开源收入的酬劳,虽然微不足道,但那一刻,他们都坚信,Mycat会越来越好.如今,Mycat的稳定参与者人数已经超过10人,包括很多美女,而第三代新生志愿者团队也正在形成中.Mycat已经有超过300个生产案例,从政府的项目.电信项目.电商项目.O2O项目.游戏到一些大数据分析的项目,Mycat的生态圈正在加速形成中,使用或者研究过Mycat的知名公司名单越

大神必修课系列之java 分布式架构的原理解析

分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. 网络异常 有一种特殊的网络异常称为--网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信. 磁盘故障 磁盘故障是一种发生概率很高的异常. 使用冗余机制,将数据存储到多台服务器. 1.2. 超时 在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态. 可以

分布式技术原理与算法解析

分布式技术因其高性能.高可用.高扩展等特点,成为 AI.区块链.云计算.大数据等众多技术的基石,也因其普适性,在经济性裁员的大背景下,仍然成为各公司中间件团队.实验室等基础部门大规模争抢的人才重地. 与火热的需求相比,优秀的分布式技术人才极度短缺.分布式技术概念繁多.知识庞杂.新兴技术层出不穷,令许多新手望而却步.许多满足一定年限的面试者,虽然也能对一些概念滔滔不绝,但追问到实质性问题就变得磕磕巴巴,故左右而言它.究其原因,主要是:知识碎片化,不成体系,见树不见林. 分布式技术之初体验:讲述分布