资讯专栏INFORMATION COLUMN

ZooKeeper学习

sevi_stuo / 1451人阅读

摘要:临时节点临时节点的生命周期和会话保持一致。授权对象授权对象指的是权限赋予的用户或一个指定实体。参与选举的投票。状态变更如果是服务器运行期间进行选举,需要对非服务器进行状态变更为。接收投票接收来自其它服务器的投票判断投票的有效性。

一.ZooKeeper是什么?

ZooKeeper是一个分布式协调服务,目标是将复杂容易出错的分布式一致性服务包装起来,提供API接口给用户使用。

ZooKeeper可以实现数据发布/订阅,负载均衡,分布式锁,分布式队列,命名服务,集群管理,Master管理,分布式协调/通知。

二.ZooKeeper的Zab(Zookeeper Automic Broadcast)协议。

包含两种模式:
1.崩溃恢复
2.消息广播

三.ZooKeeper的特性

1.数据节点--ZNode
ZNode是ZooKeeper的最小数据单元,每个ZNode都可以存储数据,同时还能挂载子节点,因此构成了一个层次化的命名空间,称为树。

ZNode三种类型:持久节点,临时节点,顺序节点。可以生成以下四种类型的节点:

持久节点:持久节点创建后就一直存在于ZooKeeper服务器上,直到有删除操作主动清除这个节点。

持久顺序节点:持久顺序节点的特性和持久节点基本一致,额外的特性表现在顺序性上。在ZooKeeper中,每个父节点都会为它的第一个子节点维护一份顺序,用于记录下每个子节点创建的先后顺序。

临时节点:临时节点的生命周期和会话保持一致。如果会话失效,临时节点也就失效。不能在临时节点上创建子节点。

临时顺序节点:在临时节点上添加了顺序性。

2.Watcher通知机制
客户端线程向服务器注册一个Watcher,同时将这个Watcher存储在客户端的WatchManager中,服务器会触发Watcher事件向客户端发送通知,客户端会从WatchManager中找到对应的Watcher执行逻辑回调。

3.ACL(Access Control List)
ZooKeeper的权限控制。包含三部分的内容:
(1)权限模式

IP:IP模式通过IP地址粒度进行权限控制。

Digest: 以类似“username:password”的形式的权限标识进行权限设置。

World:所有用户都可以在不进行任何权限校验的情况下操作ZooKeeper上的数据。

Super: 超级用户。

(2)授权对象:ID
授权对象指的是权限赋予的用户或一个指定实体。
(3)权限
指通过权限校验可以被允许执行的操作,包括create,delete,read,write,admin。

4.服务器角色
(1)Leader:整个ZooKeeper集群工作机制中的核心,主要任务:

事务请求的唯一调度和处理者,保证集群事务处理的顺序性。

集群内部各服务器的调度者。

(2)Follower:ZooKeeper集群状态的跟随者,主要任务:

处理客户端非事务的请求,转发事务请求给Leader服务器。

参与事务的Proposal的投票。

参与Leader选举的投票。

(3)Observer:观察者
能处理非事务请求,将事务请求转发给Leader服务器,但是不进行事务Proposal的投票和Leader选举的投票。通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。

5.leader选举
进行leader可以是服务器启动的时候或是服务器运行的时候。

(1)状态变更:如果是服务器运行期间进行leader选举,需要对非Observer服务器进行状态变更为Looking。
(2)进行投票:每台服务器都会选举自己作为leader,投票的内容包括服务器的myid(ZooKeeper集群搭建的时候每个服务器的编号)和ZXID(ZooKeeper为每一个事务请求分配的唯一一个全局事务ID)。
(3)接收投票:接收来自其它服务器的投票,判断投票的有效性。
(4)处理投票:需要将其他服务器的投票与自己的投票比较,比较规则如下:

先比较ZXID,ZXID比较大的服务器会优先作为Leader。

ZXID相同的话,就比较myid,myid比较大的服务器作为Leader服务器。

(5)统计投票:每次投票后,服务器都会统计所有投票,判断是否有过半的机器接收到相同的投票信息。
(6)改变服务器状态:如果是follower,就变更为Following,如果是leader,就变更为leading。

6.ZooKeeper的序列化协议:Jute

7.数据存储
分为两部分:内存数据存储和磁盘数据存储。

参考资料:
《从Paxos到ZooKeeper分布式一致性原理与实践》

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71565.html

相关文章

  • Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)

    摘要:协议是为分布式协调服务专门设计的一种支持崩溃恢复的一致性协议,这个机制保证了各个之间的同步。选主是协议中最为重要和复杂的过程。以实际效果而言,分区相当于对通信的时限要求。参考官方文档阿里巴巴为什么不用做服务发现定理的含义阮一峰 前言 同学们,在上一章中,我们主要讲了Zookeeper两种启动模式以及具体如何搭建。本章内容主要讲的是集群相关的原理内容,第一章可以当做是Zookeeper原...

    Olivia 评论0 收藏0
  • Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建

    摘要:本章内容主要讲的是集群搭建相关的知识。在集群模式下,最少需要三个节点。并且官方推荐你使用奇数数量的节点来组成集群。这个值必须是集群中唯一的。在确认每台服务器上的和文件修改创建之后,在三个节点上分别执行命令,启动。 前言 同道们,好久不见,上一章中,我主要讲了Zookeeper的一些基础的知识点。数据模型 + 原语集 + Watches机制。本章内容主要讲的是集群搭建相关的知识。 本篇的...

    shixinzhang 评论0 收藏0
  • Zookeeper学习系列【一】 教会你Zookeeper的一些基础概念

    摘要:具有不可分割性即原语的执行必须是连续的,在执行过程中不允许被中断。提供服务主要就是通过数据结构原语集机制达到的。子节点的版本号数据节点版本号版本号创建该节点的会话的。后位则为递增序列。 前言 最近加入了部门的技术兴趣小组,被分配了Zookeeper的研究任务。在研究过程当中,发现Zookeeper由于其开源的特性和其卓越的性能特点,在业界使用广泛,有很多的应用场景,而这些不同的应用场景...

    DevWiki 评论0 收藏0
  • ZooKeeper学习笔记之扫盲

    摘要:可靠性一旦数据更新成功,将一直保持,直到新的更新。这是一种主动的分布式数据结构,能够在外部情况发生变化时候主动修改数据项状态的数据机构。如果监视节点状态发生变化,则跳转到第步,继续进行后续的操作,直到退出锁竞争。 题外话:从字面上来看,ZooKeeper表示动物园管理员,而Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以可以ZooKeepe...

    sarva 评论0 收藏0

发表评论

0条评论

sevi_stuo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<