zookeeper的节点加密方式及分布式锁实现过程

举报
浅羽技术 发表于 2022/09/30 00:50:23 2022/09/30
【摘要】 zookeeper的节点加密用的方式 ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限 身份的认证有4种方式:world:默认方式,相当于全世界都能访问auth:代表已经认证通...

zookeeper的节点加密用的方式

ZK的节点有5种操作权限:

CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)

注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

身份的认证有4种方式:

world:默认方式,相当于全世界都能访问

auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)

digest:即用户名:密码这种方式认证,这也是业务系统中最常用的

ip:使用Ip地址认证

设置访问控制:

方式一:(推荐)

1)增加一个认证用户

addauth digest 用户名:密码明文

eg. addauth digest user1:password1

2)设置权限

setAcl /path auth:用户名:密码明文:权限

eg. setAcl /test auth:user1:password1:cdrwa

3)查看Acl设置

getAcl /path

方式二:

setAcl /path digest:用户名:密码密文:权限

注:这里的加密规则是SHA1加密,然后base64编码。

分布式锁的实现过程

当很多进程需要访问共享资源时,我们可以通过zk来实现分布式锁。主要步骤是:

1 .建立一个节点,假如名为:lock 。节点类型为持久节点(PERSISTENT)

2 .每当进程需要访问共享资源时,会调用分布式锁的lock()或tryLock()方法获得锁,这个时候会在第一步创建的lock节点下建立相应的顺序子节点,节点类型为临时顺序节点(EPHEMERAL_SEQUENTIAL),通过组成特定的名字name+lock+顺序号。

3 .在建立子节点后,对lock下面的所有以name开头的子节点进行排序,判断刚刚建立的子节点顺序号是否是最小的节点,假如是最小节点,则获得该锁对资源进行访问。

4 .假如不是该节点,就获得该节点的上一顺序节点,并给该节点是否存在注册监听事件。同时在这里阻塞。等待监听事件的发生,获得锁控制权。

5 .当调用完共享资源后,调用unlock()方法,关闭zk,进而可以引发监听事件,释放该锁。

实现的分布式锁是严格的按照顺序访问的并发锁

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。