Large-scale distributed storage system:principles and architectures
副标题:无
作 者:杨传辉著
分类号:
ISBN:9787111430520
微信扫一扫,移动浏览光盘
简介
《大规模分布式存储系统:原理解析与架构实战》是分布式系统领域的经典著作,由阿里巴巴高级技术专家“阿里日照”(OceanBase核心开发人员)撰写,阳振坤、章文嵩、杨卫华、汪源、余锋(褚霸)、赖春波等来自阿里、新浪、网易和百度的资深技术专家联袂推荐。理论方面,不仅讲解了大规模分布式存储系统的核心技术和基本原理,而且对谷歌、亚马逊、微软和阿里巴巴等国际型大互联网公司的大规模分布式存储系统进行了分析;实战方面,首先通过对阿里巴巴的分布式数据库OceanBase的实现细节的深入剖析完整地展示了大规模分布式存储系统的架构与设计过程,然后讲解了大规模分布式存储技术在云计算和大数据领域的实践与应用。
本书内容分为四个部分:基础篇——分布式存储系统的基础知识,包含单机存储系统的知识,如数据模型、事务与并发控制、故障恢复、存储引擎、压缩/解压缩等;分布式系统的数据分布、复制、一致性、容错、可扩展性等。范型篇——介绍谷歌、亚马逊、微软、阿里巴巴等著名互联网公司的大规模分布式存储系统架构,涉及分布式文件系统、分布式键值系统、分布式表格系统以及分布式数据库技术等。实践篇——以阿里巴巴的分布式数据库OceanBase为例,详细介绍分布式数据库内部实现,以及实践过程中的经验。专题篇——介绍分布式系统的主要应用:云存储和大数据,这些是近年来的热门领域,本书介绍了云存储平台、技术与安全,以及大数据的概念、流式计算、实时分析等。
海报:
目录
目 录
前言
第1章 概述 /1
1.1 分布式存储概念 /1
1.2 分布式存储分类 /2
第一篇 基础篇
第2章 单机存储系统 /6
2.1 硬件基础 /6
2.1.1 CPU架构 /6
2.1.2 IO总线 /7
2.1.3 网络拓扑 /9
2.1.4 性能参数 /10
2.1.5 存储层次架构 /11
2.2 单机存储引擎 /12
2.2.1 哈希存储引擎 /12
2.2.2 B树存储引擎 /14
2.2.3 LSM树存储引擎 /15
2.3 数据模型 /17
2.3.1 文件模型 /17
2.3.2 关系模型 /18
2.3.3 键值模型 /19
2.3.4 SQL与NoSQL /20
2.4 事务与并发控制 /21
2.4.1 事务 /21
2.4.2 并发控制 /23
2.5 故障恢复 /26
2.5.1 操作日志 /26
2.5.2 重做日志 /27
2.5.3 优化手段 /27
2.6 数据压缩 /29
2.6.1 压缩算法 /29
2.6.2 列式存储 /33
第3章 分布式系统 /36
3.1 基本概念 /36
3.1.1 异常 /36
3.1.2 一致性 /38
3.1.3 衡量指标 /39
3.2 性能分析 /40
3.3 数据分布 /42
3.3.1 哈希分布 /43
3.3.2 顺序分布 /45
3.3.3 负载均衡 /46
3.4 复制 /47
3.4.1 复制的概述 /47
3.4.2 一致性与可用性 /49
3.5 容错 /50
3.5.1 常见故障 /50
3.5.2 故障检测 /51
3.5.3 故障恢复 /52
3.6 可扩展性 /53
3.6.1 总控节点 /54
3.6.2 数据库扩容 /54
3.6.3 异构系统 /56
3.7 分布式协议 /57
3.7.1 两阶段提交协议 /57
3.7.2 Paxos协议 /59
3.7.3 Paxos与2PC /60
3.8 跨机房部署 /60
第二篇 范型篇
第4章 分布式文件系统 /66
4.1 Google文件系统 /66
4.1.1 系统架构 /66
4.1.2 关键问题 /67
4.1.3 Master设计 /72
4.1.4 ChunkServer设计 /74
4.1.5 讨论 /74
4.2 Taobao File System /75
4.2.1 系统架构 /75
4.2.2 讨论 /78
4.3 Facebook Haystack /78
4.3.1 系统架构 /79
4.3.2 讨论 /82
4.4 内容分发网络 /83
4.4.1 CDN架构 /83
4.4.2 讨论 /85
第5章 分布式键值系统 /86
5.1 Amazon Dynamo /86
5.1.1 数据分布 /86
5.1.2 一致性与复制 /88
5.1.3 容错 /89
5.1.4 负载均衡 /90
5.1.5 读写流程 /91
5.1.6 单机实现 /92
5.1.7 讨论 /93
5.2 淘宝Tair /93
5.2.1 系统架构 /93
5.2.2 关键问题 /94
5.2.3 讨论 /96
第6章 分布式表格系统 /97
6.1 Google Bigtable /97
6.1.1 架构 /98
6.1.2 数据分布 /100
6.1.3 复制与一致性 /101
6.1.4 容错 /101
6.1.5 负载均衡 /102
6.1.6 分裂与合并 /102
6.1.7 单机存储 /103
6.1.8 垃圾回收 /104
6.1.9 讨论 /105
6.2 Google Megastore /105
6.2.1 系统架构 /107
6.2.2 实体组 /108
6.2.3 并发控制 /109
6.2.4 复制 /110
6.2.5 索引 /111
6.2.6 协调者 /111
6.2.7 读取流程 /112
6.2.8 写入流程 /113
6.2.9 讨论 /115
6.3 Windows Azure Storage /115
6.3.1 整体架构 /115
6.3.2 文件流层 /117
6.3.3 分区层 /121
6.3.4 讨论 /125
第7章 分布式数据库 /126
7.1 数据库中间层 /126
7.1.1 架构 /126
7.1.2 扩容 /128
7.1.3 讨论 /128
7.2 Microsoft SQL Azure /129
7.2.1 数据模型 /129
7.2.2 架构 /131
7.2.3 复制与一致性 /132
7.2.4 容错 /132
7.2.5 负载均衡 /133
7.2.6 多租户 /133
7.2.7 讨论 /134
7.3 Google Spanner /134
7.3.1 数据模型 /134
7.3.2 架构 /135
7.3.3 复制与一致性 /136
7.3.4 TrueTime /137
7.3.5 并发控制 /138
7.3.6 数据迁移 /139
7.3.7 讨论 /139
第三篇 实践篇
第8章 OceanBase架构初探 /142
8.1 背景简介 /142
8.2 设计思路 /143
8.3 系统架构 /144
8.3.1 整体架构图 /144
8.3.2 客户端 /145
8.3.3 RootServer /147
8.3.4 MergeServer /148
8.3.5 ChunkServer /149
8.3.6 UpdateServer /149
8.3.7 定期合并&数据分发 /150
8.4 架构剖析 /151
8.4.1 一致性选择 /151
8.4.2 数据结构 /152
8.4.3 可靠性与可用性 /154
8.4.4 读写事务 /154
8.4.5 单点性能 /155
8.4.6 SSD支持 /156
8.4.7 数据正确性 /157
8.4.8 分层结构 /158
第9章 分布式存储引擎 /159
9.1 公共模块 /159
9.1.1 内存管理 /159
9.1.2 基础数据结构 /161
9.1.3 锁 /164
9.1.4 任务队列 /165
9.1.5 网络框架 /166
9.1.6 压缩与解压缩 /167
9.2 RootServer实现机制 /168
9.2.1 数据结构 /168
9.2.2 子表复制与负载均衡 /170
9.2.3 子表分裂与合并 /171
9.2.4 UpdateServer选主 /172
9.2.5 RootServer主备 /173
9.3 UpdateServer实现机制 /174
9.3.1 存储引擎 /174
9.3.2 任务模型 /179
9.3.3 主备同步 /181
9.4 ChunkServer实现机制 /183
9.4.1 子表管理 /183
9.4.2 SSTable /184
9.4.3 缓存实现 /188
9.4.4 IO实现 /190
9.4.5 定期合并&数据分发 /191
9.4.6 定期合并限速 /192
9.5 消除更新瓶颈 /193
9.5.1 读写优化回顾 /193
9.5.2 数据旁路导入 /195
9.5.3 数据分区 /195
第10章 数据库功能 /197
10.1 整体结构 /197
10.2 只读事务 /199
10.2.1 物理操作符接口 /201
10.2.2 单表操作 /202
10.2.3 多表操作 /203
10.2.4 SQL执行本地化 /205
10.3 写事务 /206
10.3.1 写事务执行流程 /206
10.3.2 多版本并发控制 /208
10.4 OLAP业务支持 /212
10.4.1 并发查询 /212
10.4.2 列式存储 /214
10.5 特色功能 /215
10.5.1 大表左连接 /215
10.5.2 数据过期与批量删除 /216
第11章 质量保证、运维及实践 /218
11.1 质量保证 /218
11.1.1 RD开发 /219
11.1.2 QA测试 /222
11.1.3 试运行 /224
11.2 使用与运维 /225
11.2.1 使用 /225
11.2.2 运维 /227
11.3 应用 /228
11.3.1 收藏夹 /229
11.3.2 天猫评价 /230
11.3.3 直通车报表 /231
11.4 最佳实践 /232
11.4.1 系统发展路径 /232
11.4.2 人员成长 /234
11.4.3 系统设计 /236
11.4.4 系统实现 /237
11.4.5 使用与运维 /238
11.4.6 工程现象 /239
11.4.7 经验法则 /240
第四篇 专题篇
第12章 云存储 /242
12.1 云存储的概念 /242
12.2 云存储的产品形态 /245
12.3 云存储技术 /247
12.4 云存储的核心优势 /249
12.5 云平台整体架构 /251
12.5.1 Amazon云平台 /252
12.5.2 Google云平台 /253
12.5.3 Microsoft云平台 /255
12.5.4 云平台架构 /258
12.6 云存储技术体系 /261
12.7 云存储安全 /263
第13章 大数据 /267
13.1 大数据的概念 /267
13.2 MapReduce /269
13.3 MapReduce扩展 /270
13.3.1 Google Tenzing /271
13.3.2 Microsoft Dryad /274
13.3.3 Google Pregel /275
13.4 流式计算 /276
13.4.1 原理 /276
13.4.2 Yahoo S4 /278
13.4.3 Twitter Storm /279
13.5 实时分析 /281
13.5.1 MPP架构 /281
13.5.2 EMC Greenplum /282
13.5.3 HP Vertica /285
13.5.4 Google Dremel /286
参考资料 /288
前言
第1章 概述 /1
1.1 分布式存储概念 /1
1.2 分布式存储分类 /2
第一篇 基础篇
第2章 单机存储系统 /6
2.1 硬件基础 /6
2.1.1 CPU架构 /6
2.1.2 IO总线 /7
2.1.3 网络拓扑 /9
2.1.4 性能参数 /10
2.1.5 存储层次架构 /11
2.2 单机存储引擎 /12
2.2.1 哈希存储引擎 /12
2.2.2 B树存储引擎 /14
2.2.3 LSM树存储引擎 /15
2.3 数据模型 /17
2.3.1 文件模型 /17
2.3.2 关系模型 /18
2.3.3 键值模型 /19
2.3.4 SQL与NoSQL /20
2.4 事务与并发控制 /21
2.4.1 事务 /21
2.4.2 并发控制 /23
2.5 故障恢复 /26
2.5.1 操作日志 /26
2.5.2 重做日志 /27
2.5.3 优化手段 /27
2.6 数据压缩 /29
2.6.1 压缩算法 /29
2.6.2 列式存储 /33
第3章 分布式系统 /36
3.1 基本概念 /36
3.1.1 异常 /36
3.1.2 一致性 /38
3.1.3 衡量指标 /39
3.2 性能分析 /40
3.3 数据分布 /42
3.3.1 哈希分布 /43
3.3.2 顺序分布 /45
3.3.3 负载均衡 /46
3.4 复制 /47
3.4.1 复制的概述 /47
3.4.2 一致性与可用性 /49
3.5 容错 /50
3.5.1 常见故障 /50
3.5.2 故障检测 /51
3.5.3 故障恢复 /52
3.6 可扩展性 /53
3.6.1 总控节点 /54
3.6.2 数据库扩容 /54
3.6.3 异构系统 /56
3.7 分布式协议 /57
3.7.1 两阶段提交协议 /57
3.7.2 Paxos协议 /59
3.7.3 Paxos与2PC /60
3.8 跨机房部署 /60
第二篇 范型篇
第4章 分布式文件系统 /66
4.1 Google文件系统 /66
4.1.1 系统架构 /66
4.1.2 关键问题 /67
4.1.3 Master设计 /72
4.1.4 ChunkServer设计 /74
4.1.5 讨论 /74
4.2 Taobao File System /75
4.2.1 系统架构 /75
4.2.2 讨论 /78
4.3 Facebook Haystack /78
4.3.1 系统架构 /79
4.3.2 讨论 /82
4.4 内容分发网络 /83
4.4.1 CDN架构 /83
4.4.2 讨论 /85
第5章 分布式键值系统 /86
5.1 Amazon Dynamo /86
5.1.1 数据分布 /86
5.1.2 一致性与复制 /88
5.1.3 容错 /89
5.1.4 负载均衡 /90
5.1.5 读写流程 /91
5.1.6 单机实现 /92
5.1.7 讨论 /93
5.2 淘宝Tair /93
5.2.1 系统架构 /93
5.2.2 关键问题 /94
5.2.3 讨论 /96
第6章 分布式表格系统 /97
6.1 Google Bigtable /97
6.1.1 架构 /98
6.1.2 数据分布 /100
6.1.3 复制与一致性 /101
6.1.4 容错 /101
6.1.5 负载均衡 /102
6.1.6 分裂与合并 /102
6.1.7 单机存储 /103
6.1.8 垃圾回收 /104
6.1.9 讨论 /105
6.2 Google Megastore /105
6.2.1 系统架构 /107
6.2.2 实体组 /108
6.2.3 并发控制 /109
6.2.4 复制 /110
6.2.5 索引 /111
6.2.6 协调者 /111
6.2.7 读取流程 /112
6.2.8 写入流程 /113
6.2.9 讨论 /115
6.3 Windows Azure Storage /115
6.3.1 整体架构 /115
6.3.2 文件流层 /117
6.3.3 分区层 /121
6.3.4 讨论 /125
第7章 分布式数据库 /126
7.1 数据库中间层 /126
7.1.1 架构 /126
7.1.2 扩容 /128
7.1.3 讨论 /128
7.2 Microsoft SQL Azure /129
7.2.1 数据模型 /129
7.2.2 架构 /131
7.2.3 复制与一致性 /132
7.2.4 容错 /132
7.2.5 负载均衡 /133
7.2.6 多租户 /133
7.2.7 讨论 /134
7.3 Google Spanner /134
7.3.1 数据模型 /134
7.3.2 架构 /135
7.3.3 复制与一致性 /136
7.3.4 TrueTime /137
7.3.5 并发控制 /138
7.3.6 数据迁移 /139
7.3.7 讨论 /139
第三篇 实践篇
第8章 OceanBase架构初探 /142
8.1 背景简介 /142
8.2 设计思路 /143
8.3 系统架构 /144
8.3.1 整体架构图 /144
8.3.2 客户端 /145
8.3.3 RootServer /147
8.3.4 MergeServer /148
8.3.5 ChunkServer /149
8.3.6 UpdateServer /149
8.3.7 定期合并&数据分发 /150
8.4 架构剖析 /151
8.4.1 一致性选择 /151
8.4.2 数据结构 /152
8.4.3 可靠性与可用性 /154
8.4.4 读写事务 /154
8.4.5 单点性能 /155
8.4.6 SSD支持 /156
8.4.7 数据正确性 /157
8.4.8 分层结构 /158
第9章 分布式存储引擎 /159
9.1 公共模块 /159
9.1.1 内存管理 /159
9.1.2 基础数据结构 /161
9.1.3 锁 /164
9.1.4 任务队列 /165
9.1.5 网络框架 /166
9.1.6 压缩与解压缩 /167
9.2 RootServer实现机制 /168
9.2.1 数据结构 /168
9.2.2 子表复制与负载均衡 /170
9.2.3 子表分裂与合并 /171
9.2.4 UpdateServer选主 /172
9.2.5 RootServer主备 /173
9.3 UpdateServer实现机制 /174
9.3.1 存储引擎 /174
9.3.2 任务模型 /179
9.3.3 主备同步 /181
9.4 ChunkServer实现机制 /183
9.4.1 子表管理 /183
9.4.2 SSTable /184
9.4.3 缓存实现 /188
9.4.4 IO实现 /190
9.4.5 定期合并&数据分发 /191
9.4.6 定期合并限速 /192
9.5 消除更新瓶颈 /193
9.5.1 读写优化回顾 /193
9.5.2 数据旁路导入 /195
9.5.3 数据分区 /195
第10章 数据库功能 /197
10.1 整体结构 /197
10.2 只读事务 /199
10.2.1 物理操作符接口 /201
10.2.2 单表操作 /202
10.2.3 多表操作 /203
10.2.4 SQL执行本地化 /205
10.3 写事务 /206
10.3.1 写事务执行流程 /206
10.3.2 多版本并发控制 /208
10.4 OLAP业务支持 /212
10.4.1 并发查询 /212
10.4.2 列式存储 /214
10.5 特色功能 /215
10.5.1 大表左连接 /215
10.5.2 数据过期与批量删除 /216
第11章 质量保证、运维及实践 /218
11.1 质量保证 /218
11.1.1 RD开发 /219
11.1.2 QA测试 /222
11.1.3 试运行 /224
11.2 使用与运维 /225
11.2.1 使用 /225
11.2.2 运维 /227
11.3 应用 /228
11.3.1 收藏夹 /229
11.3.2 天猫评价 /230
11.3.3 直通车报表 /231
11.4 最佳实践 /232
11.4.1 系统发展路径 /232
11.4.2 人员成长 /234
11.4.3 系统设计 /236
11.4.4 系统实现 /237
11.4.5 使用与运维 /238
11.4.6 工程现象 /239
11.4.7 经验法则 /240
第四篇 专题篇
第12章 云存储 /242
12.1 云存储的概念 /242
12.2 云存储的产品形态 /245
12.3 云存储技术 /247
12.4 云存储的核心优势 /249
12.5 云平台整体架构 /251
12.5.1 Amazon云平台 /252
12.5.2 Google云平台 /253
12.5.3 Microsoft云平台 /255
12.5.4 云平台架构 /258
12.6 云存储技术体系 /261
12.7 云存储安全 /263
第13章 大数据 /267
13.1 大数据的概念 /267
13.2 MapReduce /269
13.3 MapReduce扩展 /270
13.3.1 Google Tenzing /271
13.3.2 Microsoft Dryad /274
13.3.3 Google Pregel /275
13.4 流式计算 /276
13.4.1 原理 /276
13.4.2 Yahoo S4 /278
13.4.3 Twitter Storm /279
13.5 实时分析 /281
13.5.1 MPP架构 /281
13.5.2 EMC Greenplum /282
13.5.3 HP Vertica /285
13.5.4 Google Dremel /286
参考资料 /288
Large-scale distributed storage system:principles and architectures
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×