Zookeeper Java 客户端

1.Zookeeper Java 客户端

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.5.8</version>
</dependency>
@Slf4j
public class ZookeeperClientTest {
    private static final String ZK_ADDRESS = "192.168.148.129:2181";
    private static final int SESSION_TIMEOUT = 5000;
    private static ZooKeeper zooKeeper;
    private static final String ZK_NODE = "/hsm‐node";


    public void init() throws IOException, InterruptedException {
        final CountDownLatch countDownLatch = new CountDownLatch(1);

        zooKeeper = new ZooKeeper(ZK_ADDRESS, SESSION_TIMEOUT, event -> {
            if (event.getState() == Watcher.Event.KeeperState.SyncConnected && event.getType() == Watcher.Event.EventType.None) {
                countDownLatch.countDown();
                log.info("连接成功!");
            }
        });
        log.info("连接中....");
        countDownLatch.await();
    }

    public void createTest() throws KeeperException, InterruptedException {
        String path = zooKeeper.create(ZK_NODE, "data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        log.info("created path: {}",path);
    }

    public void createAsycTest() throws InterruptedException {
        zooKeeper.create(ZK_NODE, "data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,  CreateMode.PERSISTENT,
                (rc, path, ctx, name) -> {
            log.info("rc {},path {},ctx {},name {}",rc,path,ctx,name);
        },"context");
        TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
    }

    public void setTest() throws KeeperException, InterruptedException {
        Stat stat = new Stat();
        byte[] data = zooKeeper.getData(ZK_NODE, false, stat);
        log.info("修改前: {}",new String(data));
        zooKeeper.setData(ZK_NODE, "changed!".getBytes(), stat.getVersion());
        byte[] dataAfter = zooKeeper.getData(ZK_NODE, false, stat);
        log.info("修改后: {}",new String(dataAfter));
    }

    public static void main(String[] args) throws Exception {
        ZookeeperClientTest zookeeperClientTest = new ZookeeperClientTest();
        zookeeperClientTest.init();
        zookeeperClientTest.createTest();
    }
}

2.Curator

<dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>5.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
    </exclusions>
</dependency>
@Slf4j
public class CuratorClientTest {
    public static void main(String[] args) throws Exception{
        //new CuratorClientTest().testCreate();
        //new CuratorClientTest().testCreateWithParent();
        new CuratorClientTest().testGetData();
    }

    public CuratorFramework getcliet() {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
        CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.148.129:2181", retryPolicy);
        client.start();
        return client;
    }

    public CuratorFramework getcliet2() {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
        CuratorFramework client = CuratorFrameworkFactory.builder()
                .connectString("192.168.148.129:2181")
                .sessionTimeoutMs(5000) // 会话超时时间
                .connectionTimeoutMs(5000) // 连接超时时间
                .retryPolicy(retryPolicy)
                //.namespace("base") // 包含隔离名称
                .build();
        client.start();
        return client;
    }

    public void testCreate() throws Exception {
        String path = getcliet().create().forPath("/curator‐node");
        log.info("curator create node :{} successfully.", path);
    }

    public void testCreateWithParent() throws Exception {
        String pathWithParent="/node‐parent/sub‐node‐1";
        String path = getcliet().create().creatingParentsIfNeeded().forPath(pathWithParent);
        log.info("curator create node :{} successfully.",path);
    }
    public void testGetData() throws Exception {
        byte[] bytes = getcliet().getData().forPath("/curator‐node");
        log.info("get data from node :{} successfully.",new String(bytes));
    }

    public void testSetData() throws Exception {
        getcliet().setData().forPath("/curator‐node","changed!".getBytes());
        byte[] bytes = getcliet().getData().forPath("/curator‐node");
        log.info("get data from node /curator‐node :{} successfully.",new String(bytes));
    }

    public void testDelete() throws Exception {
        String pathWithParent="/node‐parent";
        getcliet().delete().guaranteed().deletingChildrenIfNeeded().forPath(pathWithParent);
    }
}
posted @ 2021-12-23 16:59  雾里看花的少年  阅读(71)  评论(0编辑  收藏  举报