zookeeper节点类型、命令详解、配置文件说明
绝对重要!
zkServer.sh stat
zkServer.sh status
zkCli.sh -server ip:port
create path data
rmr path
ls
get
数据结构
节点类型
n 持久非顺序节点
create /node/subnode data
n 持久顺序节点
create -s /node/sencodnode data
自动生成主键使用
n 临时顺序节点
create -e -s /tempnode2 data
n 临时非顺序节点
create -e /tempnode data
临时节点:创建节点的连接关闭后,节点自动被删除 就是临时节点。
持久 / 临时
顺序 / 非顺序
顺序节点:节点序号自增,可以创建子节点
临时节点:随着创建节点的事务关闭而自动删除。 不能创建子节点。
节点信息
C:ceate
查看一个文件的状态信息
[zk: localhost:2181(CONNECTED) 1] stat /a
cZxid = 0x200000009
ctime = Thu Mar 22 13:07:19 CST 2018
mZxid = 0x200000009
mtime = Thu Mar 22 13:07:19 CST 2018
pZxid = 0x200000009
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 1
numChildren = 0
信息说明
状态属性 |
说明 |
cZxid |
数据节点创建时的事务ID |
ctime |
数据节点创建时的时间 |
mZxid |
数据节点最后一次更新时的事务ID |
mtime |
数据节点最后一次更新时的时间 |
pZxid |
数据节点的子节点列表最后一次被修改 (是子节点列表变更,而不是子节点内容变更)时的事务ID |
cversion |
子节点的版本号,当添加/删除子节点的时候发生改变 |
dataVersion |
数据节点的版本号 仅仅当data属性发生改变的时候而改变 |
aclVersion |
数据节点的ACL版本号 |
ephemeralOwner |
如果节点是临时节点,则表示创建该节点的会话的 SessionID; 如果节点是持久节点,则该属性值为0 |
dataLength |
数据内容的长度 |
numChildren |
数据节点当前的子节点个数 |
重要命令详解
管理命令
n zkServer.cmd
n zkServer.sh
n 参数
n start
n start-foreground
n stop
n restart
n status
n upgrade
n print-cmd
n zkCli.sh
n zkCli.cmd
客户端命令
- help
- 节点管理
- rmr path
- get path [watch]
监视某一个节点,通常情况 监视被删除或者修改。
- stat path [watch]
stat 和 get 区别 前者不显示数据 后者显示数据
- create [-s] [-e] path data acl
- set path data [version]
修改某个path 下的对应的版本号的数据。Path+版本号做唯一约束进行修改
- delete path [version]
常常用于处理分布式乐观锁
- ls path [watch]
- ls2 path [watch]
这个命令 等于 ls + stat
- 配额管理
- setquota -n|-b val path
- delquota [-n|-b] path
- listquota path
超出配额的时候仅仅给出警告,但是并不抛出异常或者是导致操作失败.
- 命令管理
- history
列出历史执行命令
- redo cmdno
重复执行历史命令
redo 10
- printwatches on|off
- sync path
以下几个是权限管理
- setAcl path acl
- addauth scheme auth
- getAcl path
获取权限.
- 连接管理
- quit
如果有连接 则关闭连接;退出终端。
- close
关闭当前连接 但是不退出客户端
- connect host:port
连接某一个zk 的服务器
配置文件说明
1、tickTime=2000
以毫秒为单位的心跳。是zk维持分布式服务的一个基本的时间单位。
# The number of milliseconds of each tick
2、initLimit=10
时间表示的是 tickTime*10 ,得到时间是20秒。
新加进来的服务初始化的时候能够容忍的时间。
3、syncLimit=5
同步的时候 经过5个时间单位 同步认为失败。
4、clientPort 表示对外服务提供的端口。 默认数值2181.
当前的zkServer 绑定哪个端口.
5、dataDir 存储的数据 节点的数据、日志
节点数据存放的位置.进程id 当前的服务节点编号.
6、
只有配置集群的时候这个才有意义.
server.X=A:B:C
只有在集群的情况下才使用。
X 表示的服务的编号
A 表示某个服务器的地址
B 服务之间需要交互数据,在数据进行交互的时候所使用的端口
默认数值:2888
C: 选举leader 使用的端口 默认使用3888
Leader 产生:才有投票的算法,帕克西算法.
通常情况下,zk的集群个数是奇数个. 集群新增节点的时候,不影响leader角色.
如果leader退出集群,则集群会自动选举新的leader
应用场景
分布式框架结构下使用.
应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
统一命名服务
比如项目中经常用到域名,但是ip地址可能会发生改变.使用这个方式避免了因为IP地址发生改变而去重新修改项目的问题.
统一配置管理
统一集群管理
服务器动态上下线
负载均衡
Zookeeper 当中的节点充当每个服务器访问次数的计数器,当有新的请求发送过来的时候,将新的请求派发给服务次数最少的那个上边.