分布式Web应用----zookeeper基本工作原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whzhaochao/article/details/51044701

写在前面

前面一篇文章简单介绍了zookeeper的安装,当安装好了zookeeper后,我们可以通过zookeeper自带的客户端连接到zookeeper上,并对其进行操作,在对它进行操作前我们先要了解一些基本的知识。

zookeeper工作原理

这里写图片描述

上图为zookeeper的节点结构,其中/为zookeeper的根节点,每个节点可以拥有自己的子节点,子节点又可以有子节点,每个节点拥有一个值,zookeeper的工作就是围绕对这些节点操作展开的。

节点分类

ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节点类型。

  1. 持久节点(PERSISTENT)

    所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。

  2. 持久顺序节点(PERSISTENT_SEQUENTIAL)

    这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。

  3. 临时节点(EPHEMERAL)

    和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。

  4. 临时顺序节点(EPHEMERAL_SEQUENTIAL)

    可以用来实现分布式锁

zookeeper应用场景

  1. ZooKeeper master 选举

  2. ZooKeeper 数据的发布订阅

  3. ZooKeeper 负载均衡

  4. ZooKeeper 实现分布式锁

  5. ZooKeeper 实现分布式队列

  6. ZooKeeper 实现命名服务

猜你喜欢

转载自blog.csdn.net/whzhaochao/article/details/51044701