ZooKeeper学习笔记三 ZooKeeper与Paxos

本文学习内容来自:
《从Paxos到ZooKeeper分布式一致性原理与实践》 电子工业出版社

Apache ZooKeeper是由Apache Hadoop的子项目发展而来,于2010年11月正式成为了Apache的顶级项目。ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper并没有直接采用Paxos算法,而是采用了一种被称为ZAB的一致性协议。

特点

  • 顺序一致性
  • 原子性
  • 单一视图
  • 可靠性
  • 实时性

ZooKeeper的设计目标

  • 简单的数据模型
  • 可以构建集群
  • 顺序访问
  • 高性能

ZooKeeper的基本概念

集群角色

最典型的集群模式就是Master/Slave模式(主备模式)。而在ZooKeeper中,这些概念被颠覆了,它没有沿用传统的Master/Slave概念,而是引入了Leader、Follower和Observer三种角色。

会话Session

Session是指客户端会话。

数据节点Znode

在ZooKeeper中,节点分为两类,第一类同样是指构成集群的机器,称为机器节点;第二类则是指数据模型中的数据单元,称之为数据节点——ZNode。
ZooKeeper将所有数据存储在内在中,数据模型是一棵树(ZNode Tree),由/进行分割的路径,就是一个Znode,如:/foo/path1。每个ZNode上都会保存自己的数据内容,同时还会保存一系列属性信息。

在ZooKeeper中,ZNode可以分为持久节点和临时节点两类。所谓持久节点是指一旦这个ZNode被创建了,除非主动进行ZNode的移除操作,否则这个ZNode将一直保存在ZooKeeper上。而临时节点就不一样了,它的生命周期和客户端会话绑定,一旦客户端会话失效,那么这个客户端创建的所有临时节点都会被移除。另外,ZooKeeper还允许用户为每个节点添加一个特殊属性:SEQUENTIAl。一旦节点被标记上这个属性,那么在这个节点被创建的时候,ZooKeeper会自动在其节点名后面追加上一个整形数据,这个整形数字是一个由父节点维护的自增数字 。

版本

ZooKeeper的每个ZNode 上都会存储数据,对应于每个ZNode,Zookeeper都会为其维护一个叫作Stat的数据结构,Stat中记录了这个ZNode的三个数据版本,分别是version(当前ZNode的版本)、cversion(当前ZNode子节点的版本)和aversion(当前ZNode的ACL版本)。

Watcher

事件监听器,是ZooKeeper中的一个很重要的特性。ZooKeeper允许用户在指节上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper服务端会将事件通知到感兴趣的客户端上去,该机制是ZooKeeper实现分布式协调服务的重要特性。

ACL

ZooKeeper采用ACL策略来进行权限控制,类似于UNIX文件系统的权限控制。ZooKeeper定义了如下5种权限:

  • CREATE
  • READ
  • WRITE
  • DELETE
  • ADMIN

ZooKeeper的ZAB协议

ZooKeeper并没有完全采用Paxos算法,而是使用了一种称为ZooKeeper Atomic t(ZAB,ZooKeeper原子消息广播协议)的协议作为其数据一致性的核心算法。

ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。

详细讲解可参考:
http://blog.jobbole.com/104985/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值