Zookeeper入门

1.什么是Zookeeper

ZooKeeper是一个开源的分布式协调服务,他为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名空间服务,配置服务和分布式锁等分布式基础服务。

2.Zookeeper基本概念

2.1.Zookeeper角色

Zookeeper角色有三种:群首(leader)、追随者(follower)、观察者(observer)。通过一次选举过程,被选举的机器节点,被称为Leader。Leader作为整个ZooKeeper集群的主节点,主要职责是:

  • 事物请求的唯一调度和处理者,保证集群事务处理的顺序性
  • 集群内部各个服务器的调度者。

Follower服务器是zookeeper集群状态的跟随者,其主要工作有以下三个。

  • 处理客户端非事物请求,转发事物请求给Leader服务器。
  • 参与事务请求Proposal的投票。
  • 参与Leader选举投票。

Observer和Follower唯一的区别在于,Observer不参与任何形式的投票,包括事物请求Proposal的投票和Leader选举投票。简单地讲,Observer服务器只提供非事物服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事物处理能力。

一个典型的Zookeeper集群如下所示:

Zookeeper入门

 

2.2.节点

节点在ZeeKeeper中包含两层含义:

  • 集群中的一台机器,我们成为机器节点
  • ZooKeeper数据模型中的数据单元,我们成为数据节点(ZNode)

ZooKeeper的数据模型是内存中的一个ZNode数,由斜杠(/)进行分割的路径,就是一个ZNode,每个ZNode上除了保存自己的数据内容,还保存一系列属性信息。

ZooKeeper中的数据节点分为两种:持久节点和临时节点。所谓的持久节点是指一旦这个ZNode创建成功,除非主动进行ZNode的移除操作,节点会一直保存在ZooKeeper上;而临时节点的生命周期是跟客户端的会话相关联的,一旦客户端会话失效,这个会话上的所有临时节点都会被自动移除。

2.3.数据模型

Zookeeper的数据存储采用的是结构化存储,结构化存储是没有文件和目录的概念,里边的目录和文件被抽象成了节点(node),zookeeper里可以称为znode。每个ZNode节点都可以存储自己的数据,还可以拥有自己的子节点目录。Znode的层次结构如下图:

Zookeeper入门

最上边的是根目录,下边分别是不同级别的子目录。

3.Zookeeper搭建使用实例

Zookeeper使用方式主要是:单机模式和集群模式。普通的单机和集群模式下的搭建可以参考一下这篇博文:https://www.cnblogs.com/lsdb/p/7297731.html

如果要使用Docker进行Zookeeper的单机或者集群模式的搭建,可以参考下面这篇博文(利用Docker可以非常方便的搭建伪集群的Zookeeper的搭建,而且相对于虚拟机资源消耗非常低,所以对学习而言是一个非常好用的工具):https://www.jianshu.com/p/9a2963c2998a

4.参考文章:

https://blog.****.net/liweisnake/article/details/63251252

https://blog.****.net/abountwinter/article/details/55188809

https://www.cnblogs.com/halu126/p/7078637.html

https://www.cnblogs.com/leocook/p/zk_0.html