概述
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
Zookeeper 的数据模型
文件系统的数据结构
Zookeeper 的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录。
树是由节点所组成,Zookeeper 的数据存储也同样是基于节点,这种节点叫做 **Znode,**能够自由的增加、删除Znode节点
但是,不同于树的节点,Znode 的引用方式是路径引用,类似文件系统的数据结构
-
PERSISTENT-持久化目录节点
-
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
-
EPHEMERAL-临时目录节点
-
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
-
Container节点
3.5.3版本新增,如果节点下面没有子节点,则节点在未来会被Zookeeper自动清除(类似空的文件夹不需要了),定时任务默认60s 检查一次
-
TTL节点(默认禁用)
需要通过系统配置zookeeper.extendedTypesEnabled=true
开启