您好,登錄后才能下訂單哦!
這篇文章給大家介紹java中zookeeper如何使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>
ZooKeeper zooKeeper = new ZooKeeper("127.0.0.1:2181", 4000, null);//連接zookeeper服務 zooKeeper.create("/test", "20190725", ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);//創建名稱是test的節點 zooKeeper.setData("/test", "20190726", -1);//更新節點的數據 zooKeeper.delete("/test", -1);//刪除節點Stat stat = zooKeeper.exists(path, false);//查看節點是否存在 zooKeeper.getData("/test", false, stat);//獲取節點數據
world:創建節點的默認權限,有唯一的id是anyone授權的時候的模式為 world:anyone:rwadc
表示所有人都對這個節點有rwadc的權限。這里用的是id
而不是expression
auth 不需要id。不過這里應該用expression
來表示。即(scheme:expression:perm)
digest 使用用戶名:密碼
編碼成md5的方式來作為訪問控制列表的id。但是這里id不作為授權語句的一部分,這里也是用expression
的方式。用戶名: 密碼先進行sha1編碼后再用base64編碼
host 使用用戶主機名作為訪問控制列表的id。但是這里需要注意的是表達式用的是主機名的后綴即可
ip 跟主機名類似,這里用客戶端的ip地址作為訪問控制列表的id。表達式可以用 addr/bits
這種方式來設置ip白名單。
Id id = new Id("digest", DigestAuthenticationProvider.generateDigest("zookeeper:123456")); ACL acl = new ACL(); acl.setPerms(Perms.ALL); acl.setId(id); zooKeeper.setACL("/test", Lists.newArrayList(acl), -1);
Id id = new Id("ip", "198.16.1.25");//支持ip段,如:198.16.1.25/16 ACL acl = new ACL(); acl.setPerms(Perms.ALL); acl.setId(id); zooKeeper.setACL(path, Lists.newArrayList(acl), -1);
Id id = new Id("host", "baidu.com"); ACL acl = new ACL(); acl.setPerms(Perms.ALL); acl.setId(id); zooKeeper.setACL(path, Lists.newArrayList(acl), -1);
當zookeeper節點發生變化時,執行監聽事件
public class ZkWatcher implements Watcher { private static Logger logger = LoggerFactory.getLogger(ZkWatcher.class); @Override public void process(WatchedEvent watchedEvent) { if (watchedEvent.getType() == EventType.NodeDeleted) { logger.info("刪除節點" + watchedEvent.getPath()); } if (watchedEvent.getType() == EventType.NodeCreated) { logger.info("創建節點" + watchedEvent.getPath()); } if (watchedEvent.getType() == EventType.NodeDataChanged) { logger.info("更新節點" + watchedEvent.getPath()); } if (watchedEvent.getType() == EventType.NodeChildrenChanged) { logger.info("子節點發生變化" + watchedEvent.getPath()); } } } 第一種方式:zookeeper.register(new ZkWatcher()); 第二種方式:ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 4000, new ZkWatcher());
關于java中zookeeper如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。