Zookeeper的应用场景

  • 2019 年 10 月 10 日
  • 筆記

Zookeeper被广泛应用于各种分布式集群场景中,比如Hadoop、Storm、Spark、Kafka等。

大实时配置文件

Zookeeper可以作为互联网应用的实时配置开关,将配置信息设置在Zookeeper的node上,并在应用中设置Zookeeper的观察者,实时获取该node关联数据的变化,达到动态实时控制应用的配置信息的目的,实时调控生产环境各项参数。

在大型电商网站中,这种方式可用于节假日等流量爆发的场景,关闭某些不太重要的电商网站功能,降低并发量大爆发对服务器性能的冲击。

Kafka中使用

Kafka通过Zookeeper的使用提供给客户端负载均衡能力,每个Kafka客户端直接通过连接Zookeeper就能获得整个Kafka的配置信息。

Kafka将队列服务的机器注册在Zookeeper上,同时维护客户端列表,依靠负载均衡算法将客户端动态分配到合适的队列分区上,维持整个集群的负载均衡。客户端不需要预先知道当前的队列到底分配在哪个机器上,通过Zookeeper获取队列分配的动态变化。

Hadoop使用

在Hadoop1.x版本中Master是单节点模式,存在单点故障不支持热备份。Hadoop2.x版本已经开始支持使用Zookeeper作为Master节点的高可靠性方案。

Hadoop客户端连接集群时指定Zookeeper服务器地址,从Zookeeper获取当前Master节点地址,进而连接Master操作Hadoop。Hadoop客户端同时监听Zookeeper中数据变化,当Master节点切换时会将切换状态变更保存到Zookeeper中,同时Zookeeper会触发数据变化监听客户端,通知Hadoop客户端切换Master地址,达到热切换(HA)的目的。