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

1,160 阅读3分钟

从Paxos到Zookeeper 分布式一致性原理与实践 下载地址: pan.baidu.com/s/1Rq7FHUr-… 扫码下面二维码关注公众号回复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 