具体描述
《大规模分布式存储系统:原理解析与架构实战》是分布式系统领域的经典著作,由阿里巴巴高级技术专家“阿里日照”(OceanBase核心开发人员)撰写,阳振坤、章文嵩、杨卫华、汪源、余锋(褚霸)、赖春波等来自阿里、新浪、网易和百度的资深技术专家联袂推荐。理论方面,不仅讲解了大规模分布式存储系统的核心技术和基本原理,而且对谷歌、亚马逊、微软和阿里巴巴等国际型大互联网公司的大规模分布式存储系统进行了分析;实战方面,首先通过对阿里巴巴的分布式数据库OceanBase的实现细节的深入剖析完整地展示了大规模分布式存储系统的架构与设计过程,然后讲解了大规模分布式存储技术在云计算和大数据领域的实践与应用。
《大规模分布式存储系统:原理解析与架构实战》内容分为四个部分:基础篇——分布式存储系统的基础知识,包含单机存储系统的知识,如数据模型、事务与并发控制、故障恢复、存储引擎、压缩/解压缩等;分布式系统的数据分布、复制、一致性、容错、可扩展性等。范型篇——介绍谷歌、亚马逊、微软、阿里巴巴等著名互联网公司的大规模分布式存储系统架构,涉及分布式文件系统、分布式键值系统、分布式表格系统以及分布式数据库技术等。实践篇——以阿里巴巴的分布式数据库OceanBase为例,详细介绍分布式数据库内部实现,以及实践过程中的经验。专题篇——介绍分布式系统的主要应用:云存储和大数据,这些是近年来的热门领域,本书介绍了云存储平台、技术与安全,以及大数据的概念、流式计算、实时分析等。
作者简介
杨传辉,阿里巴巴高级技术专家,花名日照,OceanBase核心开发人员,对分布式系统的理论和工程实践有深刻理解。曾在百度作为核心成员参与类MapReduce系统、类Bigtable系统和百度分布式消息队列等底层基础设施架构工作。热衷于分布式存储和计算系统设计,乐于分享,有技术博客NosqlNotes。
目录信息
第1章 概述
1.1 分布式存储概念
1.2 分布式存储分类
第一篇 基础篇
第2章 单机存储系统
2.1 硬件基础
2.1.1 CPU架构
2.1.2 IO总线
2.1.3 网络拓扑
2.1.4 性能参数
2.1.5 存储层次架构
2.2 单机存储引擎
2.2.1 哈希存储引擎
2.2.2 B树存储引擎
2.2.3 LSM树存储引擎
2.3 数据模型
2.3.1 文件模型
2.3.2 关系模型
2.3.3 键值模型
2.3.4 SQL与NoSQL
2.4 事务与并发控制
2.4.1 事务
2.4.2 并发控制
2.5 故障恢复
2.5.1 操作日志
2.5.2 重做日志
2.5.3 优化手段
2.6 数据压缩
2.6.1 压缩算法
2.6.2 列式存储
第3章 分布式系统
3.1 基本概念
3.1.1 异常
3.1.2 一致性
3.1.3 衡量指标
3.2 性能分析
3.3 数据分布
3.3.1 哈希分布
3.3.2 顺序分布
3.3.3 负载均衡
3.4 复制
3.4.1 复制的概述
3.4.2 一致性与可用性
3.5 容错
3.5.1 常见故障
3.5.2 故障检测
3.5.3 故障恢复
3.6 可扩展性
3.6.1 总控节点
3.6.2 数据库扩容
3.6.3 异构系统
3.7 分布式协议
3.7.1 两阶段提交协议
3.7.2 Paxos协议
3.7.3 Paxos与2PC
3.8 跨机房部署
第二篇 范型篇
第4章 分布式文件系统
4.1 Google文件系统
4.1.1 系统架构
4.1.2 关键问题
4.1.3 Master设计
4.1.4 ChunkServer设计
4.1.5 讨论
4.2 Taobao File System
4.2.1 系统架构
4.2.2 讨论
4.3 Facebook Haystack
4.3.1 系统架构
4.3.2 讨论
4.4 内容分发网络
4.4.1 CDN架构
4.4.2 讨论
第5章 分布式键值系统
5.1 Amazon Dynamo
5.1.1 数据分布
5.1.2 一致性与复制
5.1.3 容错
5.1.4 负载均衡
5.1.5 读写流程
5.1.6 单机实现
5.1.7 讨论
5.2 淘宝Tair
5.2.1 系统架构
5.2.2 关键问题
5.2.3 讨论
第6章 分布式表格系统
6.1 Google Bigtable
6.1.1 架构
6.1.2 数据分布
6.1.3 复制与一致性
6.1.4 容错
6.1.5 负载均衡
6.1.6 分裂与合并
6.1.7 单机存储
6.1.8 垃圾回收
6.1.9 讨论
6.2 Google Megastore
6.2.1 系统架构
6.2.2 实体组
6.2.3 并发控制
6.2.4 复制
6.2.5 索引
6.2.6 协调者
6.2.7 读取流程
6.2.8 写入流程
6.2.9 讨论
6.3 Windows Azure Storage
6.3.1 整体架构
6.3.2 文件流层
6.3.3 分区层
6.3.4 讨论
第7章 分布式数据库
7.1 数据库中间层
7.1.1 架构
7.1.2 扩容
7.1.3 讨论
7.2 Microsoft SQL Azure
7.2.1 数据模型
7.2.2 架构
7.2.3 复制与一致性
7.2.4 容错
7.2.5 负载均衡
7.2.6 多租户
7.2.7 讨论
7.3 Google Spanner
7.3.1 数据模型
7.3.2 架构
7.3.3 复制与一致性
7.3.4 TrueTime
7.3.5 并发控制
7.3.6 数据迁移
7.3.7 讨论
第三篇 实践篇
第8章 OceanBase架构初探
8.1 背景简介
8.2 设计思路
8.3 系统架构
8.3.1 整体架构图
8.3.2 客户端
8.3.3 RootServer
8.3.4 MergeServer
8.3.5 ChunkServer
8.3.6 UpdateServer
8.3.7 定期合并&数据分发
8.4 架构剖析
8.4.1 一致性选择
8.4.2 数据结构
8.4.3 可靠性与可用性
8.4.4 读写事务
8.4.5 单点性能
8.4.6 SSD支持
8.4.7 数据正确性
8.4.8 分层结构
第9章 分布式存储引擎
9.1 公共模块
9.1.1 内存管理
9.1.2 基础数据结构
9.1.3 锁
9.1.4 任务队列
9.1.5 网络框架
9.1.6 压缩与解压缩
9.2 RootServer实现机制
9.2.1 数据结构
9.2.2 子表复制与负载均衡
9.2.3 子表分裂与合并
9.2.4 UpdateServer选主
9.2.5 RootServer主备
9.3 UpdateServer实现机制
9.3.1 存储引擎
9.3.2 任务模型
9.3.3 主备同步
9.4 ChunkServer实现机制
9.4.1 子表管理
9.4.2 SSTable
9.4.3 缓存实现
9.4.4 IO实现
9.4.5 定期合并&数据分发
9.4.6 定期合并限速
9.5 消除更新瓶颈
9.5.1 读写优化回顾
9.5.2 数据旁路导入
9.5.3 数据分区
第10章 数据库功能
10.1 整体结构
10.2 只读事务
10.2.1 物理操作符接口
10.2.2 单表操作
10.2.3 多表操作
10.2.4 SQL执行本地化
10.3 写事务
10.3.1 写事务执行流程
10.3.2 多版本并发控制
10.4 OLAP业务支持
10.4.1 并发查询
10.4.2 列式存储
10.5 特色功能
10.5.1 大表左连接
10.5.2 数据过期与批量删除
第11章 质量保证、运维及实践
11.1 质量保证
11.1.1 RD开发
11.1.2 QA测试
11.1.3 试运行
11.2 使用与运维
11.2.1 使用
11.2.2 运维
11.3 应用
11.3.1 收藏夹
11.3.2 天猫评价
11.3.3 直通车报表
11.4 最佳实践
11.4.1 系统发展路径
11.4.2 人员成长
11.4.3 系统设计
11.4.4 系统实现
11.4.5 使用与运维
11.4.6 工程现象
11.4.7 经验法则
第四篇 专题篇
第12章 云存储
12.1 云存储的概念
12.2 云存储的产品形态
12.3 云存储技术
12.4 云存储的核心优势
12.5 云平台整体架构
12.5.1 Amazon云平台
12.5.2 Google云平台
12.5.3 Microsoft云平台
12.5.4 云平台架构
12.6 云存储技术体系
12.7 云存储安全
第13章 大数据
13.1 大数据的概念
13.2 MapReduce
13.3 MapReduce扩展
13.3.1 Google Tenzing
13.3.2 Microsoft Dryad
13.3.3 Google Pregel
13.4 流式计算
13.4.1 原理
13.4.2 Yahoo S4
13.4.3 Twitter Storm
13.5 实时分析
13.5.1 MPP架构
13.5.2 EMC Greenplum
13.5.3 HP Vertica
13.5.4 Google Dremel
参考资料
· · · · · · (收起)
读后感
看得出,作者水平还是非常强的,应该对很多开源的产品都深入研究过,也读过不少论文,就这一点,就可以推荐一下。很多原理性的东西,其实网上都有,大家更想看到的是他们在alibaba是如何应用的,有哪些优缺点,平时应用中遇到了哪些坑,呵呵。有一个建议,第一章提出的一些问题...
这本书有理论介绍也有实践经验,还算不错,同时支持下国内的原创作者,给4星。 看得出作者有多年的分布式系统开发经验,对Google,FB,Amazon的各个分布式系统的特点娓娓道来。前半部分的基础+范型篇还是能学到不少,特别适合初学者。 不过,这本书有一半的内容是介绍OceanBa...
我两年前开始接触分布式相关的技术,但无奈分布式涵盖范围太广,分布式存储、分布式计算、CAP理论、什么GFS、Hadoop、Dynamo、hive等等,不下点功夫还真不能理顺它们之间的内在关系,特别是容易陷入到各种开源的框架中而无法自拔。 本书相当清晰的给出了各个热门技术之间的关系...
我两年前开始接触分布式相关的技术,但无奈分布式涵盖范围太广,分布式存储、分布式计算、CAP理论、什么GFS、Hadoop、Dynamo、hive等等,不下点功夫还真不能理顺它们之间的内在关系,特别是容易陷入到各种开源的框架中而无法自拔。 本书相当清晰的给出了各个热门技术之间的关系...
用户评价
我是一个比较看重实战性的读者,对那些纸上谈兵的理论书籍总是提不起兴趣。而这本书恰恰在这方面做得非常出色。书中大量的篇幅用于剖析业界主流分布式存储系统的设计思想和实践经验,比如 HDFS、Ceph、Cassandra 等,作者会深入分析它们的架构演进、关键技术点以及在实际应用中遇到的问题和解决方案。我尤其喜欢书中关于“故障处理与容错机制”的章节,它详细讲解了副本机制、数据备份、容灾切换等方面的技术细节,并提供了许多宝贵的调优建议。阅读这些内容,就像是在和一群经验丰富的工程师一起复盘他们的项目,能够学到很多在课堂上或者其他理论书籍中难以获得的“内功心法”。
初读此书,我最大的感受便是其逻辑的严谨与架构的精妙。作者在讲解分布式存储的各个组成部分时,总是能以一种清晰而富有层次感的方式进行展开。例如,在讨论数据分片策略时,他详细对比了哈希分片、范围分片等不同方法的优缺点,并结合实际案例分析了它们在不同场景下的适用性。更难能可贵的是,书中并没有停留在理论层面,而是深入到分布式事务、一致性协议(如 Paxos、Raft)的细节,并用图文并茂的方式展示了这些复杂算法的执行流程。让我印象深刻的是,作者在讲解CAP理论时,并没有简单地给出定义,而是通过多个实际的故障场景,帮助读者理解一致性、可用性、分区容错性之间的权衡,以及在不同应用需求下,如何做出最优的选择。
这本书最让我惊喜的地方在于,它不仅仅是关于“是什么”,更是关于“为什么”。作者并没有满足于介绍各种分布式存储系统的技术细节,而是花费了大量的篇幅去探讨其背后的设计哲学和权衡。例如,在讲解数据一致性时,他会深入分析不同一致性模型的优劣,以及它们对系统性能和复杂度的影响。他会引导读者思考,在追求强一致性带来的准确性的同时,是否会牺牲了系统的可用性和响应速度?反之,在追求最终一致性带来的高性能和高可用性的同时,如何优雅地处理数据不一致的问题?这种对“道”的探寻,让我不仅仅满足于掌握某个具体的技术实现,更能从更宏观的视角去理解分布式存储的本质。
坦白说,在阅读这本书之前,我对大规模分布式存储的理解还停留在一些比较零散的知识点上,缺乏一个系统性的认识。这本书就像一座灯塔,为我照亮了前行的道路。它从最基础的概念入手,逐步深入到数据一致性、容错性、性能优化等核心问题,并且提供了大量的实际案例和技术讲解。我特别欣赏作者在讲解分布式事务和一致性协议时,能够用非常直观的比喻和图示,将这些抽象的概念变得易于理解。而且,书中对不同分布式存储系统的对比分析,也帮助我更清晰地认识到它们各自的优势和劣势,从而在面对实际业务需求时,能够做出更明智的技术选型。这本书绝对是任何想要深入了解分布式存储的工程师的必读之作。
作为一名在互联网公司摸爬滚打了多年的老兵,我深切体会到,随着业务的爆炸式增长,传统单体应用和集中式数据库早已捉襟见肘。尤其是在需要支撑海量用户并发访问、数据量指数级增长的场景下,如何设计和构建稳定、高效、可扩展的存储系统,一直是横亘在我们面前的一道难题。当我翻开这本书时,首先映入眼帘的,并非冰冷的技术术语,而是作者娓娓道来的对这一挑战的深刻洞察。他没有急于抛出复杂的理论模型,而是从最基础的痛点出发,循序渐进地引导读者思考,为什么我们需要分布式存储?它解决了什么问题?又带来了哪些新的挑战?这种由表及里的叙述方式,让我这个即便有一定经验的读者,也能迅速进入情境,并对后续的内容充满了期待。
對分布式存儲很多都是點到爲止,並沒有深入,作爲入門書籍還是不錯的
2015.1.5读完 看完这本书才真正明白搞存储到底要搞什么 类似于分布式启蒙吧 要想真的搞通这块 还得刷论文 码代码 另明白了 nosql并不是万能药 关系数据库理论还是存储的基础 自家的kv系统代码不到2000行 阿里的ob有70w行 不足之处就像有书评提到的 这本书就像是一半分布式存储理论收集 另一半是ob指南 拼凑感太强
好多没读懂...之前做bt的时候,用过一致性hash的算法....权当拓宽视野~=)......以后再看多几次吧~
理论广泛又有深度,精品。
工作中不涉及的话很多内容帮助不大,对某个分布式框架有一定理解之后再读可能更好些。单机存储和基础知识帮助很大。