本文目的解释以下内容,暂未涉及到原理实现和代码使用:

  1. 什么是Zookeeper?
  2. Zookeeper 有什么特点?
  3. Zookeeper 有什么用?

资料

  1. 2021最新版Zookeeper 3.5.7版本教程
  2. docker单机安装

简介

什么是 zookeeper ?从简单的来说,它是一个为分布式框架提供协调的服务,基于 观察者模式 设计,负责 存储和管理 大家关心的数据,接受 观察者的注册,一旦数据状态发送了变化,则通知注册的观察者做出相对应的改变。概括的来说,它就是负责 文件系统 + 通知机制 的服务

服务示意

image.png

从上面这个图我们可以看出框架必须实现下面的功能:

  1. 支持服务提供者注册
  2. 支持服务消费者获取
  3. 支持动态的消息通知

特点

  1. Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  2. 集群中主要有 半数以上 节点存活,Zookeeper 集群就能正常服务,所以 Zookeeper 适合安装基数台服务器
  3. 全局数据一致:每个 server 保存一分相同的数据副本,无论 Client 连接到哪个 server 数据都是一样
  4. 更新请求顺序执行,来自同一个 Client 的更新请求按其发送顺序依次执行
  5. 数据更新原子性,一次更新要么成功,要么失败
  6. 实时性,在一定时间范围内,Client 能读到最新数据

数据结构

Zookeeper 数据模型的结构与 Unix 文件系统很相似,整体上可以看作一个树,每个节点称为一个 ZNode。每个ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以 通过其路径唯一标识。

image.png

应用场景

以下为 Zookeeper 的主要应用场景,以及对应场景相同功能的软件

  1. 统一命名服务(nginx)
  2. 统一配置管理(apollo)
  3. 统一集群管理(consul)
    1. 将节点信息写入到 Zookeeper 上的 ZNode
    2. 监听这个ZNode可以获取它的实时状态变化
  1. 服务器动态上下线,客户端能实时洞察到服务器上下线的变化(consul)
  2. 软负载均衡(consul)
    1. Zookeeper 根据节点上的访问数,来控制请求连接的服务