ZooKeeper

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

  1. 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容 ls \
  2. 创建一个新的 znode ,使用 create /zkPro myData
  3. 使用 get 命令来查看上面创建的znode中是否存在对应的数据 get /zkPro
  4. 使用 set 命令来对zk索关联的字符串进行设置:set /zkPro myData123
  5. 删除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

你可能感兴趣的:(ZooKeeper)