zookeeper学习


zookeeper学习

参考ZooKeeper 详解

zookeeper是分布式的、开源的程序协调服务,提供的主要功 能包括:配置管理、名字服务、分布式锁、集群管理。

  • 配置管理

    数据库链接等配置服务,通过zab协议使得分布式系统达成一致性

  • 名字服务

    通过指定的名字获取资源或者服务的地址,童工者的信息

  • 分布式锁

    控制分布式系统之间同步访问资源

  • 集群管理

    感知集群的变化,采取相应的措施

zookeeper的存储结构是树形的,每个节点为Znode,与unix文件系统结点相似,可以存储/获取该节点数据

znode节点:每个节点至多存储1M数据,并且可以通过ls,delete,get,set操作节点

节点类型:
  • PERSISTENT 持久化节点: 在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。
  • PERSISTENT_SEQUENTIAL 持久顺序节点,与持久化节点基本一致,但他的父节点会为他的第一级子节点维护一份时序,记录每个节点创建顺序
  • EPHEMERAL 临时节点 临时节点的生命周期和客户端会话绑定,会话结束,节点被清理掉
  • EPHEMERAL_SEQUENTIAL 临时自动编号节点 带有顺序的临时节点
zookeeper特点
  • 最终一致性:client 不论连接到哪个 Server,展示给它都是同一个视图
  • 可靠性:如果消息 m 被到一台服务器接受,那么它 将被所有的服务器接受。
  • 实时性:Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。
  • 等待无关:慢的或者失效的 client 不得干预快速的 client 的请求,使得每 个 client 都能有效的等待。
  • 原子性:更新只能成功或者失败,没有中间状态。
  • 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息 a 在消息 b 前发布,则在所有 Server 上消息 a 都将在消息 b 前被发布;偏序是指如果一个消息 b 在消 息 a 后被同一个发送者发布,a 必将排在 b 前面。

zookeeper安装:

  • 下载安装包:

    Apache:https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

    bit:https://mirrors.bit.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

  • 安装

    解压,并创建data,log文件夹

    复制conf/zoo_sample.cfg文件为conf/zoo_cfg,修改配置

    #修改
    dataDir=D:/Tools/zookeeper/apache-zookeeper-3.7.0-bin/data
    #新增
    dataLogDir=D:/Tools/zookeeper/apache-zookeeper-3.7.0-bin/log
    
  • 启动

    运行zhSever.cmd,启动

    运行zhCli.cmd验证,出现Welcome to ZooKeeper!则启动成功