千家信息网

zookeeper高级特性有哪些

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"zookeeper高级特性有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"zookeeper高级特性有哪些"吧!一、三个概念1
千家信息网最后更新 2026年11月01日zookeeper高级特性有哪些

这篇文章主要讲解了"zookeeper高级特性有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"zookeeper高级特性有哪些"吧!

一、三个概念

1.CreateMode

在create的时候可以设置znode的类型

主要有四种:

PERSISTENT (持续的,相对于EPHEMERAL,不会随着client的断开而消失)

PERSISTENT_SEQUENTIAL(持久的且带顺序的)

EPHEMERAL (短暂的,生命周期依赖于client session)

EPHEMERAL_SEQUENTIAL (短暂的,带顺序的)

2.Watcher

Watcher是一种反向推送机制,即zonde(包括他的child)有改变的时候会通知客户端。

可以自定义Watcher,注册给zonde。

watcher分为两大类:data watches和child watches。前者监听数据的变动,后者监听子node的变动。

Watcher是一次性的!一旦被调用,则需要重新注册。

3.ACL

acl即access control。zookeeper通过ACL机制来控制权限。创建znode的时候可以指定。前边我们讲过,一套zookeeper会被多个程序使用。就像linux支持多用户一样。所以需要有一套权限控制:不然自己创建的节点,被别的应用程序无缘无故删了,那找谁去?

Zookeeper的权限级别:

READ: 允许获取该节点的值和列出子节点。

WRITE: 允许设置该节点的值。

CREATE: 允许创建子节点。

DELETE: 可以删除子节点。

ADMIN: 超级权限。相当于root

从上到下递次增强,后面的权限包含前面的权限。

zookeeper的很多高级特性,都是基于以上三个概念来实现的。特别是CreateMode和Watcher

二、java客户端

zookeeper官方提供了java客户端。提供的接口也比较基础。比前一篇测试用到的telnet客户端唯一强的一点就是:我们可以在代码里实现Watcher接口实现扩展的业务!在命令行可是做不到这点的。。

maven依赖:

        org.apache.zookeeper        zookeeper        3.4.6



下面是一些重要的接口列表。



接口都很直观,描述也很详细。就不做额外的说明了。

三、一些高级特性实现原理。

1.Name Service:有点类似JNDI,树形目录天生的就有全局唯一名称。这功能实践中也没什么用,而且替代方案也很多。略。

2.配置推送:比如某个前端网站有100台机器,我们要做的是在每台机器上都有一个main程序连zookeeper,注册好Watcher。在本地连zookeeper把配置写入,zookeeper就会通过Watcher,自动把配置推送到这些机器上。而不需要去手动去更新。(相当于运维的脚本。)



3.集群管理:

每个Server起来之后都在 Zookeeper 上创建一个 EPHEMERAL 类型的znode,假设他们都有一个共同的父GroupMembers!我们在每个Server上调用getChildren(GroupMembers)方法,并注册一个 Child Watcher。由于是 EPHEMERAL 的znode,当创建它的 Server 死去,这个znode也随之被删除,所以 Children 将会变化,这时 getChildren上的 Watcher 将会被调用,所以其它 Server 就知道已经有某台 Server 死去了。新增 Server 也是同样的原理。

4.Leader选举

和集群管理的设计基本一样,不同的地方是,这次创建的znone类型是EPHEMERAL_SEQUENTIAL ,不仅仅随着member的同生同灭,而且是有顺序的。我们只要把编号最小的member认为是Master,就可以做到Leader的动态选举!



5.全局锁

zookeeper可以利用他优秀的数据一致性算法来提供可靠的全局锁服务。

获得锁是一个递归的过程

1.创建znode "/distributed_lock"

2.在distributed_lock下新建子节点"/distributed_lock/xxxxxx",EPHEMERAL_SEQUENTIAL 模式,当前序号假如是i。

3.对distributed_lock调用getChildren(),如果i是children列表里最小的,则获得锁;否则进入第4步

4.等待children列表里紧跟在i后边的那个节点被删除的通知(exists()方法)。记为j。而j又依赖于仅比j小的节点k。一直递归等待最小的znode的被删除。。

注:虽然EPHEMERAL_SEQUENTIAL是递增的,但仍然不能粗暴的认为紧跟在i后边的节点j=i-1。这是因为释放锁的顺序并不是完全按照节点顺序!

释放锁:

删除自己创建的子节点即可

6.分布式队列

类似于上边全局锁的设计。只要确保每次消费的时候编号都是最小的。就能做到先进先出。

7 。。。略 根据zookeeper创建节点类型的不同,再结合Watcher特性。还可以提供其他很多的功能。比如各种类型queue,各种类型的Lock(上面仅仅介绍了write锁),barriers,信号量Semaphore 原子类型AtomicInteger等等。。。

所有的这些都是分布式的,高可靠的。

更多更全的功能在netflix 公司开源的 zookeeper客户端Curator中有实现。作为普通开发者,直接使用Curator是最高效的!

感谢各位的阅读,以上就是"zookeeper高级特性有哪些"的内容了,经过本文的学习后,相信大家对zookeeper高级特性有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

节点 特性 类型 高级 权限 客户 客户端 顺序 最小 全局 接口 时候 功能 机器 程序 学习 推送 配置 不同 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 云之行互联网科技 西安纸贵互联网科技有限公司 广州互联网科技公司 互联网科技英文 奇酷互联网络科技公司 火传媒上海互联网科技 上海卓越科技 互联网 哈尔滨新华互联网科技学院 北京华百购互联网科技有限公司 厦门千工互联网科技有限公司 链环科技传统企业怎么转型互联网 电子科技大学互联网创业大赛 健康食品互联网创新科技园项目 西安小鹰速贷互联网科技有限公司 皮皮虾互联网科技有限公司 广州百诚互联网科技有限公司官网 广州有谷有贝互联网科技有限公司 九思连强互联网电子科技有限公司 中国科技和美国互联网 互联网与科技 广州大一互联网络科技有限公司 互联网科技公司起名 美国互联网保险保险科技 互联网科技的 睿民互联网科技 新兴科技互联网创新大赛颁奖典礼 九思连强互联网电子科技有限公司 互联网公司属于科技吗 互联网科技手抄报图片
0