写在前面
前面一篇文章简单介绍了zookeeper的安装,当安装好了zookeeper后,我们可以通过zookeeper自带的客户端连接到zookeeper上,并对其进行操作,在对它进行操作前我们先要了解一些基本的知识。
zookeeper工作原理
上图为zookeeper的节点结构,其中/为zookeeper的根节点,每个节点可以拥有自己的子节点,子节点又可以有子节点,每个节点拥有一个值,zookeeper的工作就是围绕对这些节点操作展开的。
节点分类
ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节点类型。
持久节点(PERSISTENT)
所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。
持久顺序节点(PERSISTENT_SEQUENTIAL)
这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。
临时节点(EPHEMERAL)
和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。
临时顺序节点(EPHEMERAL_SEQUENTIAL)
扫描二维码关注公众号,回复: 3816668 查看本文章可以用来实现分布式锁
zookeeper应用场景
ZooKeeper master 选举
ZooKeeper 数据的发布订阅
ZooKeeper 负载均衡
ZooKeeper 实现分布式锁
ZooKeeper 实现分布式队列
ZooKeeper 实现命名服务