Zookeeper(一)

Zookeeper概述

一. 简介


  1. Zookeeper是一款Yahoo(雅虎)开发的分布式协调框架,后来贡献给了Apache。
  2. Zookeeper提供了中心化服务(注册中心):统一配置信息、统一命名、提供分布式锁、提供组服务。
  3. 有三种运行模式
    1. 单机模式:只在一台服务器上安装,只能启动这个框架一部分的功能。
    2. 伪分布式:只在一台服务器上安装,能提供这个框架的大部分甚至全部功能。
    3. 完全分布式:在集群中安装,能提供这个框架的所有功能。

 

二. 特点


  • 本身是一个树状结构,根节点是 /
  • 每一个节点都称之为Znode节点 -Znode树。
  • 每一个节点必须携带数据,这个数据一般是对节点的描述或者配置信息。
  • 不存在相对路径,所有的节点都必须从根节点开始计算。
  • Znode会将Znode树维系在内存以及磁盘中。
    • 维系在内存中的目的是为了查询快
    • 维系在磁盘中的目的是为了可靠
  • 理论上来说,可以将Zookeeper作为缓存服务器使用(将键作为节点名,值作为数据存储),但是导致内存被大量占用,而且相对而言Zookeeper的树结构所耗费的空间比Redis的键值对结构要多,导致Zookeeper的分布式协调能力降低,所以实际开发过程中一般不作为缓存服务器使用。
  • 数据在磁盘上的存储位置由dataDir来决定。
  • 在Zookeeper中,会将每一个写操作(connect,create,set,delete,rmr等)看作是一个事务,Zookeeper会给事务分配一个全局递增的编号,称之为事务id,简写为Zxid。事务id在计算的时候,只需要关心是整个过程中的第几个写操作即可。
  • 临时节点不能挂在子节点,持久节点可以挂载。
  • 不允许有同名节点。

 

三. 命令

命令 作用
create /video 'manage video servers' 创建video节点
create -e /music '' 创建临时节点music
create -s /music '' 创建顺序节点
create -e -s /music '' 创建临时顺序节点
delete /video 删除video节点(不能有子节点)
rmr /video 递归删除(连子节点一起删除
ls / 查看根节点
set /log '' 修改数据
get /log 获取数据及节点信息

 

四. 节点信息/属性

属性 作用
cZxid 节点创建的事务id
ctime 节点创建的时间
mZxid 节点数据修改的事务id
mtime 节点数据修改的时间
pZxid 子节点个数变化的事务id
cversion 子节点个数变化的次数
dataVersion 节点数剧变化的次数
aclVersion 节点的权限变化
ephemeralOwner 持久节点:0 临时节点:sessionId(非0)
dataLength 数据的字节个数
numChildren 子节点个数
  • 在Zookeeper中,会为每一个写操作分配一个全局递增(即,不区分节点)的事物id
  • 一个节点刚创建的时候,cZxid,mZxid,pZxid一致。
  • 关于各操作给节点信息带来的变化,可以试试以下练习:
     

 

五. 节点类型

持久节点 临时节点
顺序节点 Persistent_Sequential Ephemeral_Sequential
非顺序节点 Persistent Ephemeral

 

下篇

原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13169817.html