Zookeeper客户端(二)—— 原生客户端

Zookeeper客户端(一)—— 原生客户端中我们主要介绍了使用Zookeeper客户端对节点的增删改查等操作,但是别忘了还有ACL权限控制,这里我们就再来看一看在Zookeeper客户端中,我们是如何使用ACL权限控制的。


首先我们需要先连接我们的服务端,这里和之前类似,有一点不同的是,这里我们没有直接在Zookeeper连接的时候使用匿名内部类,而是让测试类继承了Watch接口,如下:

public class ZookeeperAclTest implements Watcher{

    public static final String CONNECT_ADDR = "192.168.80.130:2181";
    public static CountDownLatch countDownLatch = new CountDownLatch(1);

    public static void main(String[] args) throws Exception {
        ZooKeeper zooKeeper = new ZooKeeper(CONNECT_ADDR, 5000, new ZookeeperAclTest());
        countDownLatch.await();
    }

    @Override
    public void process(WatchedEvent event) {
        if(event.getState() == Event.KeeperState.SyncConnected){
            countDownLatch.countDown();
        }
    }
}

连接完成后,我们就可以进行ACL权限控制,如下我们添加了两个权限,然后再创建节点的时候赋予了权限控制
在这里插入图片描述


另外对于已有的节点,我们也是可以添加相关权限的,这里我们给一个已经存在的 /node2 添加了权限,然后再去打印出其权限,如下:
在这里插入图片描述
在这里插入图片描述


我们进行访问时,发现提示我们没有权限,是的,我们给 /node2 节点添加了权限,我们在访问时就必须先给当前会话注册授权信息,然后再进行访问。

注意的是,这里我们可以把setAcl命令注释,因为我们刚刚已经给节点 /node2 赋予了权限,这里我们在进行赋予权限肯定是没有权限的;或者我们把添加会话授权的信息放在最上面也是可以的
在这里插入图片描述
在这里插入图片描述

发布了286 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/104890969
今日推荐