介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
工作机制
特点
数据结构
应用场景
- 统一命名服务
- 统一管理配置
- 统一集群配置
- 服务器节点动态上下线
- 软负载均衡
选举机制
- 半数机制:集群中半数以上机器存活,集群可用。所以zookeeper适合安装奇数台服务器。
- zookeeper虽然在配置文件中并没有指定Master和Slave,但是,Zookeeper工作时,是有一个节点为Leader,其他为Follower,Leader是通过内部选举机制临时产生的。
监听器原理
写数据流程
zoo.cfg配置文件
参数 | 含义 |
---|---|
tickTime | zk使用的基本时间(ms),每隔tickTime时间心跳一次 |
initLimit | 初始通信时限(集群中F与L之间初始连接时最多能容忍的心跳数,超出则连接失败) |
syncLimit | 同步通信时限(集群中F与L之间的响应最多能容忍的心跳数,超出则认定F故障,将F剔除) |
dataDir | 保存zk数据的目录 |
clientPort | zk会在这个端口监听客户端的请求 |
service.A =B: C:D | 在集群模式下会用到这个配置。A:服务器编号(myid中的值)。B:服务器地址。C:F与L的通信端口(默认2888)。D:选举端口(默认3888) |
备注:L(leader服务器)、F(follower服务器)