Java中的zookeeper常用命令详解

目录
  • 1.zkCli.sh客户端
  • 2.多节点类型创建
  • 3.查询节点
  • 4.set数据
  • 5.删除节点
  • 6.权限设置
  • 7.其他命令

注意我这里用的是官方最稳定的版本3.7.1,版本之间有个别命令是有差距的!

1.zkCli.sh客户端

zkCli.sh可以理解成客户端,也可以理解成命令行工具,把命令交给他,让他和zk的服务端打交道。
类似于mysql,我们安装完mysql想要执行命令,那么就必须要通过mysql -u账号 -p密码进入命令行工具里面,才能执行sql。

在zookeeper/bin 目录下:

执行./zkCli.sh就进入到了客户端

ls /:查询当前目录下的节点
create /test1:创建test1节点

客户端关闭:

输入quit 或者按 Ctrl + C

2.多节点类型创建

  • 创建持久节点:create /test2
  • 创建持久序号节点:create -s /test2
  • 创建临时节点:create -e /test2
  • 创建临时序号节点:create -e -s /test2
  • 创建容器节点:create -c /test2

创建test3临时节点,并向节点赋值数据1(其他节点创建的时候赋值同样如此,在后面跟上数据即可):create -e /test3 1

3.查询节点

  • 查询子节点:
  • 查询当前节点的子节点:ls /
  • 就是获取test2下的子节点:ls /test2
  • 普通节点下的数据:get /test2
  • 查询节点详细信息:get -s /test2 || start /test2 || ls -s /test2 (这三种都可以的)

4.set数据

set [-s] [-v version] path data
  • path:节点路径。
  • data:需要存储的数据。
  • [-v version]:可选项,版本号(可用作乐观锁)。
  • [-s]:set后返回详情,不添加-s就是返回的set的数据

版本不对就set不成功!

5.删除节点

  • 普通删除
  • 删除a下的b节点:delete /a/b
  • 删除a节点:delete /a
  • 不管有没有子节点都删除:deleteall /test1
  • 乐观锁删除(1就是get -s查询出来的dataVersion版本,版本不对删除就失败):delete -v 1 /test2

6.权限设置

acl:权限,定义了什么样的⽤户能够操作这个节点,且能够进⾏怎样的操作。

  • c: create 创建权限,允许在该节点下创建⼦节点
  • w:write 更新权限,允许更新该节点的数据
  • r:read 读取权限,允许读取该节点的内容以及⼦节点的列表信息
  • d:delete 删除权限,允许删除该节点的⼦节点
  • a:admin 管理者权限,允许对该节点进⾏acl权限设置

常用命令:

  • 获取某个节点的 acl 权限信息:getAcl /test2
  • 设置某个节点的 acl 权限信息:
  • 指定该节点只有c的权限:setAcl /test2 world:anyone:c
  • 指定某个ip具有什么权限:setAcl /runoob/ip ip:192.168.3.7:cdrwa

注册当前会话的账号和密码:

addauth digest xiaowang:123456

创建一个节点赋值abcd数据,然后必须使用xiaoming账号密码才能进行读写权限,这时候使用别的会话是访问不了这个节点的。

create /test-node abcd auth:xiaowang:123456:cdwra

在另⼀个会话中必须先使⽤账号密码,才能拥有操作该节点的权限

7.其他命令

当命令输入错误的时候会出现命令帮助文档的!
查看当前会话的历史命令:history

到此这篇关于Java中的zookeeper常用命令详解的文章就介绍到这了,更多相关zookeeper常用命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-06-22

java Zookeeper简述

目录 Zookeeper 角色 Leader Follower Observer Zookeeper 工作原理(原子广播) Znode 四种形式的目录节点 ZooKeeper 安装和使用 常用命令 总结 Zookeeper 是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等.Zookeeper 提供了一个类似于 Linux 文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控通知机制. Zo

centos7下搭建ZooKeeper3.4中间件常用命令小结

一.下载解压 1.Zookeeper简介 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化.通过监控这些数据状态的变化,从而可以达到基于数据的集群管理. 2.下载 环境版本 centos7 zookeeper 3.4.14 [root@localhost mysoft]$ cd /usr/local

zookeeper集群搭建超详细过程

目录 一.准备三台虚拟机,并列出对应的IP地址和主机名,如下图所示 二.环境准备(下面的步骤每一台虚拟机都需要做!!) 1.关闭防火墙 2. 配置操作系统 3. 设置本机IP地址与MAC地址 三.安装与配置zookeeper 四.zookeeper集群测试 一.准备三台虚拟机,并列出对应的IP地址和主机名,如下图所示 IP Hostname 192.168.154.133 zookeeper1 192.168.154.134 zookeeper2 192.168.154.135 zookeepe

Java之Zookeeper注册中心原理剖析

RPC框架中有3个重要的角色: 注册中心 :保存所有服务的名字,服务提供者的IP列表,服务消费者的IP列表 服务提供者: 提供跨进程服务 服务消费者: 寻找到指定命名的服务并消费. Zookeeper用作注册中心 简单来讲,zookeeper可以充当一个服务注册表(Service Registry),让多个服务提供者形成一个集群,让服务消费者通过服务注册表获取具体的服务访问地址(IP+端口)去访问具体的服务提供者.如下图所示: 具体来说,zookeeper就是个分布式文件系统,每当一个服务提供者

详解Zookeeper基础知识

目录 1. 简介 2. 数据模型 2.1 模型结构 2.2 模型的特点 2.3 节点分类 2.3.1 Persistent 2.3.2 Persistent Sequential 2.3.3 Ephemeral 2.3.4 Ephemeral Sequential 3. 安装 3.1 官方 3.2 docker 3.3 docker-compose 3.4 配置信息 4. 基础命令 4.1 创建会话 4.2 ls 4.3 create 4.4 get 4.5 stat 4.6 set 4.7 d

分析ZooKeeper分布式锁的实现

目录 一.分布式锁方案比较 二.ZooKeeper实现分布式锁 2.1.方案一 2.2.方案二 一.分布式锁方案比较 方案 实现思路 优点 缺点 利用 MySQL 的实现方案 利用数据库自身提供的锁机制实现,要求数据库支持行级锁 实现简单 性能差,无法适应高并发场景:容易出现死锁的情况:无法优雅的实现阻塞式锁 利用 Redis 的实现方案 使用 Setnx 和 lua 脚本机制实现,保证对缓存操作序列的原子性 性能好 实现相对复杂,有可能出现死锁:无法优雅的实现阻塞式锁 利用 ZooKeeper

zookeeper实现分布式锁

一.分布式锁介绍 分布式锁主要用于在分布式环境中保护跨进程.跨主机.跨网络的共享资源实现互斥访问,以达到保证数据的一致性. 二.架构介绍 在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图 解释: 左边的整个区域表示一个Zookeeper集群,locker是Zookeeper的一个持久节点,node_1.node_2.node_3是locker这个持久节点下面的临时顺序节点.client_1.client_2.client_n表示多个客户端,Service表示需要互斥访问的共享

ZooKeeper 实现分布式锁的方法示例

ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅.负载均衡.分布式协调/通知.集群管理.Master 选举.分布式锁等功能. 节点 在介绍 ZooKeeper 分布式锁前需要先了解一下 ZooKeeper 中节点(Znode),ZooKeeper 的数据存储数据模型是一棵树(Znode Tree),由斜杠(/)的进行分割的路径,就是一个 Znode(如 /locks/my_lock).每个 Znode 上都会保存自己的数

基于Redis实现分布式锁以及任务队列

一.前言 双十一刚过不久,大家都知道在天猫.京东.苏宁等等电商网站上有很多秒杀活动,例如在某一个时刻抢购一个原价1999现在秒杀价只要999的手机时,会迎来一个用户请求的高峰期,可能会有几十万几百万的并发量,来抢这个手机,在高并发的情形下会对数据库服务器或者是文件服务器应用服务器造成巨大的压力,严重时说不定就宕机了,另一个问题是,秒杀的东西都是有量的,例如一款手机只有10台的量秒杀,那么,在高并发的情况下,成千上万条数据更新数据库(例如10台的量被人抢一台就会在数据集某些记录下 减1),那次这个

浅谈分布式锁的几种使用方式(redis、zookeeper、数据库)

Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 synchronized lock dblock Q:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费 分布式锁 我们需要怎么样的分布式锁? 可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行. 这把锁要是一把可重入锁(避免死锁) 这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条) 这把锁最好是一把公平锁(根据业务需求考虑要不要这条) 有高可用

如何操作Redis和zookeeper实现分布式锁

如何操作Redis和zookeeper实现分布式锁 在分布式场景下,有很多种情况都需要实现最终一致性.在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务(两阶段提交,数据源可分开),也可以借助消息中间件(消费者处理需要能幂等).通过Observer模式来发布领域事件可以提供很好的高并发性能,并且事件存储也能追溯更小粒度的事件数据,使各个应用系统拥有更好的自治性. 1.分布式锁 分布式锁一般用在分布

java使用zookeeper实现的分布式锁示例

使用zookeeper实现的分布式锁 分布式锁,实现了Lock接口 复制代码 代码如下: package com.concurrent; import java.io.IOException;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeU

浅谈Java(SpringBoot)基于zookeeper的分布式锁实现

通过zookeeper实现分布式锁 1.创建zookeeper的client 首先通过CuratorFrameworkFactory创建一个连接zookeeper的连接CuratorFramework client public class CuratorFactoryBean implements FactoryBean<CuratorFramework>, InitializingBean, DisposableBean { private static final Logger LOGG

详细解读分布式锁原理及三种实现方式

目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们"任何一个分布式系统都无法同时满足一致性(Consistency).可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项."所以,很多系统在设计之初就要对这三者做出取舍.在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证"最终一致性",只要这个最终

Java分布式锁的概念与实现方式详解

什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁. 普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题. 如何控制呢?就是设置一个各个线程都能看的见的标志.然后,每个线程想访问临界区域时,都要先查看标志,如果标志没有被占用,则说明目前没有线程在访问临界区域.如果标志被占用了,则说明目前有线程正在访问临界区域,则当前线程需要等待. 这个标志,就是锁. 在单机多线程的java程

Redis实现分布式锁和等待序列的方法示例

在集群下,经常会因为同时处理发生资源争抢和并发问题,但是我们都知道同步锁 synchronized . cas . ReentrankLock 这些锁的作用范围都是 JVM ,说白了在集群下没啥用.这时我们就需要能在多台 JVM 之间决定执行顺序的锁了,现在分布式锁主要有 redis . Zookeeper 实现的,还有数据库的方式,不过性能太差,也就是需要一个第三方的监管. 背景 最近在做一个消费 Kafka 消息的时候发现,由于线上的消费者过多,经常会遇到,多个机器同时处理一个主键类型的数据