Zookeeper:一个用于分布式应用程序的分布式,开源的协调服务
ZooKeeper 公开了一组简单的原语,分布式应用程序可以基于这些原语来实现统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等
简单来说 ZooKeeper = 文件系统 + 监听通知机制
1.文件系统
ZooKeeper维护一个类似于文件系统的数据结构:
每个子目录项如 NameService 都被称作 znode(目录节点),和文件系统一样,我们能够自由的增加、删除 znode,在一个 znode 下增加、删除子 znode,唯一的不同在于 znode 是可以储存数据的。
有四种类型的 znode:
-
PERSISTENT-持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在 -
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 -
EPHEMERAL-临时目录节点
客户端与zookeeper断开连接后,该节点被删除 -
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
2.监听通知机制
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper 会通知客户端。
ZooKeeper单机模式配置安装
配置文件
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
- tickTime:ZooKeeper使用的基本时间单位(毫秒)。它用于做心跳,并且最小会话超时将是tickTime的两倍
- dataDir:存储内存数据库快照的位置,除非另有说明,否则存储数据库更新的事务日志。
- clientPort:用于监听客户端连接的端口
简单操作
启动命令:zkServer.sh start
命令行连接:zkCli.sh
- 使用
ls
命令来查看当前 ZooKeeper 中所包含的内容ls \
- 创建一个新的 znode ,使用
create /zkPro myData
- 使用
get
命令来查看上面创建的znode中是否存在对应的数据get /zkPro
- 使用
set
命令来对zk索关联的字符串进行设置:set /zkPro myData123
- 删除znode:
delete /zkPro
分布式搭建
三台机器
配置文件
server.1=xxx.xxx.xxx.xxx:2888:3888
server.2=xxx.xxx.xxx.xxx:2888:3888
server.3=xxx.xxx.xxx.xxx:2888:3888
添加如下配置,启动即可,需要在data路径下添加 myid 文件配置id