Zookeeper实例原生API--删除节点接口权限

来源:互联网 发布:武汉汉阳美工 编辑:程序博客网 时间:2024/05/21 05:37


import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;/** * * @ClassName: AuthSample_Delete * @Description: TODO(删除节点的权限控制) * @author RongShu* @date 2017年6月11日 下午8:41:23 * */public class AuthSample_Delete {    final static String PATH  = "/zk-book-auth_test";    final static String PATH2 = "/zk-book-auth_test/child";    public static void main(String[] args) throws Exception {        ZooKeeper zookeeper1 = new ZooKeeper("localhost:2181",5000,null);        zookeeper1.addAuthInfo("digest", "foo:true".getBytes());        zookeeper1.create( PATH, "init".getBytes(), Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT );        zookeeper1.create( PATH2, "init".getBytes(), Ids.CREATOR_ALL_ACL, CreateMode.EPHEMERAL );        try {ZooKeeper zookeeper2 = new ZooKeeper("localhost:2181",50000,null);zookeeper2.delete( PATH2, -1 );} catch ( Exception e ) {System.out.println( "删除节点失败: " + e.getMessage() );}        ZooKeeper zookeeper3 = new ZooKeeper("localhost:2181",50000,null);        zookeeper3.addAuthInfo("digest", "foo:true".getBytes());zookeeper3.delete( PATH2, -1 );        System.out.println( "成功删除节点:" + PATH2 );        ZooKeeper zookeeper4 = new ZooKeeper("localhost:2181",50000,null);zookeeper4.delete( PATH, -1 );        System.out.println( "成功删除节点:" + PATH );    }}输出删除节点失败: KeeperErrorCode = NoAuth for /zk-book-auth_test/child成功删除节点:/zk-book-auth_test/child成功删除节点:/zk-book-auth_test


注意:

当客户端对一个数据节点添加了权限信息后,对于删除操作而言,其作用范围是其子节点,也就是说,当我们对一个数据节点添加权限信息之后,依然可以自由的删除这个节点,但是对于这个节点的子节点,就必须使用相应的权限信息才能够删掉它。


参考

1.《从Paxos到Zookeeper:分布式一致性原理与实践》

2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html


阅读全文
0 0
原创粉丝点击