概述

Zookeeper是一个开源的分布式的, 为分布式应用提供协调服务的Apache项目.

工作机制

从设计模式来看, 是一个观察者式设计的分布式服务框架, 负责存储和管理大家都关心的数据, 接受观察者的注册, 一旦数据发生变化, Zookeeper就负责通知已经在Zookeeper上注册的观察者做出相应的反应.
image.png

特点

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

数据结构

树形结构, 每一个Znode储存1MB的数据

应用场景

统一命名服务

在分布式环境下, 经常需要对应用/服务进行命名, 便于识别. 例如: IP不容易记住, 域名容易记住
image.png

统一配置文件

要求一个集群中所有的节点配置信息都是一致的, 修改配置文件后, 希望快速同步到各个节点上
image.png

统一集群管理

实时掌握每个节点的状态, 当变化时, 做出调整

软负载均衡

让访问次数最少的服务器去处理最新的请求