zookeeper

zookeeper是什么?

zookeeper能够解决什么问题?

  1. 统一的配置管理,同步更新到所有zk节点,所有app读取到最新的配置
  2. 发布订阅
  3. 分布式锁

zookeeper有哪些特点?

  • 一致性

    保证数据一致性,数据按照顺序分批入库

  • 原子性

    事务要么成功要么失败,不会局部化

  • 单一视图:

    客户端连接集群中的任一zk节点,数据都是一致的

  • 可靠性:

    每次对zk的操作状态都会保存在服务端

  • 实时性:

    客户端可以读取到zk服务端的最新数据

zoo.cfg 配置

配置项 含义
tickTime 用于计算的时间单元,比如session超时:N*tickTime,其他时间都是基于tickTime的倍数来计算的
initLimit 用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数表示
syncLimit 用于集群,master与slave之间发送消息,请求和应答时间长度(心跳间隔)
dataDir 存放数据的目录
clientPort 服务端口,默认2181
dataLogDir 存放日志的目录

数据模型

  1. 树形结构

/
---/hadoop
------/hadoop/001
---/hive
------/hive/001
------/hive/002

  1. 每一个节点称为znode,可以有子节点,也可以有数据
  2. 每个节点分为临时节点和永久节点,临时节点在客户端断开后消失
  3. 每个zk节点都有各自的版本号,可以通过命令行来显示节点信息
  4. 每当节点数据发生变化,该节点的版本号会累加(乐观锁)
  5. 删除/修改过时节点,版本号不匹配则会报错
  6. 每个znode存储的数据不宜过大,几k即可
  7. 节点可以设置权限acl,可以通过权限来限制用户访问

你可能感兴趣的:(zookeeper)