zookeeper常用命令

使用客户端进行连接

ZooKeeper集群中有类似于linux文件系统的一个简版的文件系统;目录结构也是树状结构


zookeeper常用命令_第1张图片


重要技巧:不会就喊help

zookeeper常用命令_第2张图片

首先进到bin目录中,使用zkCli.sh -server node01:2181,node02:2181,node03:2181 进行与服务器交互

客户端随机的连接三个服务器中的一个

1.常用命令

查看ZooKeeper根目录/下的文件列表:ls /

创建节点,并写入数据:create /test test 

获得某节点的数据: get  /test

修改节点数据:set /test test2

.删除节点: delete /test

分布式通信方式:1直接通过网络连接方式进行通信2、通过共享存储方式,来进行通信或数据的传输

zookeeper使用共享存储方式,提供分布式协调服务

zookeeper数据结构:

ZooKeeper=①简版文件系统(Znode)+②原语+③通知机制(Watcher)。

ZK文件系统:基于类似于文件系统的目录节点树方式的数据存储

原语:可简单理解成ZooKeeper的基本的命令

Watcher(监听器)


zookeeper常用命令_第3张图片
zookeeper常用命令_第4张图片

数据节点:ZNode

ZNode 分为四类:持久节点(create)临时节点(create -e)有序节点(create -s) 有序临时节点(create -s -e)


临时节点:

设计临时节点原因:防止多个不同的客户端在同一目录下,创建同名ZNode,由于重名,导致创建失败

临时节点的生命周期跟客户端会话session绑定,一旦会话失效,临时节点被删除。

 client1上创建临时节点

create -e /tmp tmpdata

client2上查看client1创建的临时节点

ls /

 client1断开连接

close

 client2上观察现象,发现临时节点被自动删除

ls /

有序节点:

命令行使用-s选项:create -s /test test-data

一旦节点被标记上这个属性,那么在这个节点被创建时,ZooKeeper 就会自动在其节点后面追加上一个整型数字

这个整数是一个由父节点维护的自增数字。

提供了创建唯一名字的ZNode的方式

会话(Session)

 什么是会话

客户端要对ZooKeeper集群进行读写操作,得先与某一ZooKeeper服务器建立TCP长连接;此TCP长连接称为建立一个会话Session。

每个会话有超时时间:SessionTimeout

当客户端与集群建立会话后,如果超过SessionTimeout时间,两者间没有通信,会话超时

 会话的特点

客户端打开一个Session中的请求以FIFO(先进先出)的顺序执行;

如客户端client01与集群建立会话后,先发出一个create请求,再发出一个get请求;

那么在执行时,会先执行create,再执行get

若打开两个Session,无法保证Session间,请求FIFO执行;只能保证一个session中请求的FIFO


会话的生命周期

zookeeper常用命令_第5张图片



会话的生命周期:未建立连接------->正在连接-------->已连接----------->关闭连接

请求

通过客户端向ZooKeeper集群中写数据

通过客户端从ZooKeeper集群中读数据


zookeeper常用命令_第6张图片


事务zxid

客户端的写请求,会对ZooKeeper中的数据做出更改;如增删改的操作

每次写请求,会生成一次事务

每个事务有一个全局唯一的事务ID,用 ZXID 表示;全局自增

事务特点

ACID:

原子性atomicity | 一致性consistency | 隔离性isolation | 持久性durability

ZXID结构:

通常是一个64位的数字。由epoch+counter组成

epoch、counter各32位

zookeeper常用命令_第7张图片



 Watcher监视与通知

 为什么要有Watcher

问:客户端如何获取ZooKeeper服务器上的最新数据?

方式一轮询:ZooKeeper以远程服务的方式,被客户端访问;客户端以轮询的方式获得znode数据,效率会比较低(代价比较大)


zookeeper常用命令_第8张图片


方式二基于通知的机制:

客户端在znode上注册一个Watcher监视器

当znode上数据出现变化,watcher监测到此变化,通知客户端


zookeeper常用命令_第9张图片


 什么是Watcher?

客户端在服务器端,注册的事件监听器;watcher用于监听znode上的某些事件比如znode数据修改、节点增删等;当监听到事件后,watcher会触发通知客户端

可以设置watcher的命令如下:


zookeeper常用命令_第10张图片

示例3:节点上下线监控

原理:

节点1(client1)创建临时节点

节点2(client2)在临时节点,注册监听器watcher

当client1与zk集群断开连接,临时节点会被删除

watcher发送消息,通知client2,临时节点被删除的事件

用到的zk特性:

Watcher+临时节点

好处:

通过这种方式,检测和被检测系统不需要直接关联(如client1与client2),而是通过ZK上的某个节点进行关联,大大减少了系统耦合


ZooKeeper工作原理

ZooKeeper使用原子广播协议叫做Zab(ZooKeeper Automic Broadcast)协议

Zab协议有两种模式

恢复模式(选主):因为ZooKeeper也是主从架构;当ZooKeeper集群没有主的角色leader时,从众多服务器中选举leader时,处于此模式

广播模式(同步):当集群有了leader后,客户端向ZooKeeper集群读写数据时,集群处于此模式

为了保证事务的顺序一致性,ZooKeeper采用了递增的事务id号(zxid)来标识事务,所有提议(proposal)都有zxid

你可能感兴趣的:(zookeeper常用命令)