Zookeeper=文件系统+通知机制;每个子目录项都被称为znoed,znode不仅包含目录名,还包含存储的数据。
1.4种类型的znode(文件系统的核心)
|
|--Persistent :持久化节点;
| 客户端与zookeeper断开连接后,该节点依旧存在
|
|--persistent_sequential:持久化顺序节点;
| 客户端与zookeeper断开连接后,该节点依旧存在,只是zookeeper给该节点名称进行顺序编号
|
|--ephemeral :临时节点;
| 客户端与zookeeper断开连接后,该节点被删除
|
|--Ephemeral_sequential :临时顺序节点;
| 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
2.zookeeper通知机制
|
|--客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)等,zookeeper会通知客户端。
3.zookeeper主要功能
|
|--配置管理:配置放到zookeeper上,一旦配置信息发生变化,每个应用程序就会收到通知,然后从 Zookeeper 获取新的配置信息;
|
|--集群管理:监听是否有机器退出和加入、协助选举master;
|
|--分布式锁:zookeeper 提供两种锁:独占锁、共享锁(需控制时序)。
| 对于第一类,我们将zookeeper上的一个znode看作是一把锁,通过createznode的方式来实现;
| 对于第二类,/distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序节点,和选master一样,编号最小的获得锁,用完删除。
|
|--命名服务:能完成统一命名,又能完成命名解析(通过path即能互相探索发现);
4.三种角色
|
|--Leader
|
|--Follower
|
|--Observer(除了不参与选举,其他与Follower一样,主要用于跨机房zk节点)