分布式调度Zookeeper常用Shell命令【云原生】

Zookeeper概述

1. zookeeper是什么?

  • Zookeeper是一个分布式协调服务,致力于为分布式应用提供一个高性能、高可用、且具有严格顺序访问控制能力的分布式协调存储服务。
  • 分布式应用程序可以基于Zookeeper做:数据发布与订阅(即:服务发现)、配置管理、分布式协调与通知、集群管理、Leader选举、分布式锁等。
  • Zookeeper提供了一个类似于Linux文件系统的树形结构,同时提供了对每个节点的监控与通知机制。
    • Zookeeper不适合存储大量文件或大文件;
    • 因为znode节点存储数据大小限制默认为1MB。
    • 官方说明ZK是用来存储KB级别的相关数据

如果zk客户端发送的znode数据大小超过1MB的设置会怎样?

  • 假如我们修改了ZK客户端的maxBuffer限制,使其可以发送超过1MB的数据,不过服务端的配置默认还是1MB

    -Djute.maxbuffer=10485760
    
    • 会导致主从同步过程中,所有的follower全部同步失败;
    • 从而造成状态不一致后的follower挂掉,最终leader认为follower都丢失之后,自己可能也不正常;
    • 于是,会重新进行选举,但只有自己又无法选举,进而ZK集群挂掉。

2. Zookeeper诞生的目的是什么?

  • 高性能

    • 将全量数据存储在内存中,并直接服务于客户端的所有非事务请求,尤其适用于以读为主的应用场景。
  • 高可用

    • 以集群的方式对外提供服务。
    • 若集群中一半的机器可以正常工作,则这个集群就能正常对外提供服务。
  • 严格顺序执行

    • 对于来自客户端的每个更新请求,Zookeeper都会分配一个全局唯一的递增编号。
    • 这个编号反映了所有事务操作的前后顺序。

常用命令

1. 新增节点

# -s 为有序节点, -e 临时节点
create [-s] [-e] path data

创建持久化节点并写入数据:

create /hadoop "123456"

创建持久化游戏节点,此时创建的节点名为指定节点名+ 自增序号

create -s /a "aaa"
create -s /b "bbb"

创建临时节点,临时节点会在会话过期后被删除

create -e /aa "aaaa"

创建临时有序节点,临时节点会在会话过期后被删除

create -s -e /aa "aaaa"

2. 更新节点

每次修改成功后,版本号会自动+1,初始为0

set /hadoop "hadoop"

也可以基于版本号进行更改,类似于乐观锁机制,当传入的数据版本号和当前节点的数据版本号不符合时,zookeepr会拒绝本次修改。

set /hadoop "123321" 1

3. 删除节点

# version 为版本号
delete path [version]

如果path有子节点,那么delete命令无法删除,需要使用rmr path进行递归删除

rmr /a

4. 查看节点

get path
cZxid = 0xe0 # 数据节点创建时的事务ID
ctime = Thu Aug 13 21:39:50 CST 2020 # 数据接地那创建时的时间
mZxid = 0xe0 # 数据节点最后一次更新时的事务ID
mtime = Thu Aug 13 21:39:50 CST 2020 # 数据节点最后一次更新时的时间
pZxid = 0xe1 # 数据节点的子节点最后一次被修改时的事务ID
cversion = 1 # 子节点的更改次数
dataVersion = 0 # 节点数据的更改次数
aclVersion = 0 # 节点的ACL的更改次数
ephemeralOwner = 0x0 # 如果节点是临时节点,则表示创建该节点的会话的SessionID,如果节点是持久节点,则该属性值为0.
dataLength = 3 # 数据内容的长度
numChildren = 1 # 数据节点当前的子节点个数

4. 2 查看节点状态

# 查看节点状态,不包含节点数据
stat path

4.3 查看节点列表

# 列出path的所有子节点
ls path
# 列出path的所有子节点和path的信息
ls2 path

5. 监听器

5.1 监听器get path [watch]

使用get path[warch] 注册的监听器能够在节点内容发生改变的时候,向客户端发出通知。注:Zookeeper的触发器是一次性的(One-time trigger),即触发一次就会立即失效。

# 在第一个窗口
get /hadoop watch

# 在另外一个窗口
set /hadoop 345

# 第一个窗口出现监视信息
WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop

5.2 监听器stat path [watch]

使用stat path [watch] 注册的监听器能够在节点状态发生改变的时候,向客户端发送通知。

# 在第一个窗口
stat /hadoop watch

# 在另外一个窗口
set /hadoop 12212

# 在第一个窗口出现监视信息
WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop

5.3 监听器ls/ls2 path [watch]

使用ls/ls2 path [watch] 注册的监听器能够监听该节点下的所有子节点的增加和删除操作。

# 在第一个窗口
ls /hadoop watch

# 在另外一个窗口
create /hadoop/saint "aaa"

# 在第一个窗口出现监视信息
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/hadoop
  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃秃爱健身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值