Zookeeper中节点类型、节点配额与权限控制

一、Zookeeper的节点
1、持久节点 PERSISTENT

节点创建后就会一直存在,不会因客户端会话失效就删除

2、持久序顺序节点 PERSISTENT_SEQUENTIAL

特性与持久节点一样,只不过创建的时候,zookeeper会自动增加一个递增的数字作为节点名

3、临时节点 EPHEMERAL

客户端会话失效或者链接断开后,节点自动删除,且不能有子节点

4、临时顺序节点 EPHEMERAL_SEQUENTIAL

特性与临时节点一样,创建的时候,zookeeper会自动增加一个递增的数字作为节点名,一般用于分布式锁和leader选举

二、通知机制(watch)

客户端监听它关心的节点,当节点发生数据改变、被删除、增删子节点时,zookeeper会通知客户端。可以使用zookeeper的watch机制实现一个简单的发布订阅功能

三、权限控制(acl)
1、access controller lists

acl由三部分组成schema🆔permissions,schema表示某种权限机制world、ip、auth、digest。id表示允许访问的用户,permissions是权限组合字符串,crwda,表示create、read、write、delete、admin

2、权限控制方案schema
  • world:world下只有一个id,就是anyone,表示所有用户
  • ip:IP控制策略,使用客户端的ip地址作为id,可以设置ip段,例如:192.168.100.1/100
  • auth:不需要任何id,只要是通过auth的用户都有权限
  • digest:用户和密码的方式认证,使用username:BASE64(SHA1(password))作为id
  • sasl:id为用户的uid,通过sasl Authentication用户的id,在zk3.4.4版本后sasl是通过Kerberos实现(即只有通过Kerberos认证的用户才可以访问权限的znode)
3、权限示例

A、ip地址认证模式
IP地址认证模式会验证客户端来源的IP,根据IP来源分别是否有权限,示例如下

zkCli.sh -server 127.0.0.1:2181
create /test test_data
setAcl /test ip:192.168.24.14:crwda

当 get /test 时,此时已经没有权限
[zk: 127.0.0.1:2181(CONNECTED) 8] get /test
org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /test

通过另一种方式进入即可
zkCli.sh -server 192.168.24.14:2181
get /test
[zk: 192.168.24.14:2181(CONNECTED) 0] get /test
test_data

B、auth认证模式
不需要指定id,为当前连接中所有认证过的用户(登陆)授权,因为指不指定id都是为当前登陆的用户

addauth digest user1:user1
addauth digest user2:user2
create /test data auth::cdrwa
getAcl /test

返回如下:
'digest,'user1:oMOD60B8cRkgiY51xfdG0FFW3FI=
: cdrwa
'digest,'user2:ExK4ZEpM5XR9l8dLA7B6b79kLIo=
: cdrwa

C、digest模式
需要指定用户名和密码,只授权给指定的登陆用户,并且密码需要使用BASE64(SHA1(password))加密

在shell环境下,可以使用如下方式得到密码
echo -n horace:horace | openssl dgst -binary -sha1 | openssl base64

addauth digest horace:horace
create /test1 data digest:horace:W37bqnoLIAdZoDhHQatGel1g8gU=:cdrwa
getAcl /test1
四、目录配额(quota)
1、子节点限制
创建节点
create /path

查看配额
listquota /path

设置子节点数量
setquota -n 2 /path

创建子节点
create /path/a
create /path/b
create /path/c

超出会打印警告日志
Quota exceeded: /quota count=3 limit=2

2、节点数据大小限制
创建节点
create /path

查看配额
listquota /path

设置子节点数量
setquota -b 2 /path

set /path Horace

超出会打印警告日志
Quota exceeded: /quota bytes=6 limit=2
3、总结

所有的配额限制不会产生实际的作用,超出了会在zookeeper中打印日志,数据会被实际保存下来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值