Zookeeper是用于分布式环境协调服务的项目

特性

  • 高可用性:以集群部署的Zookeeper上,保证半数以上的结点存活即可提供正常服务。
  • 实时性:在一定时间段内,客户端能从服务端读取到最新的数据。
  • 一致性:无论连接哪个服务器,总可以获得相同的数据模型。

数据结构

与*Unix类似的树形结构保证了索引的一致性:
树形结构

单个Znode大小不超过1MB,满足于读多写少的需求,便于快速同步保证实时性。

  • data:Znode储存的数据
  • ACL:Znode访问的权限
  • stat:各种元数据,包含版本号、时间戳、大小等
  • child:记录子节点引用

ZNode结构

安装(分布式)

  • 解压,配置环境变量:

    1
    tar -zxvf zook*.tar.gz

    在/etc/profile中配置

    1
    2
    export ZOOKEEPER_HOME=/root/software/zookeeper-3.4.6
    export PATH=.:$PATH:$ZOOKEEPER_HOME/bin

    生效环境变量:

    1
    source /etc/profile
  • 配置data目录与cfg配置文件:

    1
    2
    3
    4
    cd zookeeper-3.4.6
    mkdir data
    cd conf
    cp zoo_sample.cfg zoo.cfg

    在zoo.cfg中配置dataDir参数

在zoo.cfg末尾添加:

1
2
3
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

  • 进入data目录配置id:
    1
    2
    3
    master上:echo 0 myid
    slave1上:echo 1 myid
    slave2上:echo 2 myid
  • 修改/etc/profile,保证三台服务器环境一致

  • 启动与管理

    1
    2
    3
    4
    zkServer.sh start //开启Zookeeper
    zkServer.sh stop
    zkServer.sh status
    zkCli.sh //开启Zookeeper客户端

参考链接

什么是ZooKeeper?
可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章