zoukankan      html  css  js  c++  java
  • Zookeeper Client基础操作和Java调用

    ## Zookeeper

    > Zookeeper目前用来做数据同步,再各个服务之前同步关键信息

    i.客户端操作

    1. 创建
    create [-s] [-e] path data acl
    -s 为顺序节点 -e 为临时节点(临时节点在会话消失后即消失)
    acl为权限控制,权限控制比较麻烦,而且只存在于此节点和此级,其子节点不受控制

    2. 读取
    ls :
    ls path
    列出此节点下的所有子节点
    get:
    get path
    获取此节点的内容和属性
    3. 更新
    set path data [version]
    version为可选,选择基于哪个版本更新
    4. 删除
    delete path [version]
    5. 权限
    在Zookeeper的那本书的第215页有详细介绍
    这里使用的是digest加密方式,使用Zookeeper提供的方法加密

    ii. Java客户端操作

    代码地址: ZKService.java

    1. 初始化客户端
    ```java
    private CuratorFramework client = CuratorFrameworkFactory.builder()
    .connectString(ZOOKEEPER的IP)
    .retryPolicy(new ExponentialBackoffRetry(1000, 6))
    .sessionTimeoutMs(5000)
    .namespace(以哪个地址为基准)
    .authorization(加密方式, 密码)
    .build();
    ```
    2. 注册监听
    ```java
    private void watch(String path) {
    ExecutorService tp = Executors.newFixedThreadPool(2);
    System.out.println(Thread.currentThread().getName());
    PathChildrenCache cache = new PathChildrenCache(这里把初始化的客户端传进来, 这里传入监听的地址, true, false, tp);
    try {
    cache.start(PathChildrenCache.StartMode.NORMAL);
    } catch (Exception e) {
    e.printStackTrace();
    }
    cache.getListenable().addListener(new PathChildrenCacheListener() {
    public void childEvent(CuratorFramework client,
    PathChildrenCacheEvent event) throws Exception {
    switch (event.getType()) {
    case CHILD_ADDED://这里三个switch分别对应三个操作,里面写实现的业务逻辑
    listenService.initUser(new String(event.getData()));event.getData()是获取数据
    break;
    case CHILD_UPDATED:
    break;
    case CHILD_REMOVED:
    break;
    default:
    break;
    }
    }
    });
    }
    ```

    3. 创建
    ```
    String path = "自定义";
    try {
    client.getClient().create()
    .withMode(CreateMode.PERSISTENT_SEQUENTIAL)//这个是顺序持久节点(自动按照顺序给节点前加数字),SEQUENTIAL是单纯的持久节点
    .forPath(这里传地址, "这里传数据");
    } catch (Exception e) {
    e.printStackTrace();
    }
    ```

  • 相关阅读:
    越来越火的5G公网专用,到底是啥意思?
    看懂IPv6+,这篇就够了
    今年诺贝尔奖得主居然把这事研究清楚了:学历和收入到底有多大关系?
    华为发布《智能世界2030》报告,多维探索未来十年趋势
    每天一个离职小技巧
    Deepsort + Yolo 实现行人检测和轨迹追踪
    “5G+AI”到底有啥用?这篇漫画告诉你答案…
    全国多地拉闸限电 背后到底怎么了?
    【Ajax请求 】- 1.1前端和后台数据交互的说明
    【Web API系列教程】3.3 — 实战:处理数据(建立数据库)
  • 原文地址:https://www.cnblogs.com/serena25/p/7755441.html
Copyright © 2011-2022 走看看