91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中zookeeper如何使用

發布時間:2021-06-22 14:15:18 來源:億速云 閱讀:167 作者:Leah 欄目:大數據

這篇文章給大家介紹java中zookeeper如何使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1.引入maven依賴

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.6</version>
</dependency>

2.ZooKeeper節點操作

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);//獲取節點數據

3.為ZooKeeper節點增加授權訪問

  1. world:創建節點的默認權限,有唯一的id是anyone授權的時候的模式為 world:anyone:rwadc 表示所有人都對這個節點有rwadc的權限。這里用的是id而不是expression

  2. auth 不需要id。不過這里應該用expression來表示。即(scheme:expression:perm)

  3. digest 使用用戶名:密碼編碼成md5的方式來作為訪問控制列表的id。但是這里id不作為授權語句的一部分,這里也是用expression的方式。用戶名: 密碼先進行sha1編碼后再用base64編碼

  4. host 使用用戶主機名作為訪問控制列表的id。但是這里需要注意的是表達式用的是主機名的后綴即可

  5. ip 跟主機名類似,這里用客戶端的ip地址作為訪問控制列表的id。表達式可以用 addr/bits這種方式來設置ip白名單。

3.1 digest模式

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);

3.2 ip模式

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);

3.3 host模式

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);

4.watcher

當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如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巍山| 墨竹工卡县| 城步| 龙泉市| 确山县| 彭泽县| 七台河市| 阿城市| 安徽省| 威信县| 昌邑市| 南雄市| 岚皋县| 将乐县| 定西市| 仪征市| 绥化市| 金寨县| 宁陵县| 田东县| 江川县| 中江县| 清镇市| 亚东县| 宣化县| 蒲城县| 蓝田县| 灌南县| 丹凤县| 紫金县| 南安市| 富宁县| 兴城市| 平昌县| 宁波市| 九龙县| 清苑县| 神农架林区| 黄骅市| 徐闻县| 达尔|