千家信息网

zookeeper高级特性有哪些

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要讲解了"zookeeper高级特性有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"zookeeper高级特性有哪些"吧!一、三个概念1
千家信息网最后更新 2025年02月03日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安全错误 数据库的锁怎样保障安全 软件开发风险承担问题 MBC数据库的检索式一般怎么写 网页打开sql服务器地址 荔湾区数据网络技术开发动态 数据库学起来怎么样 服务器网卡故障 江苏商城软件开发怎么样 扬州网络营销软件开发资费 命令提示符提示服务器已存在 做个网站云服务器要多少钱 电子商务数据库硬件设施安全 海南特色软件开发价格表格 mysql 跨数据库 网络安全中三分技术七分管理 服务器远程配置工具 斗罗大陆我的世界服务器解说 上海金迅瑞博网络技术有限公司 网络技术能提高学历吗 延庆区品牌软件开发服务电话 石林软件开发 英语介绍计算机网络技术 网络安全等级保护tcsec 当虹科技互联网大会 三级数据库技术备考多久 崇明区互联网视频系统服务器 vpn的服务器设置 电信 孵化 网络安全公司 全球金融系统关注网络安全 杭州运维服务管理软件开发 网络安全中6x3是什么意思
0