zookeeper初识

一、节点类型

persistent 持久节点

persistent_sequential 持久序号节点

ephemeral 临时节点

ephemeral_sequential 临时序号节点

 

1.persistent 持久节点

默认创建的节点

创建方式

 

create /newNode

 

2.persistent_sequential 持久序号节点

给创建的持久节点后面加上序号后缀。 非常适用于分布式锁、分布式选举等场景

创建的时候添加-s参数即可

 

create -s /test

#返回创建的实际路径

created /test0000000001

 

create -s /test

#返回创建的实际路径2

created /test0000000002

 

3.ephemeral 临时节点

临时节点会在客户端会话断开后自动删除。适用于心跳,服务发现等场景

创建的时候加上参数 -e 即可

 

create -e /temp

 

4.ephemeral_sequential 临时序号节点

与持久序号节点类似,不同之处是临时序号节点会在会话断开后删除。

创建的时候加上参数 -e -s 即可

 

create -e -s /tempNum

 

 

二、节点属性

 

节点属性的查看方式 stat /nodePath

 

节点属性说明

===============================================================

cZxid 创建节点的事务ID

ctime 创建时间

mZxid 修改节点的事务ID

mtime 最后修改时间

pZxid 子节点变更事务ID

cversion 对此znode的子节点进行的更改次数(不包括子节点)

dataVersion 数据版本,变更次数

aclVersion 权限版本,变更次数

ephemeralOwner 临时节点所属会话ID

dataLength 数据长度

numChildren 子节点数

===============================================================

 

 

三、节点的监听

客户添加 -w 参数可以实时监听节点和子节点的变化,并且实时收到通知。非常适用于保障分布式情况下的数据一致性。

===============================================================

ls -w path 监听子节点的变化(增、删)

===============================================================

get -w path 接听节点数据的变化

===============================================================

stat -w path 监听节点属性的变化

===============================================================

printwatches on|off 触发监听后,是否打印监听事件(默认on)

===============================================================

 

四、acl权限设置

ACL全称 access control list(访问控制列表) 用于控制资源的访问权限

zk使用ACL来控制对其znode的访问

基于scheme:id:permission的方式进行权限控制

scheme: 表示授权模式

id: 模式对应值

permission: 具体的正删改权限位

 

scheme

================================================================

world 开发模式,全世界都可以访问 默认的设置

ip ip 模式 限定某个IP才可以访问

auth 用户密码认证模式,只有在会话中添加了认证才可以访问

digest 与auth类似 区别是auth用明文密码 digest使用sha-1+base64加密后的密码 在实际使用中 digest更常见

================================================================

 

permission权限位

================================================================

c create 可以创建子节点

d delete 可以删除子节点(仅下一级节点)

r read 可以读取节点数据及显示子节点列表

w write 可以设置节点数据

a admin 可以设置节点访问控制列表权限

================================================================

 

acl相关命令

================================================================

getAcl getAcl path 获取ACL权限

setAcl setAcl path acl 设置ACL权限

addauth addauth scheme auth 添加认证用户

================================================================

 

world权限示例

setAcl path world:anyone:权限位

 

[zk: localhost:2181(CONNECTED) 17] create -e /testAcl

Created /testAcl

[zk: localhost:2181(CONNECTED) 18] getAcl /testAcl

'world,'anyone

: cdrwa

[zk: localhost:2181(CONNECTED) 19] setAcl /testAcl world:anyone:rw

[zk: localhost:2181(CONNECTED) 20]

[zk: localhost:2181(CONNECTED) 20] get /testAcl

null

[zk: localhost:2181(CONNECTED) 21] getAcl /testAcl

'world,'anyone

: rw

[zk: localhost:2181(CONNECTED) 22] create /testAcl/sa

Authentication is not valid : /testAcl/sa

[zk: localhost:2181(CONNECTED) 23]

[zk: localhost:2181(CONNECTED) 23]

 

IP权限示例

setAcl ip::<权限位>

 

auth模式示例:

语法:

1.setAcl path auth:用户名:密码:权限位

2.addauth digest 用户名:密码

 

digest权限示例:

语法:

1.setAcl path digest:用户名:密钥:权限位

2.addauth digest 用户名:密码

 

ACL特殊说明:

权限仅对当前节点有效,不会让子节点继承。如果限制了IP访问A节点,但是不妨碍该IP访问A节点的子节点/A/B

 

2020 6月  ——于南京

                                                                                                                                       ——天气很热, 继续努力

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(分布式)