[关闭]
@22221cjp 2017-01-14T12:01:35.000000Z 字数 2717 阅读 2349

从PAXOS到ZooKeeper分布式一致性原理

技术


chapter1 分布式架构

什么叫分布式系统?
分布式系统的特征有哪些?
分布性、对等性、并发性、缺乏全局时钟、故障总是会发生
分布式坏境会发生哪些问题?
解释名词:网络分区、三态

分布式系统在一致性上的挑战:
事务:

如何构建兼顾一致性和可用性的分布式系统,出行了CAP和BASE这样的理论。
什么是CAP定理?
一致性、可用性、分区容错性三个当中只能同时满足两个。
什么是网络分区?
放弃P、放弃A、放弃C的情况

BASE理论的核心思想是?
基本可用(服务降级不影响功能)、软状态、最终一致性

最终一致性有哪些变种?(五种)

chapter2 一致性协议

为了解决分布式系统的一致性问题,涌现一批经典的一致性算法:2pc、3pc、paxos

在分布式系统中,当事务跨越多个结点的时候,虽然每个结点知道自己的事务执行结果,成功还是失败,但是并不知道其他结点的执行情况,要解决多个结点执行结果的一致性,需要引入一个“协调者”的角色来统一调度各个结点事务的执行情况,参与事务的多个结点称为“参与者”。

什么是2pc(two phase commit)
优点:原理简单、实现方便
缺点:单点问题、同步阻塞、脑裂、太过保守、可能出现数据不一致

什么是3pc
优点:减少了阻塞的范围、当协调者出现单点问题,依然能达成最终一致
缺点:依然可能会出现数据不一致

为什么3pc能降低阻塞范围?

什么情况下3pc会出现数据不一致?
在第二阶段,pre-commit如果出现网络分区,假设协调者应该发出rollback的指令,能接受到指令的结点会rollback,但是不能接受到指令的结点在超时后依然会提交,这样会出现不一致的问题。

paxos算法(待续)

第1章 分布式架构
1.1 从集中式到分布式
1.1.1 集中式的特点
1.1.2 分布式的特点
1.1.3 分布式环境的各种问题
1.2 从ACID到CAP/BASE
1.2.1 ACID
1.2.2 分布式事务
1.2.3 CAP和BASE理论
小结

第2章 一致性协议
2.1 2PC与3PC
2.1.1 2PC
2.1.2 3PC
2.2 Paxos算法
2.2.1 追本溯源
2.2.2 Paxos理论的诞生
2.2.3 Paxos算法详解
小结

第3章 Paxos的工程实践
3.1 Chubby
3.1.1 概述
3.1.2 应用场景
3.1.3 设计目标
3.1.4 Chubby技术架构
3.1.5 Paxos协议实现
3.2 Hypertable
3.2.1 概述
3.2.2 算法实现
小结

第4章 ZooKeeper与Paxos
4.1 初识ZooKeeper
4.1.1 ZooKeeper介绍
4.1.2 ZooKeeper从何而来
4.1.3 ZooKeeper的基本概念
4.1.4 为什么选择ZooKeeper
4.2 ZooKeeper的ZAB协议
4.2.1 ZAB协议
4.2.2 协议介绍
4.2.3 深入ZAB协议
4.2.4 ZAB与Paxos算法的联系与区别
小结

第5章 使用ZooKeeper
5.1 部署与运行
5.1.1 系统环境
5.1.2 集群与单机
5.1.3 运行服务
5.2 客户端脚本
5.2.1 创建
5.2.2 读取
5.2.3 更新
5.2.4 删除
5.3 Java客户端API使用
5.3.1 创建会话
5.3.2 创建节点
5.3.3 删除节点
5.3.4 读取数据
5.3.5 更新数据
5.3.6 检测节点是否存在
5.3.7 权限控制
5.4 开源客户端
5.4.1 ZkClient
5.4.2 Curator
小结

第6章 ZooKeeper的典型应用场景
6.1 典型应用场景及实现注
6.1.1 数据发布/订阅
6.1.2 负载均衡
6.1.3 命名服务
6.1.4 分布式协调/通知
6.1.5 集群管理
6.1.6 Master选举
6.1.7 分布式锁
6.1.8 分布式队列
小结
6.2 ZooKeeper在大型分布式系统中的应用
6.2.1 Hadoop
6.2.2 HBase
6.2.3 Kafka
6.3 ZooKeeper在阿里巴巴的实践与应用
6.3.1 案例一 消息中间件:Metamorphosis
6.3.2 案例二 RPC服务框架:Dubbo
6.3.3 案例三 基于MySQL Binlog的增量订阅和消费组件:Canal
6.3.4 案例四 分布式数据库同步系统:Otter
6.3.5 案例五 轻量级分布式通用搜索平台:终搜
6.3.6 案例六 实时计算引擎:JStorm
小结

第7章 ZooKeeper技术内幕
7.1 系统模型
7.1.1 数据模型
7.1.2 节点特性
7.1.3 版本――保证分布式数据原子性操作
7.1.4 Watcher――数据变更的通知
7.1.5 ACL――保障数据的安全
7.2 序列化与协议
7.2.1 Jute介绍
7.2.2 使用Jute进行序列化
7.2.3 深入Jute
7.2.4 通信协议
7.3 客户端
7.3.1 一次会话的创建过程
7.3.2 服务器地址列表
7.3.3 ClientCnxn:网络I/O
7.4 会话
7.4.1 会话状态
7.4.2 会话创建
7.4.3 会话管理
7.4.4 会话清理
7.4.5 重连
7.5 服务器启动
7.5.1 单机版服务器启动
7.5.2 集群版服务器启动
7.6 Leader选举
7.6.1 Leader选举概述
7.6.2 Leader选举的算法分析
7.6.3 Leader选举的实现细节
7.7 各服务器角色介绍
7.7.1 Leader
7.7.2 Follower
7.7.3 Observer
7.7.4 集群间消息通信
7.8 请求处理
7.8.1 会话创建请求
7.8.2 SetData请求
7.8.3 事务请求转发
7.8.4 GetData请求
7.9 数据与存储
7.9.1 内存数据
7.9.2 事务日志
7.9.3 snapshot――数据快照
7.9.4 初始化
7.9.5 数据同步
小结

第8章 ZooKeeper运维
8.1 配置详解
8.1.1 基本配置
8.1.2 高级配置
8.2 四字命令
8.3 JMX
8.3.1 开启远程JMX
8.3.2 通过JConsole连接ZooKeeper
8.4 监控
8.4.1 实时监控
8.4.2 数据统计
8.5 构建一个高可用的集群
8.5.1 集群组成
8.5.2 容灾
8.5.3 扩容与缩容
8.6 日常运维
8.6.1 数据与日志管理
8.6.2 Too many connections
8.6.3 磁盘管理
小结
附录A Windows平台上部署ZooKeeper
附录B 从源代码开始构建
附录C 各发行版本重大更新记录
附录D ZooKeeper源代码阅读指引

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注