概述
Zookeeper是一个开源的分布式的, 为分布式应用提供协调服务的Apache项目.
工作机制
从设计模式来看, 是一个观察者式设计的分布式服务框架, 负责存储和管理大家都关心的数据, 接受观察者的注册, 一旦数据发生变化, Zookeeper就负责通知已经在Zookeeper上注册的观察者做出相应的反应.
特点
- 一个领导者(Leader), 多个跟随者(Follower)组成的集群
- 集群中只要有半数以上的结点存活, Zookeeper集群就能正常服务
- 全局数据一致性: 每个Server保存一份相同的副本, Client无论连接哪一个Server, 数据都是一样的
- 更行请求顺序进行, 来自同一个Client的更新请求按其发送顺序一次进行
- 数据更新原子性, 一次数据更新要么成功, 要么失败, 事务
- 实时性, 在一定时间内, Client能读到最新的数据
数据结构
树形结构, 每一个Znode储存1MB的数据
应用场景
统一命名服务
在分布式环境下, 经常需要对应用/服务进行命名, 便于识别. 例如: IP不容易记住, 域名容易记住
统一配置文件
要求一个集群中所有的节点配置信息都是一致的, 修改配置文件后, 希望快速同步到各个节点上
统一集群管理
实时掌握每个节点的状态, 当变化时, 做出调整
软负载均衡
让访问次数最少的服务器去处理最新的请求
