关于zookeeper:02-什么是-zookeeper

37次阅读

共计 1705 个字符,预计需要花费 5 分钟才能阅读完成。

1. 什么是 zookeeper?

zookeeper 是一个开源的分布式应用的协同服务

zookeeper 的设计指标是对简单易错的分布式应用的协同操作进行形象和封装:

  • 简略的数据模型
  • 集群
  • 程序拜访
  • 高性能

zookeeper 的个性:

  • 程序一致性,zookeeper 的对于客户端的申请,严格依照发动程序进行解决
  • 原子性,事务性申请的原子性,要么全副失败,要么全副胜利
  • 可靠性,肯定事务申请胜利,集群所有节点对于该申请的后续响应都是一致性,除非有其余申请进行批改
  • 实时性,从 zookeeper 集群节点获取的数据都是最新的
  • 繁多视图,从 zookeeper 集群节点获取的数据始终是统一的

2. zookeeper 提供哪些服务?

应用程序要应用 zookeeper,须要引入 对应的 zookeeper 客户端

zookeeper 典型的利用场景:

  • 对立配置管理
  • 对立命名服务
  • DNS 服务
  • 组成员治理(主从治理、负载平衡)
  • 分布式锁的实现

zookeeper 更实用来存储一些要害数据,如配置文件、利用状态等,不适用于较大的数据量的存储

理论示例:

  • Hadoop:应用 zookeeper 做 Namenode 的高可用
  • HBase:通过 zookeeper 保障集群中只有一个 master,保留集群中的 RegionServer 列表、保留 hbase:meta 表的地位
  • Kafka:集群成员治理,controller 节点的选举

3. zookeeper 的数据模型

zookeeper 的数据模型是层次模型,相似于规范的文件系统

为什么应用层次模型而不是 K-V 模型:

  1. 层次模型的树形构造更容易表白数据之间的档次关系
  2. 层次模型的树形构造便于为不同的利用调配独立的命名空间

zookeeper 的层次模型的每个节点称为 znode,每个 znode 都能够保留数据(这是和文件系统的区别)

图示:

zookeeper 对外提给了一个简化的类文件系统的 API 来拜访 znode:

  1. znode 以 UNIX 格调的门路进行命名,以 / 进行分隔
  2. znode 除了保留的数据,还以 Key-Value 的模式保留了相干的版本信息等状态属性
  3. znode 的所有操作都是 wait-free,就是正执行的操作不影响其余 API
  4. znode 最多存储 1 MB 的数据

znode 的状态属性:

Key
cZxidznode 创立时的事务 ID
ctimeznode 创立的工夫
mZxid 最初批改 znode 的事务 ID
mtime 最初批改 znode 的工夫
pZxid 示意该节点的子节点列表最初一次批改的事务 ID
cversion 子节点版本号,子节点每次批改版本号加 1
dataversion 数据版本号,数据每次批改该版本号加 1
aclversion 权限版本号,权限每次批改该版本号加 1
ephemeralOwner 创立该长期节点的会话的 sessionID
dataLength 该节点的数据长度
numChildren 间接子节点的数量

pZxid:只有子节点的创立或者删除才会变更该值

ephemeralOwner:如果是持久性节点,这个值为 0

znode 的划分

znode 能够是永久性的,也能够是临时性的:

  • 永久性的 znode(PERSISTENT)在创立后即时 zookeeper 宕机或者 client 会话完结也不会失落
  • 临时性的 znode(EPHEMERAL)如果 zookeeper 或者 client 会话完结后就会失落

znode 也能够是程序性,程序性的 znode 关联一个惟一的 枯燥递增整数作为后缀或者命名:

  • 永久性的程序 znode(PERSISTENT_SEQUENTIAL),具备程序性的永恒 znode
  • 临时性的程序 znode(EPHEMERAL_SEQUENTIAL)

znode 次要划分为下面四种

4. znode 的简略 API

通过 zkCli 能够对 zookeeper 进行一些简略操作:

命令 作用
help 能够展现 zkCli 反对的命令
ls 展现 zookeeper 下的 znode,参数 -R 示意向下递归
ls2 同 ls 命名,然而展现的数据更多
get 获取 znode 的数据和状态信息
stat 获取 znode 的状态信息数据
create 创立 znode 并赋值,-e 示意创立的 znode 是临时性的,- s 示意是程序性的
set 批改 znode 的数据
delete 删除 znode
正文完
 0