文章目录
一、Zookeeper概述
1.1 概述
Zookeeper是Apache的一个开源的分布式项目,能作为微服务的注册中心
官网:https://zookeeper.apache.org/
1.2 工作机制
Zookeeper从设计模式角度 来理解:
是一个基于观察者模式
设计的分布式服务管理框架 ,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就 将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
即:Zookeeper = 文件系统 + 通知机制
1.3 特点
- Zookeeper集群有一个领导者(leader)和多个跟随着(follower)
- 集群中有**
半数以上
**节点存活,集群就能正常服务。所以zookeeper适合安装奇数台服务器 - 全局一致性 :每个Server保存一份相同的数据副本,Client无论连接到哪个Server数据都是一致的
- 更新请求顺序执行 :来自同一个Client的更新请求按其发送顺序依次执行
- 数据更新原子性 :一次数据更新要么成功,要么失败
- 实时性 :在一定时间范围内,Client能读到最新数据
1.4 数据结构
Zookeeper数据模型的结构与Unix文件系统类似 ,整体上可以看作一棵树,每个节点称作一个ZNode
。
每一个 ZNode
默认能够存储 1MB
的数据,每个 ZNode
都可以通过其路径唯一标识。
1.5 应用场景
提供的服务包括:
- 统一命名服务
- 统一配置管理
- 统一集群管理
- 服务器节点动态上下线
- 软负载均衡等
1.5.1 统一命名服务
在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。
例如:IP不容易记住,而域名容易记住。
1.5.2 统一配置管理
分布式环境下,配置文件同步问题非常常见。 一般要求一个集群中,所有节点的配置信息是一致的
,比如 Kafka 集群。所以希望对配置文件修改后,希望能够快速同步
到各个节点上。
这时候可以把配置管理交给Zookeeper来实现,可以将配置信息写入ZooKeeper上的一个Znode。各个客户端服务器监听这个Znode。一 旦Znode中的数据被修改,ZooKeeper将通知各个客户端服务器</