IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Zookeeper的一些javaAPI操作 -> 正文阅读

[大数据]Zookeeper的一些javaAPI操作

public class ZookeeperAPITest {

    /**
     * 测试 zookeeper,创建永久节点
     * @throws Exception
     */
    @Test
    public void createZnode() throws Exception {
        /**
         * 定制一个重试策略
         * param1:重试的时间间隔
         * param2:重试的最大次数
         */
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1);

        /**
         * 获取一个客户端对象
         * param1:要连接的Zookeeper服务器列表
         * param2:会话的超时时间
         * param3:链接超时时间
         * param4:重试策略
         */
        String connectionStr = "192.168.139.201:2181,192.168.139.202:2181,192.168.139.203:2181";
        CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr, 8000, 8000, retryPolicy);

        /**
         * 开启客户端
         */
        client.start();

        /**
         * 创建永久节点
         */
        client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello2","world".getBytes());

        /**
         * 关闭客户端
         */
        client.close();
    }

    /**
     * 创建临时节点
     * @throws Exception
     */
    @Test
    public void createTmpZnode() throws Exception {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1);
        String connectionStr = "192.168.139.201:2181,192.168.139.202:2181,192.168.139.203:2181";
        CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr, 8000, 8000, retryPolicy);

        client.start();
        client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello5","world".getBytes());

        Thread.sleep(5000);
        client.close();
    }

    /**
     * 修改节点数据
     * @throws Exception
     */
    @Test
    public void setZnodeData() throws Exception {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);
        String connectionStr = "192.168.139.201:2181,192.168.139.202:2181,192.168.139.203:2181";
        CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr, 8000, 8000, retryPolicy);
        client.start();
        client.setData().forPath("/hello","haha".getBytes());
        client.close();
    }

    /**
     * 查询节点数据
     * @throws Exception
     */
    @Test
    public void getZnodeData() throws Exception {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);
        String connectionStr = "192.168.139.201:2181,192.168.139.202:2181,192.168.139.203:2181";
        CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr, 8000, 8000, retryPolicy);
        client.start();
        byte[] bytes = client.getData().forPath("/hello");
        System.out.println(new String(bytes));
        client.close();
    }

    /**
     * zookeeper 的 watch 机制
     * @throws Exception
     */
    @Test
    public void watchZnode() throws Exception {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 1);
        String connectionStr = "192.168.139.201:2181,192.168.139.202:2181,192.168.139.203:2181";
        CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr, 8000, 8000, retryPolicy);
        client.start();

        /**
         * 创建一个TreeCache对象,指定要监控的节点路径
         */
        TreeCache treeCache = new TreeCache(client, "/hello");

        /**
         * 自定义一个监听器
         */
        treeCache.getListenable().addListener(new TreeCacheListener() {
            @Override
            public void childEvent(CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throws Exception {
                ChildData data = treeCacheEvent.getData();
                if (data != null) {
                    switch (treeCacheEvent.getType()) {
                        case NODE_ADDED:
                            System.out.println("监测到有新增节点");
                            break;
                        case NODE_REMOVED:
                            System.out.println("监测到有节点被移除");
                            break;
                        case NODE_UPDATED:
                            System.out.println("监测到节点被更新");
                            break;
                        default:
                            break;
                    }
                }
            }
        });

        /**
         * 开始监听
         */
        treeCache.start();
        Thread.sleep(100000);

        client.close();
    }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:27:43  更:2021-08-17 15:29:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:21:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码