从Paxos到Zookeeper 分布式一致性原理与实践
从Paxos到Zookeeper 分布式一致性原理与实践
下载地址: https://pan.baidu.com/s/1Rq7FHUr-NooJ_CSXwG5E4g
扫码下面二维码关注公众号回复100015 获取分享码
本书目录结构如下:
- 二、一致性协调
- 2.1 2PC (Two-Phase Commit)
- 前提
- 基本算法
- 算法示意
- 缺点
- 2.2 3PC (Three-Phase Commit)
- 基本算法
- 1.CanCommit阶段
- 2.PreCommit阶段
- 3.DoCommit阶段
- 算法示意
- 2PC和3PC区别
- 优缺点
- 2.3 Paxos(解决单点问题)
- Paxos算法原理
- Paxos算法过程
- 三、Zookeeper
- 3.1、初识Zookeeper
- 3.1.1 zookeeper可以保证如下分布式一致性特性
- 3.1.2 zookeeper的四个设计目标
- 3.1.3 zookeeper的基本概念
- 1、集群角色
- 2、会话
- 3、数据节点
- 4、版本
- 5、Watcher
- 6、ACL
- 3.2、ZAB
- 3.2.1、ZAB协议
- 3.2.2、ZAB两种基本的模式:崩溃恢复和消息广播。
- 崩溃恢复
- 消息广播
- 基本特性
- 数据同步
- 3.2.3、ZAB协议原理
- 3.3、ZAB与Paxos的联系和区别
- 四、使用Zookeeper
- 4.1、部署与运行
- 4.2、客户端脚本
- 4.3、Java客户端API使用
- 4.4、开源客户端
- 4.4.1、ZkClient
- 4.1.1 添加依赖
- 4.4.2、Curator客户端
- 4.4.2.1 添加依赖
- 4.4.2.2 创建会话
- 4.4.2.3 创建节点
- 4.4.2.7 异步接口
- 4.2.8 节点监听
- 4.2.9 子节点监听
- 4.2.10 Master选举
- 4.2.11 分布式锁
- 4.4.2.12 分布式计数器 DistributedAtomicInteger
- 4.4.2.13 分布式Barrier
- 4.4.3、Curator工具类
- 4.4.3.1 ZKPaths
- 4.4.3.2 EnsurePath
- 五、Zookeeper应用场景
- 5.1、典型应用场景及实现
- 5.1.1 数据发布/订阅
- 5.1.2 负载均衡
- 5.1.3 命名服务
- 5.1.4 分布式协调/通知
- 5.1.5 集群管理
- 5.1.6 Master选举
- 5.1.7 分布式锁
- 5.1.8 分布式队列
- 5.2、zk在大型分布式系统中的应用
- 5.2.1 Hadoop
- 5.2.1.1 YARN
- 5.2.1.2 ResourceManager HA
- 5.2.1.3 主备切换
- 5.2.1.4 隔离(Fencing)
- 5.2.1.5 ResourceManager状态存储
- 5.2.2 HBase
- 5.2.3 Kafka
- 5.2.3.1 Broker注册
- 5.2.3.2 Topic注册
- 5.2.3.3 生产者负载均衡
- 5.2.3.4 消费者负载均衡
- 5.2.3.5 消费分区与消费者的关系
- 5.2.3.6 消息消费进度Offset记录
- 5.2.3.7 消费者注册
- 5.2.3.8 负载均衡
- 《从Paxos到zookeeper分布式一致性原理与实践》笔记
- 第6章ZooKeeper技术内幕
- 6.1 系统模型
- 6.1.1 数据模型
- 6.1.2 节点特性
- 6.1.3 版本——保证分布式数据原子性操作
- 6.1.4 Watcher——数据变更的通知
- 6.1.5 ACL——保障数据的安全
- 6.2 序列化与协议
- 6.2.1 Jute介绍
- 6.2.2 使用Jute进行序列化
- 6.2.3 深入Jute
- 6.2.4 通信协议
- 6.2.4.1 请求协议
- 6.2.4.2 响应协议
- 6.2.5 stat状态说明
- 6.3 客户端
- 6.3.1 一次会话的创建过程
- 6.3.2 服务器地址列表
- 6.3.3 ClientCnxn:网络I/O
- 6.4 会话
- 6.4.1 会话状态
- 6.4.2 会话创建
- 6.4.3 会话管理
- 6.4.4 会话清理
- 6.4.5 重连
- 6.4.5.1 重连状态(CONNECTED & EXPIRED)
- 6.4.5.2 重连异常: CONNECTION_LOSS(连接断开)和SESSION_EXPIRED(会话过期)
- 6.5 服务器启动
- 6.5.1 单机版服务器启动
- 6.5.1.1 单机版服务器启动 - 预启动
- 6.5.1.2 单机版服务器启动 - 初始化
- 6.5.2 集群版服务器启动
- 6.5.2.1 集群版服务器启动 - 预启动
- 6.5.2.2 集群版服务器启动 - 初始化
- 6.6 Leader选举
- 6.6.1 Leader选举概述
- 6.6.1.1 服务器启动时期的Leader选举
- 6.6.1.2 服务器运行时期的Leader选举
- 6.6.2 Leader选举的算法分析
- 6.6.2.1 术语解释
- 6.6.2.2 进入leader选举
- 6.6.3 Leader选举的实现细节
- 6.7 各服务器角色介绍
- 6.7.1 Leader
- 6.7.1.1 请求处理链
- 6.7.1.2 LearnerHandler
- 6.7.2 Follower
- 6.7.3 Observer
- 6.7.4 集群间消息通信
- 6.8 请求处理
- 6.8.1 会话创建请求
- 6.8.1.1 请求接收
- 6.8.1.2 会话创建
- 6.8.1.3 预处理
- 6.8.1.4 事务处理
- 6.8.1.5 事务应用
- 6.8.1.6 会话响应
- 6.8.2 SetData请求
- 6.8.3 事务请求转发
- 6.8.4 GetData请求
- 6.9 数据与存储
- 6.9.1 内存数据
- 6.9.2 事务日志
- 6.9.2.1 文件存储
- 6.9.2.2 日志格式
- 6.9.2.3 日志写入
- 6.9.2.4 日志截断
- 6.9.3 snapshot——数据快照
- 6.9.3.1 文件存储
- 6.9.3.2 数据快照
- 6.9.4 初始化
- 6.9.4.1 初始化流程
- 6.9.5 数据同步
- 七、Zookeeper运维
- 7.1 配置参数
- 7.1 2四字命令
- reference