ZooKeeper入门
1.1ZooKeeper概述
查看ZooKeeper的官网,介绍它是Apache 家族中的一个分布式服务框架,它的主要作用是来解决分布式应用中经常遇到的一些数据管理问题。简单来说,ZooKeeper就是文件系统+监听通知机制。
1.2数据结构
ZooKeeper的数据结构与Unix文件系统相类似,如下图所示。整体上可以看做是一棵树,每个节点称作一个ZNode。每一个ZNode上默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。
1.3 应用场景
ZooKeeper目前提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
1.统一命名服务:
在分布式环境下,经常需要对应用进行统一命名,便于识别。例如IP不容易记住,而域名容易记住。
2.统一配置管理:
分布式环境下,配置文件同步非常常见。
(1)一般要求在一个集群中,所有节点的配置信息是一致的,比如Kafka集群。
(2)对配置文件修改后,希望能够快速同步到各个节点上。
在ZooKeeper集群中配置管理交由ZooKeeper实现。可将配置信息写入ZooKeeper上的一个Znode;各个客户端服务器监听这个Znode。一旦Znode中的数据被修改,ZooKeeper将通知各个客户端服务器。
3.统一集群管理:
分布式环境中,实时掌握每个节点的状态是必要的,系统可根据节点的实时状态来做出一些调整。ZooKeeper可以实现实时监控节点的状态变化,可将节点信息写入一个Znode,监听这个Znode可获取它的实时状态变化。
4.服务器动态上下线:
5.软负载均衡:
在ZooKeeper中记录了每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。