书籍-从Paxos到Zookeeper分布式一致性原理与实践

内容简介
本书从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了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服务。

作者简介
倪超,阿里巴巴集团高级研发工程师,国家认证系统分析师,毕业于杭州电子科技大学计算机系。2010年加入阿里巴巴中间件团队担任研发实习岗位,一直从事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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书带完整书签 第1章 基础 1 1.1 基础编程模型 4 1.1.1 Java程序的基本结构 4 1.1.2 原始数据类塑与表达式 6 1.1.3 语句 8 1.1.4 简便记法 9 1.1.5 数组 10 1.1.6 静态方法 12 1.1.7 API 16 1.1.8 字符串 20 1.1.9 输入输出 21 1.1.10 二分査找 28 1.1.11 展望 30 1.2 数据抽象 38 1.2.1 使用抽象数据类型 38 1.2.2 抽象数据类型举例 45 1.2.3 抽象教据类型的实现 52 1.2.4 更多抽象数据类型的实现 55 1.2.5 数据类型的设计 60 1.3 背包、队列和栈 74 1.3.1 API 74 1.3.2 集合类數据类型的实现 81 1.3.3 链表 89 1.3.4 综述 98 1.4 算法分析 108 1.4.1 科学方法 108 1.4.2 观察 108 1.4.3 数学模型 112 1.4.4 增长数量级的分类 117 1.4.5 设计更快的算法 118 1.4.6 倍率实验 121 1.4.7 注意事项 123 1.4.8 处理对于输入的依赖 124 1.4.9 内存 126 1.4.10 展望 129 1.5 案例研究:union-find算法 136 1.5.1 动态连通性 136 1.5.2 实现 140 1.5.3 展望 148 第2章 排序 152 2.1 初级排序算法 153 2.1.1 游戏规则 153 2.1.2 选择排序 155 2.1.3 插入排序 157 2.1.4 排序算法的可视化 159 2.1.5 比较两种排序算法 159 2.1.6 希尔排序 162 2.2 归并排序 170 2.2.1 原地归并的抽象方法 170 2.2.2 自顶向下的归并排序 171 2.2.3 自底向上的归并排序 175 2.2.4 排序算法的复杂度 177 2.3 快速排序 182 2.3.1 基本算法 182 2.3.2 性能特点 185 2.3.3 算法改进 187 2.4 优先队列 195 2.4.1 API 195 2.4.2 初级实现 197 2.4.3 堆的定义 198 2.4.4 堆的算法 199 2.4.5 堆排序 205 2.5 应用 214 2.5.1 将各种數据排序 214 2.5.2 我应该使用啷种排序算法 218 2.5.3 问题的归约 219 2.5.4 排序应用一览 221 第3章查找 227 3.1 符号表 228 3.1.1 API 228 3.1.2 有序符号表 230 3.1.3 用例举例 233 3.1.4 无序链表中的顺序查找 235 3.1.5 有序數组中的二分查找 238 3.1.6 对二分査找的分析 242 3.1.7 预览 244 3.2 二叉查找树 250 3.2.1 基本实现 250 3.2.2 分析 255 3.2.3 有序性相关的方法与删除操作 257 3.3 平衡査找树 269 3.3.1 2-3査找树 269 3.3.2 红黑二叉查找树 275 3.3.3 实现 280 3.3.4 删除操作 282 3.3.5 红黑树的性质 284 3.4 散列表 293 3.4.1 散列函数 293 3.4.2 基于拉链法的散列表 297 3.4.3 基于线性探测法的散列表 300 3.4.4 调整教组大小 304 3.4.5 内存使用 306 3.5 应用 312 3.5.1 我应该使用符号表的哪种实现 312 3.5.2 集合的API 313 3.5.3 字典类用例 315 3.5.4 索引类用例 318 3.5.5 稀疏向量 322 第4章 图 329 4.1 无向图 331 4.1.1 术语表 331 4.1.2 表示无向图的数据类型 333 4.1.3 深度优先搜索 338 4.1.4 寻找路径 342 4.1.5 广度优先搜索 344 4.1.6 连通分量 349 4.1.7 符号图 352 4.1.8 总结 358 4.2 有向图 364 4.2.1 术语 364 4.2.2 有向图的数据类型 365 4.2.3 有向图中的可达性 367 4.2.4 环和有向无环图 369 4.2.5 有向图中的强连通性 378 4.2.6 总结 385 4.3 最小生成树 390 4.3.1 原理- 391 4.3.2 加权无向图的数据类型 393 4.3.3 最小生成树的API和测试用例 396 4.3.4 Prim算法 398 4.3.5 Prim算法的即时实现 401 4.3.6 Kruskal算法 404 4.3.7 展望 407 4.4 最短路径 412 4.4.1 最短路径的性质 413 4.4.2 加权有向图的数据结构 414 4.4.3 最短路径算法的理论基础 420 4.4.4 Dijkstra算法 421 4.4.5 无环加权有向图中的最短路径算法 425 4.4.6 一般加权有向图中的最短路径问题 433 4.4.7 展望 445 第5章 字符串 451 5.1 字符串排序 455 5.1.1 键索引计数法 455 5.1.2 低位优先的字符串排序 458 5.1.3 高位优先的字符串排序 461 5.1.4 三向字符串快速排序 467 5.1.5 字符串排序算法的选择 470 5.2 单词查找树 474 5.2.1 单词查找树 475 5.2.2 单词查找树的性质 483 5.2.3 三向单词查找树 485 5.2.4 三向单词查找树的性质 487 5.2.5 应该使用字符串符号表的哪种实现 489 5.3 子字符串查找 493 5.3.1 历史简介 493 5.3.2 暴力子字符串査找算法 494 5.3.3 Knuth-Morris-Pratt子字符串查找算法 496 5.3.4 Boyer-Moore字符串查找算法 502 5.3.5 Rabin-Karp指纹字符串查找算法 505 5.3.6 总结 509 5.4 正则表达式 514 5.4.1 使用正则表达式描述模式 514 5.4.2 缩略写法 516 5.4.3 正则表达式的实际应用 517 5.4.4 非确定有限状态自动机 518 5.4.5 模拟NFA的运行 520 5.4.6 构造与正则表达式对应的NFA 522 5.5 数据压缩 529 5.5.1 游戏规则 529 5.5.2 读写二进制数据 530 5.5.3 局限 533 5.5.4 热身运动:基因组 534 5.5.5 游程编码 537 5.5.6 霍夫曼压缩 540 第6章背景 558 索引 611

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值