(特价书)云原生分布式存储基石:etcd深入解析
云原生分布式存储领域的里程碑之作,华为云容器服务团队一线专家倾囊打造,高度概括了分布式系统和一致性算法的理论,完整地介绍了Kubernetes的“心脏”
- 定价:¥79.00
- 校园优惠价:¥37.92 (48折) (马上了解)
- 评分:




(已有0条评价)
- 促销活动:
- 此商品暂时缺货(可留下联系方式,到货将第一时间通知您)
-
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由客服人员为您协调调货!
>> 查看详细说明
信息提示
关闭
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由我们的客服人员为您协调调货!
- 团购订单标准如下:
- 单品满30册可选择团购服务。
- 提交团购订单后,服务人员会主动和您联系,并根据您的会员等级、购买数量、金额、时间、配送要求等情况和您协商,以促成最终的成交。
- 有关团体购书的任何问题请随时联系:(010)63970506
编辑推荐
云原生分布式存储领域的里程碑之作,华为云容器服务团队一线专家倾囊打造
高度概括了分布式系统和一致性算法的理论,完整地介绍了Kubernetes的“心脏”
——etcd的设计思想及原理,深度剖析了etcd的架构模块、性能调优以及应用场景
内容简介
书籍 计算机书籍
本书为读者深度解析分布式键值存储系统,全书分为3部分,第1部分是对分布式系统的概念和一致性协议的综述,重点解析Raft协议,使读者对分布式键值存储系统有初步了解;第2部分介绍etcd安装、部署、运维、安全等方面的知识,帮助读者进一步掌握分布式系统的使用方法,熟悉其常见功能和使用场景;第3部分是本书的特色部分,从代码层次深入探讨了etcd各大关键特性的具体设计与实现原理,读者读完本部分,会对整个etcd的架构有更加清晰的认识,可以从中汲取灵感,从而将一些实用的经验应用到自己的分布式系统中。
作译者
华为云容器服务团队 杜军 等编著:杜军,毕业于浙江大学计算机科学与技术专业,《Docker——容器与容器云》Kubernetes部分的作者,就职于华为Cloud BU PaaS服务开发部,研究方向:容器技术、PaaS和分布式存储系统。熟悉云计算、虚拟化、容器技术、分布式存储、容器网络等技术,活跃于开源社区,是etcd社区的核心贡献者,Kubernetes社区全球前100位贡献者之一,2017年的CNUTCon讲师。
目录
前言
第一部分 基础篇
第1章 分布式系统与一致性协议2
1.1 CAP原理3
1.2 一致性5
1.2.1 一致性模型7
1.2.2 一致性模型分述9
1.2.3 复制状态机16
1.2.4 拜占庭将军问题18
1.2.5 FLP不可能性19
1.2.6 小结21
1.3 Paxos协议22
1.4 Raft协议:为可理解性而生24
1.4.1 Raft一致性算法26
1.4.2 可用性与时序45
1.4.3 异常情况46
1.4.4 日志压缩与快照52
1.4.5 Raft算法性能评估56
1.4.6 小结58
第二部分 实战篇
第2章 为什么使用etcd62
2.1 etcd是什么64
2.2 etcd架构简介66
2.2.1 etcd数据通道69
2.2.2 etcd架构71
2.3 etcd典型应用场景举例72
2.3.1 服务注册与发现72
2.3.2 消息发布和订阅75
2.3.3 负载均衡76
2.3.4 分布式通知与协调77
2.3.5 分布式锁78
2.3.6 分布式队列80
2.3.7 集群监控与Leader竞选81
2.3.8 小结82
2.4 etcd性能测试82
2.4.1 etcd读性能82
2.4.2 etcd写性能83
2.5 etcd与其他键值存储系统的对比84
2.5.1 ZooKeeper VS etcd85
2.5.2 Consul VS etcd88
2.5.3 NewSQL(Cloud Spanner、CockroachDB、TiDB)VS etcd88
2.5.4 使用etcd做分布式协同89
2.5.5 小结90
2.6 使用etcd的项目90
2.7 etcd概念词汇表91
2.8 etcd发展里程碑92
2.8.1 etcd 0.4版本93
2.8.2 etcd 2.0版本93
2.8.3 etcd 3.0版本93
第3章 etcd初体验95
3.1 单机部署95
3.1.1 单实例etcd95
3.1.2 多实例etcd98
3.2 多节点集群化部署100
3.2.1 静态配置101
3.2.2 服务发现104
3.3 etcdctl常用命令行107
3.3.1 key的常规操作107
3.3.2 key的历史与watch112
3.3.3 租约115
3.4 etcd常用配置参数117
3.4.1 member相关参数项117
3.4.2 cluster相关参数项118
3.4.3 proxy相关参数项120
3.4.4 安全相关参数项120
3.4.5 日志相关参数项121
3.4.6 不安全参数项121
3.4.7 统计相关参数项122
3.4.8 认证相关参数项122
第4章 etcd开放API之v2123
4.1 API保证124
4.2 etcd v2 API126
4.2.1 集群管理API126
4.2.2 键值API126
4.2.3 键的TTL130
4.2.4 等待变化通知:watch134
4.2.5 自动创建有序key146
4.2.6 目录TTL148
4.2.7 原子的CAS149
4.2.8 原子的CAD151
4.2.9 创建目录153
4.2.10 罗列目录154
4.2.11 删除目录156
4.2.12 获取一个隐藏节点157
4.2.13 通过文件设置key158
4.2.14 线性读158
4.3 统计数据158
4.3.1 Leader数据159
4.3.2 节点自身的数据160
4.3.3 更多统计数据161
4.4 member API162
4.4.1 List member162
4.4.2 加入一个member163
4.4.3 删除一个member163
4.4.4 修改member的peer URL164
第5章 etcd开放API之v3165
5.1 从etcd v2到etcd v3166
5.1.1 gRPC167
5.1.2 序列化和反序列化优化167
5.1.3 减少TCP连接167
5.1.4 租约机制167
5.1.5 etcd v3的观察者模式168
5.1.6 etcd v3的数据存储模型169
5.1.7 etcd v3的迷你事务170
5.1.8 快照171
5.1.9 大规模watch171
5.2 gRPC服务172
5.3 请求和响应174
5.4 KV API176
5.4.1 键值对176
5.4.2 revision177
5.4.3 键区间178
5.4.4 Range API178
5.4.5 PUT调用181
5.4.6 事务182
5.4.7 Compact调用186
5.5 watch API186
5.5.1 Event187
5.5.2 流式watch187
5.6 Lease API190
5.6.1 获得租约190
5.6.2 Keep Alives192
5.7 API使用示例192
第6章 etcd集群运维与稳定性195
6.1 etcd升级195
6.1.1 etcd从2.3升级到3.0195
6.1.2 etcd从3.0升级到3.1199
6.2 从etcd v2切换到v3202
6.2.1 切换客户端代码202
6.2.2 数据迁移203
6.3 运行时重配置204
6.3.1 两阶段配置更新保证集群安全205
6.3.2 永久性失去半数以上member206
6.4 参数调优207
6.4.1 时间参数207
6.4.2 快照208
6.4.3 磁盘209
6.4.4 网络209
6.5 监控209
6.6 维护210
6.6.1 压缩历史版本210
6.6.2 消除碎片化211
6.6.3 存储配额211
6.6.4 快照备份213
6.7 灾难恢复213
6.7.1 快照214
6.7.2 恢复集群214
6.8 etcd网关215
6.8.1 什么时候使用etcd网关216
6.8.2 什么时候不该使用etcd网关216
6.8.3 启动etcd网关217
6.9 gRPC代理217
6.9.1 可扩展的watch API218
6.9.2 限制219
6.9.3 可扩展的带租约的API219
6.9.4 服务端保护220
6.9.5 启动gRPC代理220
6.9.6 客户端节点同步和域名解析221
6.9.7 名字空间222
6.10 故障恢复223
6.10.1 小部分从节点故障223
6.10.2 主节点故障224
6.10.3 大部分节点故障224
6.10.4 网络分区224
6.10.5 集群启动异常225
6.11 硬件225
第7章 etcd安全231
7.1 访问安全231
7.1.1 权限资源232
7.1.2 键值资源234
7.1.3 配置资源234
7.2 etcd访问控制实践235
7.2.1 User相关命令235
7.2.2 Role相关命令236
7.2.3 启用用户权限功能237
7.3 传输安全238
7.3.1 TLS/SSL工作原理239
7.3.2 使用TLS加密etcd通信241
7.3.3 etcd安全配置详解247
第三部分 高级篇
第8章 多版本并发控制252
8.1 为什么选择MVCC253
8.2 etcd v2存储机制实现255
8.3 etcd v3数据模型255
8.3.1 逻辑视图256
8.3.2 物理视图259
8.4 etcd v3的MVCC的实现259
8.5 etcd v3 MVCC源码分析261
8.5.1 revision262
8.5.2 key到revision之间的映射关系263
8.5.3 从BoltDB中读取key的value值264
8.5.4 压缩历史版本266
8.6 为什么选择BoltDB作为底层的存储引擎267
第9章 etcd的日志和快照管理269
9.1 数据的持久化和复制271
9.2 etcd的日志管理272
9.2.1 WAL数据结构272
9.2.2 WAL文件物理格式273
9.2.3 WAL文件的初始化274
9.2.4 WAL追加日志项276
9.2.5 WAL日志回放277
9.2.6 Master向Slave推送日志278
9.2.7 Follower日志追加280
9.3 etcd v2的快照管理280
9.3.1 快照数据结构281
9.3.2 创建快照281
9.3.3 快照复制284
9.3.4 快照之后的日志回收286
第10章 etcd v3的事务和隔离288
10.1 事务ACID288
10.2 事务的隔离性289
10.2.1 Read uncommitted(读未提交)290
10.2.2 Read committed(读提交)290
10.2.3 Repeatable read(重复读)290
10.3 etcd的事务291
10.3.1 Serializability的重要性291
10.3.2 etcd v3的事务实现293
10.3.3 软件事务内存295
10.3.4 etcd v3 STM实现296
第11章 etcd watch机制详解300
11.1 etcd v2的watch机制详解300
11.1.1 客户端的watch请求300
11.1.2 key发生变更时通知客户端303
11.1.3 带版本号的watch303
11.1.4 etcd v2 watch的限制304
11.2 etcd v3的watch实现机制306
媒体评论
分布式系统架构和一致性算法是云计算领域最重要的基础理论之一,etcd作为一个高性能配置数据存储的分布式系统实现,已成为开发云原生分布式应用的基石。本书的作者和团队具有丰富的etcd实战经验,完整地介绍了etcd设计思想及原理,深度剖析了etcd的架构模块、性能以及应用场景。本书不但能让云原生应用的开发者和架构师对etcd有一个全面的了解,更重要的是可以学到分布式系统和一致性算法的理论,是非常有价值的分布式系统书籍,相信对各类程序员都有很大的帮助。
—— 熊英华为云平台首席架构师
在云原生领域,容器、微服务等核心技术都涉及etcd,掌握etcd已经成为进阶云原生的基石。但市面上相关的好书太少,杜军是华为云PaaS团队etcd方面的专家,基于工作中的实战经验总结出版此书,既深入浅出,又能确保是经过实践验证过的,故此书非常值得云计算领域专业人士学习参考。
—— 廖振钦华为云BU PaaS产品部总经理
分布式一致性是计算机科学领域的经典问题,也是软件系统架构的重要设计目标。现阶段火热的区块链技术底层便采用了分布式存储来保证整个系统数据记录的强一致性。etcd与它所基于的Raft协议作为云原生分布式存储领域的新兴技术,对实现大型分布式系统的高可靠性具有一定的参考价值。本书深入浅出地阐述了分布式一致性这个问题的由来、相关理论与挑战,并从设计、实现和应用场景等多个方面对etcd进行了深度剖析,值得一读。
—— 蔡亮浙江大学软件学院副院长
一个分布式系统需要一个稳定、强健的“大脑”,用来记忆元信息以及触发系统各个模块的响应。etcd在现代化的云原生架构中,就是这个大脑。本书深入浅出地分析了etcd的基本原理、API设计以及系统架构理念。对于希望理解分布式系统底层设计和原理的读者来说,这本书是非常值得研读的。
—— 李响etcd作者 前CoreOS工程师主管
历经数年的发展,etcd已经成为最受欢迎的Key-Value存储系统之一,特别是它作为Kubernetes的核心存储,支撑着Kubernetes从诞生到如今发展为容器集群管理系统的事实标准。随着大量etcd集群的落地,etcd集群的管理、应用以及优化也将是每个技术人员需要了解的核心内容。本书不仅详细介绍了etcd的使用和运维方法,更是理论结合实践,详细讲解了从分布式协议Raft的基本原理到etcd基于Raft构建分布式Key-Value存储系统的实践,相信能让读者受益匪浅。
—— 倪鹏飞微软资深工程师 Kubernetes Maintainer
etcd目前是Kubernetes唯一支持的后端存储系统。尽管etcd已经被广泛应用在各个生产环境,但目前市面上还没有系统地介绍etcd的书籍。这本书的作者都是Kubernetes核心贡献者,是Kubernetes/etcd方面的专家,相信不论是新手还是有经验者,都会从中有所收获。
—— 尹烨腾讯高级工程师