本文目的解释以下内容,暂未涉及到原理实现和代码使用:
- 什么是Zookeeper?
- Zookeeper 有什么特点?
- Zookeeper 有什么用?
资料
简介
什么是 zookeeper ?从简单的来说,它是一个为分布式框架提供协调的服务,基于 观察者模式 设计,负责 存储和管理 大家关心的数据,接受 观察者的注册,一旦数据状态发送了变化,则通知注册的观察者做出相对应的改变。概括的来说,它就是负责 文件系统 + 通知机制 的服务
服务示意

从上面这个图我们可以看出框架必须实现下面的功能:
- 支持服务提供者注册
- 支持服务消费者获取
- 支持动态的消息通知
特点
- Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
- 集群中主要有 半数以上 节点存活,Zookeeper 集群就能正常服务,所以 Zookeeper 适合安装基数台服务器
- 全局数据一致:每个 server 保存一分相同的数据副本,无论 Client 连接到哪个 server 数据都是一样
- 更新请求顺序执行,来自同一个 Client 的更新请求按其发送顺序依次执行
- 数据更新原子性,一次更新要么成功,要么失败
- 实时性,在一定时间范围内,Client 能读到最新数据
数据结构
Zookeeper 数据模型的结构与 Unix 文件系统很相似,整体上可以看作一个树,每个节点称为一个 ZNode。每个ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以 通过其路径唯一标识。

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