zookeeper 学习

zk 可视化客户端

zk 可视化工具: ZooInspector

参考: https://www.jianshu.com/p/f45af8027d7f

 

 

简介

 

 

特性

 

目录

还有 recipes  目录下面就是 demo ,,     src  目录就是 zookeeper 的源码

 

配置

# The number of milliseconds of each tick  用于计算的时间单元 毫秒 : 比如 session 超时 : N* tickTime 。 所有的时间都是 以这个为单位
tickTime=5000
# The number of ticks that the initial 
# synchronization phase can take 用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数表示
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement 用于集群,master 主节点与从节点之间发生消息,请求和应答时间长度(心跳机制)
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#dataDir=/tmp/zookeeper  必须配置,数据 目录
# dataDir=D:\machine\zookeeper-3.4.6\datadir
dataDir=D:\buildsoft\javazookeeper\zookeeper-3.4.6\datadir
# 日志目录,如果不配置会和 dataDir公用
dataLogDir=D:\buildsoft\java\zookeeper\log
# the port at which the clients will connect
# 连接服务器的端口 
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

 

zk 数据模型介绍

 

数据模型基本操作

./zkCli.sh   即可以 启动 zk 客户端了

zk 的作用体现

 

常用命令

 

get 获取 目录数据 

stat 获取 目录抓态  与 ls2 一样的

cZxid 即 zk  为该 目录节点创建的id 

ctime 节点创建时间

mZxid 修改后分配的id 

mtime 修改时间

pZxid  子节点id

cversion  子节点版本号,  dataversion 当前节点的数据的版本号,  aclVersion 权限版本号

numChildren 子节点数量

 

ephemeralOwner = 0x0  代表是 永久节点,如果不是 oxo 就算 临时节点
 

 

session 基本原理与create 命令

即再 session 过程中,创建的临时节点都会被删除

 

比如  create /file  filedata 那么就会创建一个 永久节点 , 并且节点数据是 filedata  . 节点配置都是取默认值

create -e /file/tmp tmpdata  就算创建 临时节点, 要带上 -e  

create -s    就是  创建 永久的  顺序节点  ,就算 -s   . 累加又小到大递增

 

set 命令 : 可以 设置节点的数据,如果带上版本号,具有乐观锁的作用

delete 命令: 删除 节点  ,同时可以加上版本号做乐观锁

 

zk 特性: watcher 特性 类似 触发器

watcher 命令行

 

watcher 事件类型

即当创建一个 节点的时候 

 

删除和修改时候,增加watch 都是使用: get /path  wath名称 

子节点watchcer事件

 

修改 子节点的数据 的话,是不会触发事件的 。 除非明确给该 子节点创建watch 

watcher 常用场景

ACL 权限控制

ACL命令

ACL 构成

world 后面 只能是 anyone 

 

permissions

admin 代表权限比较高

默认权限

默认是谁都有所有权限

 

auth 讲解

比如: addauth digest im im    即创建 一个用户是  im   , 密码是 im   的用户。 这语句也是登录的意思

比如 : setAcl /names/im auth:im:im:cdrwa    即 为 路径 /names/im 赋予权限 用户是 im 密码是im ,权限是 增删读写设置的 权限

IP讲解

设置IP的权限 

 

super 超级管理员

 

以上就算 再 nohup 加多一行 配置超级管理员的用户密码和密码 

参考 https://blog.csdn.net/u010900754/article/details/78498291

acl 常用使用场景

 

zk 四字命令

 

比如   echo cons | nc 192.168.0.102 2181     就可以参考 zk 的环境配置了

命令 wchc 与 wchp 需要在 zk 配置文件后面加上 配置 才可以的

4lw.commands.whitelist=*

zk 集群

 

配置集群例子

第一个端口比如 2888 是用来进行集群的数据同步的,第二个端口比如 3888 是用来进行 选举 master 节点用的

在 zookeeper /bin 下面  执行 zkServer.sh status   可以 查看机器是 主还是从 

 

常用的zk Java 客户端

curator 比较常用

apache curator

 

zk 分布式锁

 

释放锁,也就是删除 之前创建的zk节点 。 节点类型不能是 永久性的节点,必须是 临时节点