【zookeeper 第三篇章】客户端 API

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 本文介绍了Apache ZooKeeper客户端的一些常用命令及其用法。首先,`create`命令用于创建不同类型的节点并为其赋值,如持久化节点、有序节点及临时节点等。通过示例展示了如何创建这些节点,并演示了创建过程中的输出结果。其次,`ls`命令用于列出指定路径下的所有子节点。接着,`set`命令用于更新节点中的数据,可以指定版本号实现乐观锁机制。

一、新增 create 命令

格式:create [-s] [-e] path data
说明:用于创建节点并赋值。

  • [-s] [-e]:-s 和 -e 都是可选的,-s 代表顺序节点, -e 代表临时节点,注意其中 -s 和 -e 可以同时使用的,并且临时节点不能再创建子节点。
  • path: 指定要创建节点的路径,比如 /test。
  • data: 要在此节点存储的数据。

1、创建持久化节点并写入数据,当前会话结束之后,数据依然保存下来

  [zk: localhost:2181(CONNECTED) 9] create /tsing "890"
  Created /tsing

  ## 查看节点
  [zk: localhost:2181(CONNECTED) 10] ls /
  [tsing, zookeeper]

  ## 获取数据
  [zk: localhost:2181(CONNECTED) 11] get /tsing
  890

2、创建持久化有序节点,此时创建的节点名为指定节点名 + 自增序列号

  [zk: localhost:2181(CONNECTED) 13] create -s /a "aaaa"
  Created /a0000000022
  [zk: localhost:2181(CONNECTED) 14] create -s /a "aaaa"
  Created /a0000000023

  ## 查看节点
  [zk: localhost:2181(CONNECTED) 15] ls /
  [a0000000022, a0000000023, zookeeper]

  ## 查看节点数据
  [zk: localhost:2181(CONNECTED) 16] get /a0000000022
  aaaa

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

  [zk: localhost:2181(CONNECTED) 17] create -e /tmp "tmp"
  Created /tmp
  [zk: localhost:2181(CONNECTED) 18] ls /
  [tmp, zookeeper]
  [zk: localhost:2181(CONNECTED) 19] get /tmp
  tmp

4、创建临时有序节点,临时有序节点会在会话过期后被删除【分布式锁】:

  [zk: localhost:2181(CONNECTED) 20] create -s -e /aa 'aaaa'
  Created /aa0000000025
  [zk: localhost:2181(CONNECTED) 21] create -s -e /bb 'bbbb'
  Created /bb0000000026

  ## 查看节点
  [zk: localhost:2181(CONNECTED) 22] ls /
  [aa0000000025, bb0000000026, zookeeper]

二、查看 ls 命令

格式:ls path
说明:用于查看某个路径下的目录列表。

  • path: 代表目录。
  ## 查看根路径下的目录列表
  [zk: localhost:2181(CONNECTED) 23] ls /  
  [test0000000000, test0000000001, test0000000002, zookeeper]

  ## 查看test0000000000路径下的目录列表
  [zk: localhost:2181(CONNECTED) 26] ls /test0000000000
  []

  ## 查看当前目录下以及子节点
  [zk: localhost:2181(CONNECTED) 54] ls -s -w -R /
  /
  /tsing
  /zookeeper
  /zookeeper/config
  /zookeeper/quota

三、修改 set 命令

格式:
set path data [version]
说明:用于查看某个路径下的目录列表。

  • path: 代表节点路径。
  • data: 需要存储的数据。
  • [version]:可选项,版本号(可用做乐观锁)

1、普通修改数据

  ## 查看节点
  [zk: localhost:2181(CONNECTED) 2] ls /
  [tsing, zookeeper]

  ## 查看节点下的数据
  [zk: localhost:2181(CONNECTED) 3] get /tsing
  890

  ## 修改/tsing下的数据
  [zk: localhost:2181(CONNECTED) 4] set /tsing "11111"

  ## 查看修改后的数据
  [zk: localhost:2181(CONNECTED) 5] get /tsing
  11111

四、删除 delete 命令

格式:delete path [version]
说明:删除节点。

  • path: 节点路径。
  • [version]: 和set用法一样。

1、普通删除数据:

    ## 查看节点
    [zk: localhost:2181(CONNECTED) 17] ls /
    [a0000000022, a0000000023, tsing, woniu0000000018, woniu0000000019, zookeeper]

    ## 删除节点
    [zk: localhost:2181(CONNECTED) 18] delete /woniu0000000019

    ## 查看删除后剩余的数据
    [zk: localhost:2181(CONNECTED) 19] ls /
    [a0000000022, a0000000023, tsing, woniu0000000018, zookeeper]

2、如果有子节点,直接使用 delete 删除会失败:

    deleteall path [-b batch size]

五、查看节点数据 get 命令

格式:get [-s] [-w] path
说明: 获取节点数据。

  • path: 代表路径。

    ## 查看节点列表
    [zk: localhost:2181(CONNECTED) 50] ls /
    [tsing, zookeeper]
    
    ## 查看节点数据
    [zk: localhost:2181(CONNECTED) 51] get /tsing
    12345
    

六、查看节点状态 stat 命令

格式:stat path [watch]
说明: 获取节点数据。

  • path: 代表路径。
  • [watch]: 对节点进行事件监听。
  [zk: localhost:2181(CONNECTED) 56] stat /tsing
  cZxid = 0x36
  ctime = Tue Feb 02 15:06:37 GMT+08:00 2021
  mZxid = 0x36
  mtime = Tue Feb 02 15:06:37 GMT+08:00 2021
  pZxid = 0x36
  cversion = 0
  dataVersion = 0
  aclVersion = 0
  ephemeralOwner = 0x0
  dataLength = 5
  numChildren = 0
  • 说明:
节点名称 描述
cZxid 创建znode更改的事务ID
mZxid 最后修改znode更改的事务ID
pZxid 用于添加或删除子节点的znode更改的事务ID
ctime 表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode创建时间
mtime 表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode最近修改时间
dataVersion 表示对该znode的数据所做的更改次数
cversion 表示对此znode的子节点进行的更改次数
aclVersion 对此znode的ACL进行更改的次数
ephemeralOwner 如果znode是ephemeral类型节点,则这是znode所有者的 session ID。 如果znode不是ephemeral节点,则该字段设置为零
dataLength 这是znode数据字段的长度
numChildren 子节点的数量
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
2天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
18天前
|
安全 API 网络安全
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
|
30天前
|
API
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态。
|
27天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
11天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
41 0
|
1月前
|
测试技术 编译器 Go
依赖注入与控制反转:优化Go语言REST API客户端
依赖注入与控制反转:优化Go语言REST API客户端
|
18天前
|
API
【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
|
18天前
|
存储 安全 API
【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."
【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."
|
2月前
|
API
zookeeper 使用api 进行节点增删改查及实现简易的配置中心
zookeeper 使用api 进行节点增删改查及实现简易的配置中心
33 2
|
28天前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。