从 Paxos 到 ZooKeeper 分布式一致性原理与实践 PDF 文档
本书从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了 Paxos 和 ZAB 协议。同时,本书深入介绍了分布式一致性问题的工业解决方案——ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法、内部实现及运维技巧,旨在帮助读者全面了解 ZooKeeper,并更好地使用和运维 ZooKeeper。
全书共 8 章,分为五部分:
- 第一部分(第 1 章)主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了 ACID、CAP 和 BASE 等经典分布式理论;
- 第二部分(第 2~4 章)介绍了 2PC、3PC 和 Paxos 三种分布式一致性协议,并着重讲解了 ZooKeeper 中使用的一致性协议——ZAB 协议;
- 第三部分(第 5~6 章)介绍了 ZooKeeper 的使用方法,包括客户端 API 的使用以及对 ZooKeeper 服务的部署与运行,并结合真实的分布式应用场景,总结了 ZooKeeper 使用的最佳实践;
- 第四部分(第 7 章)对 ZooKeeper 的架构设计和实现原理进行了深入分析,包含系统模型、Leader 选举、客户端与服务端的工作原理、请求处理,以及服务器角色的工作流程和数据存储等;
- 第五部分(第 8 章)介绍了 ZooKeeper 的运维实践,包括配置详解和监控管理等,重点讲解了如何构建一个高可用的 ZooKeeper 服务。
第 1 章 分布式架构 1
1.1 从集中式到分布式 1
1.1.1 集中式的特点 2
1.1.2 分布式的特点 2
1.1.3 分布式环境的各种问题 4
1.2 从 ACID 到 CAP/BASE 5
1.2.1 ACID 5
1.2.2 分布式事务 8
1.2.3 CAP 和 BASE 理论 9
小结 15
第 2 章 一致性协议 17
2.1 2PC 与 3PC 17
2.1.1 2PC 17
2.1.2 3PC 21
2.2 Paxos 算法 24
2.2.1 追本溯源 25
2.2.2 Paxos 理论的诞生 26
2.2.3 Paxos 算法详解 27
小结 37
第 3 章 Paxos 的工程实践 39
3.1 Chubby 39
3.1.1 概述 39
3.1.2 应用场景 40
3.1.3 设计目标 40
3.1.4 Chubby 技术架构 43
3.1.5 Paxos 协议实现 52
3.2 Hypertable 55
3.2.1 概述 55
3.2.2 算法实现 57
小结 58
第 4 章 ZooKeeper 与 Paxos 59
4.1 初识 ZooKeeper 59
4.1.1 ZooKeeper 介绍 59
4.1.2 ZooKeeper 从何而来 62
4.1.3 ZooKeeper 的基本概念 62
4.1.4 为什么选择 ZooKeeper 64
4.2 ZooKeeper 的 ZAB 协议 65
4.2.1 ZAB 协议 65
4.2.2 协议介绍 66
4.2.3 深入 ZAB 协议 71
4.2.4 ZAB 与 Paxos 算法的联系与区别 77
小结 78
第 5 章 使用 ZooKeeper 79
5.1 部署与运行 79
5.1.1 系统环境 79
5.1.2 集群与单机 80
5.1.3 运行服务 84
5.2 客户端脚本 88
5.2.1 创建 88
5.2.2 读取 89
5.2.3 更新 90
5.2.4 删除 91
5.3 Java 客户端 API 使用 91
5.3.1 创建会话 91
5.3.2 创建节点 95
5.3.3 删除节点 99
5.3.4 读取数据 100
5.3.5 更新数据 109
5.3.6 检测节点是否存在 113
5.3.7 权限控制 115
5.4 开源客户端 120
5.4.1 ZkClient 120
5.4.2 Curator 130
小结 162
第 6 章 ZooKeeper 的典型应用场景 163
6.1 典型应用场景及实现注 163
6.1.1 数据发布/订阅 164
6.1.2 负载均衡 166
6.1.3 命名服务 170
6.1.4 分布式协调/通知 173
6.1.5 集群管理 179
6.1.6 Master 选举 185
6.1.7 分布式锁 188
6.1.8 分布式队列 194
小结 197
6.2 ZooKeeper 在大型分布式系统中的应用 197
6.2.1 Hadoop 198
6.2.2 HBase 203
6.2.3 Kafka 207
6.3 ZooKeeper 在阿里巴巴的实践与应用 213
6.3.1 案例一 消息中间件:Metamorphosis 213
6.3.2 案例二 RPC 服务框架:Dubbo 217
6.3.3 案例三 基于 MySQL Binlog 的增量订阅和消费组件:Canal 219
6.3.4 案例四 分布式数据库同步系统:Otter 223
6.3.5 案例五 轻量级分布式通用搜索平台:终搜 226
6.3.6 案例六 实时计算引擎:JStorm 238
小结 242
第 7 章 ZooKeeper 技术内幕 243
7.1 系统模型 243
7.1.1 数据模型 243
7.1.2 节点特性 244
7.1.3 版本——保证分布式数据原子性操作 246
7.1.4 Watcher——数据变更的通知 249
7.1.5 ACL——保障数据的安全 265
7.2 序列化与协议 272
7.2.1 Jute 介绍 272
7.2.2 使用 Jute 进行序列化 273
7.2.3 深入 Jute 275
7.2.4 通信协议 277
7.3 客户端 284
7.3.1 一次会话的创建过程 286
7.3.2 服务器地址列表 289
7.3.3 ClientCnxn:网络 I/O 295
7.4 会话 298
7.4.1 会话状态 298
7.4.2 会话创建 299
7.4.3 会话管理 304
7.4.4 会话清理 307
7.4.5 重连 309
7.5 服务器启动 311
7.5.1 单机版服务器启动 312
7.5.2 集群版服务器启动 315
7.6 Leader 选举 321
7.6.1 Leader 选举概述 321
7.6.2 Leader 选举的算法分析 323
7.6.3 Leader 选举的实现细节 328
7.7 各服务器角色介绍 335
7.7.1 Leader 335
7.7.2 Follower 338
7.7.3 Observer 339
7.7.4 集群间消息通信 339
7.8 请求处理 342
7.8.1 会话创建请求 343
7.8.2 SetData 请求 351
7.8.3 事务请求转发 354
7.8.4 GetData 请求 355
7.9 数据与存储 356
7.9.1 内存数据 356
7.9.2 事务日志 358
7.9.3 snapshot——数据快照 364
7.9.4 初始化 368
7.9.5 数据同步 372
小结 376
第 8 章 ZooKeeper 运维 379
8.1 配置详解 379
8.1.1 基本配置 379
8.1.2 高级配置 380
8.2 四字命令 384
8.3 JMX 390
8.3.1 开启远程 JMX 390
8.3.2 通过 JConsole 连接 ZooKeeper 391
8.4 监控 397
8.4.1 实时监控 397
8.4.2 数据统计 398
8.5 构建一个高可用的集群 398
8.5.1 集群组成 398
8.5.2 容灾 399
8.5.3 扩容与缩容 402
8.6 日常运维 402
8.6.1 数据与日志管理 402
8.6.2 Too many connections 404
8.6.3 磁盘管理 405
小结 405
附录 A Windows 平台上部署 ZooKeeper 406
附录 B 从源代码开始构建 409
附录 C 各发行版本重大更新记录 414
附录 D ZooKeeper 源代码阅读指引 418
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/02/kin1tOVAmrsx78QS.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论