Zookeeper

概述

Zookeeper是一个开源的分布式,为分布式应用提供协调服务的Apache项目,从设计角度理解是一个观察者模式,他负责存储和管理大家关心的数据,然后接受观察者的注册,一旦这个数据的状态变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应反应

特点

  • 一个领导者leader,多个跟从者follower组成的集群

  • 集群中只要有半数以上的节点存活,Zookeeper就可以正常服务

  • 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的
  • 更新请求顺序进行,来自同一个Client的请求按其发送顺序依次执行
  • 数据更新原子性,一次数据更新,要么成功要么失败
  • 实时性,在一定时间范围内,Client能读到最新数据

结构

Zookeeper数据结构模型与Unix文件系统很类似,整体上可以看做是一颗树,每个节点称作一个ZNode,默认每个ZNode可以存储1MB的数据,每个ZNode都可以通过其路径唯一标识

应用场景

统一命名服务

在分布式环境下,经常需要对应用/服务进行统一命名,便于识别,IP不容易记住

统一配置文件管理

一般要求一个集群里的所有节点的配置信息是一致的,对配置文件修改后希望能快速同步到各个节点上

统一集群管理

分布式环境中,实时掌握每个节点的状态,根据节点的实时状态做出调整,Zookeeper可以将节点信息写入一个ZNode中,实时监听这个ZNode的变化

服务器动态上下线

客户端能实时洞察无服务器上下线的状态

软负载均衡

在Zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求

安装