zookeeper简介
- zookeeper 是一个开源的,为分布式应用提供协调服务的Apache项目。是一个基于观察者模式设计的分布式服务广利框架负责存储和管理大家都关心的数据然后接受观察者的注册。
- zookeeper = 文件系统 + 通知机制
zookeeper的特点
- 一个领导者多个跟随着组成的集群。
- 集群中只要有半数以上的节点存活,zookeeper集群就能正常服务。
- 全局的数据保持一致,每个服务器保存一份相同的数据副本,客户端无论连接到那个服务器上,他的数据都是一样的。
- 更新请求顺序进行,来自同一个客户端的更新请求,按其发送顺序依次执行。
- 数据更新的原子性,要么成功、要么失败。
- 实时性,在一定时间范围内,客户端能读到最新数据。
zookeeper的数据结构
- 每个节点(ZNode)默认能够存储1MB的数据。
- 每个节点(ZNode)都可以通过其路径唯一标识。
zookeeper的统一配置管理
- 一般要求一个集群中,所有的节点的配置信息要一致。
- 对配置文件修改后,希望能够快速同步到各个节点上。
配置文件可以交由zookeeper实现
- 可以将配置信息写入到zookeeper上的一个ZNode上。
- 各个客户端舰艇这个ZNode。
- 一旦ZNode中的数据被修改,zookeeper将通知各个客户端服务器。
统一集群管理
分布式环境中,实时掌握每个节点的状态是必要的
- 可以根据节点实时状态,做出一些调整。
zookeeper可以实现实时监控节点的状态变化
- 可以将节点信息写入zookeeper上的一个ZNode。
- 监听这个ZNode可以获取他的实时状态变化。
软负载均衡
- 在zookeeper中记录每台服务器的访问数,让访问数最少的去处理最新的客户端请求。