写点什么

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

作者:浅羽技术
  • 2023-04-13
    四川
  • 本文字数:787 字

    阅读完需:约 3 分钟

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,进而可以引发监听事件,释放该锁。


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

发布于: 刚刚阅读数: 4
用户头像

浅羽技术

关注

才疏学浅,习习而为,编程羽录,与你同行。 2019-02-26 加入

分享一些计算机信息知识、理论技术、工具资源、软件介绍、后端开发、面试、工作感想以及生活随想等一系列文章。

评论

发布
暂无评论
zookeeper的节点加密方式及分布式锁实现过程_三周年连更_浅羽技术_InfoQ写作社区