zookeeper简介

概述

ZooKeeper服务器是用Java创建的,它在JVM上运行。你需要使用JDK 6或更高版本。
zookeeper是开源的分布式的,为分布式应用提供协调服务的Apache项目。
(管理整个大数据生态中的很多框架,hadoop,kafka,hbase,tire等)

zookeeper的工作机制

从设计模式角度理解,它是一个基于观察者模式设计的分布式服务管理框架。(23种设计模式)
它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据状态发生变化,
zookeeper就将负责通知已经在zookeeper上注册的那些观察者做出相应的反应。
文件系统+通知机制

特点

  • 1.zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  • 2.集群中只要有半数以上节点存活,Zookeeper就能正常服务。(和redis很像)
  • 3.全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
  • 4.更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。
  • 5.数据更新原子性,事务。
  • 6.实时性,在一定时间范围内,client能读到最新数据。(同步副本的时间会很短,因为本来存储的就是一些配置信息)

zookeeper的数据结构

zookeeper的数据结构与unix类似。整体结构可以看做是一颗树,每个节点称做一个znode。
每一个znode默认能够存储1M的数据,每个数据都可以通过其路径唯一标识。

zookeeper的应用场景

统一命名服务

例如:IP不容易记住,而域名容易记住。

1
2
3
4
5
6
7
zookeeper service
/
/service
www.baidu.com
10.167.219.250
10.167.219.237
10.167.219.249

当客户端(client)访问www.baidu.com时,zookeeper帮助控制客户端连接访问哪一台服务器。

统一配置管理

在分布式下配置文件同步非常重要。
比如kafka、hadoop。

1
2
3
4
5
6
7
1.一般要求一个集群中,所有节点的配置信息是一致的,比如kafka集群。
(1000台服务器,只需要配置zookeeper就可以同步到所有的服务器)
2.对配置文件修改后,希望能够快速同步到各个集群服务器。
zookeeper配置同步信息:
1.将配置信息写入zookeeper的一个znode。
2.各个客户端服务器监听这个znode。
3.只要配置信息变化了,就把配置信息拿过来同步。

统一集群管理

分布式环境中,实时掌握每个节点的状态是必要的。

  • 1.可根据节点实时状态做出一些调整。

  • 2.zookeeper可以实时监控节点的状态变化。

    • 1.可以将节点信息写入zookeeper上的一个znode
    • 2.监听这个znode可获取它的实时状态变化
  • 3.服务器节点动态上下线
    服务器上下线自动调节。

  • 4.软负载均衡
    在zookeeper中监听记录每个服务器的访问数,让访问数最少的服务器取处理最新的客户端请求。
    (加权分配)

分享到