ZooKeeper基本数据模型

ZooKeeper基本数据模型

1、是一个树型结构,类似前端开发中的tree.js组件。

2、每个节点称之为znode,它可以有子节点,也可以有数据。

3、每个节点分为临时节点和永久节点,临时节点会在客户端断开后消失。

4、每个zk节点都各自的版本号,可以通过命令行来显示节点信息。

5、每个节点数据发生变化,那么节点的版本号会累加(乐观锁)。

6、删除、修改过期节点,版本号不匹配则会报错。

6、每个zk节点存储的数据不宜过大,几K即可。

7、节点可以设置acl(权限控制链表),可以通过权限来控制用户的访问。

ZooKeeper基本数据模型_第1张图片

zookeeper的数据模型可以理解为Linux/Unix的文件目录,如:/usr/local

Linux的ZK客户端命令行学习:

./zkCli.sh可以启动客户端,使用help命令查看命令详解,使用Ctrl+C可以退出客户端:

ZooKeeper -server host:port cmd args

stat path [watch] //stat命令用于查看节点的状态信息

set path data [version] //set命令用于设置节点的数据

ls path [watch] //ls命令用于获取路径下的节点信息,注意路径为绝对路径

delquota [-n|-b] path //delquota命令用于删除配额,-n为子节点个数,-b为节点数据长度

ls2 path [watch] //ls2命令是ls命令的增强版,比ls命令多输出本节点信息

setAcl path acl // setAcl命令用于设置节点Acl,Acl由三部分构成:1为scheme,2为user,3为permission,一般情况下表示为scheme:id:permissions

setquota -n|-b val path //setquota命令用于设置节点个数以及数据长度的配额

history //history用于列出最近的命令历史,可以和redo配合使用

redo cmdno //redo命令用于再次执行某个命令

printwatches on|off //printWatchers命令用于设置和显示监视状态,值为on或则off

delete path [version] //delete命令用于删除节点,如delete /nodeDelete

sync path //sync命令用于强制同步,由于请求在半数以上的zk server上生效就表示此请求生效,那么就会有一些zk server上的数据是旧的。sync命令就是强制同步所有的更新操作。

listquota path //查看指定znode的配额

rmr path //递归删除

get path [watch] //get命令用于获取节点的信息,注意节点的路径必须是以/开头的绝对路径。如get /

create [-s] [-e] path data acl //create命令用于创建节点,其中-s为顺序充点,-e临时节点

addauth scheme auth //addauth命令用于节点认证,使用方式:如addauth digest username:password

quit //退出客户端

getAcl path //获取节点的Acl,如getAcl /node1

close //close命令用于关闭与服务端的链接

connect host:port //连接zk服务端,与close命令配合使用可以连接或者断开zk服务端

返回信息的具体含义:

cZxid = 0x0 //节点创建时的zxid

ctime = Thu Jan 01 08:00:00 CST 1970 //节点创建时间

mZxid = 0x0 //节点最近一次更新时的zxid

mtime = Thu Jan 01 08:00:00 CST 1970 //节点最近一次更新的时间

pZxid = 0x2c //子节点的id

cversion = 10 //子节点数据更新次数

dataVersion = 0 //本节点数据更新次数

aclVersion = 0 //节点ACL(授权信息)的更新次数

ephemeralOwner = 0x0 //如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是临时节点,ephemeralOwner值为0

dataLength = 0 //节点数据长度,本例中为hello world的长度

numChildren = 10 //子节点个数

zk的作用体现:

1、master节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这也就是所谓的首脑模式,从而保证我们的集群是高可用的。

2、统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算的特别多。

ZooKeeper基本数据模型_第2张图片

3、发布与订阅,类似消息队列MQ(amq,rmq),dubbo发布者把数据存在znode上,订阅者会读取这个数据。

 

4、提供分布式锁,分布式环境中不同进程之间争夺资源,类似多线程中的锁。

ZooKeeper基本数据模型_第3张图片

5、集群管理,集群中保证数据的强一致性。

ZooKeeper基本数据模型_第4张图片

你可能感兴趣的:(分布式)