当前位置: 首页 > 知识库问答 >
问题:

如何使用zookeeper和策展人进行配置管理?

吉和同
2023-03-14

我一直在读关于使用zookeeper进行配置管理的文章。

我知道有一位阿帕奇策展人可以方便地与zookeeper互动。

我有一些客户连接到一组资源。他们必须以同样的方式使用这些资源。比如资源之间的分片和主选举。

我想使用zookeeper,这样,如果一个客户端在给定时间内注意到其中一个资源已关闭,它可以更改配置,其他客户端可以立即开始使用新配置。

因此,一个客户端在znodezooManager中的路径中写入配置,而其他客户端正在监视该路径。

如何在策展人中设置数据:

zk.setData().forPath(pathName, "data".getBytes());

如何在策展人中观看路径:

zk.getData().usingWatcher(watcher).forPath(pathName);

现在,当路径的值改变,手表被触发时,我必须得到路径的新值。我该怎么做?

这总是返回null内的过程()

zk.getData().watched().inBackground().forPath(pathName)

其他问题:正如文档中所说,在我获得新值后,我需要再次设置观察者吗?

观察者的来源:

CuratorWatcher watcher = new CuratorWatcher(){

                public void process(WatchedEvent event) {
                    System.out.println("event wt");
                    System.out.println(ToStringBuilder.reflectionToString(event));
                    try {
                        System.out.println(zk.getData().watched().inBackground().forPath(pathName));
                    } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    };
                    System.out.println("event wt");

                    try {
                        zk.getData().usingWatcher(this).forPath(pathName);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }};

共有1个答案

郝玄天
2023-03-14

在馆长有适配器:

 * Get children and set the given watcher on the node.
         */
 return client.getChildren().usingWatcher(watcher).forPath(path);

或者你可以使用CuratorListener

/**
         * Get children and set a watcher on the node. The watcher notification will come through the
         * CuratorListener (see setDataAsync() above).
         */
        return client.getChildren().watched().forPath(path);
 类似资料:
  • 一般Gradle守护进程默认不启用.然而,一旦它被启用,有事希望对某些项目或某些构建禁用守护进程. --no-daemon命令行选项可用于强制守护进程不能用于该构建.这很少使用,但是在调试具有一定的构建或Gradle插件问题时,有时会很有用.在构建环境中,此命令行选项具有最高优先级.

  • 守护进程会在闲置3小时后自动终止.如果想在这之前停止守护进程,也可以通过操作系统运行gradle --stop命令终止后台进程.--stop选项会要求所有运行相同版本的守护进程终止.

  • 需要环境 JDK 安装 下载安装 官网:https://zookeeper.apache.org/ 此时(201702)最新稳定版本:Release 3.4.9 官网下载:http://www.apache.org/dyn/closer.cgi/zookeeper/ 我这里以:zookeeper-3.4.8.tar.gz 为例 安装过程: mkdir -p /usr/program/zookeep

  • 我刚刚在独立模式下使用Apache Curator和ZooKeeper实现了一个分布式锁。我草签了策展人框架如下: 一切都很好,所以我尝试在集群模式下使用ZooKeeper。我启动了三个实例,并初始化了CuratorFramework,如下所示: 如您所见,我刚刚添加了两个新节点的地址。到目前为止还不错。 但是,当我不知道每个节点的地址和集群的大小时,我如何初始化客户端,因为我想动态扩展它? 我可

  • 在使用Gradle命令行接口时,--daemon和--no-daemon命令行选项调用在单个构建时选择启用或禁用后台守护进程.通常,允许后台守护进程在一个环境中(例如一个用户账户)更为方便,可以使所有构建使用守护进程,而不需要记住--daemon开关. 有两种推荐的方式使守护进程持续与环境: 通过环境变量 - 给GRADLE_OPTS环境变量添加-Dorg.gradle.daemon=true标识

  • 在介绍 Biz 生命周期 时,我们提到了有三种方式控制 Biz 的生命周期,并且介绍了使用客户端 API 实现 Biz 的安装、卸载、激活。在这一章节我们介绍如何使用 SOFAArk 提供的动态配置插件,通过 Zookeeper 下发指令,控制 Biz 的生命周期。 引入依赖 SOFAArk 提供了 config-ark-plugin 对接 Zookeeper 配置中心,用于运行时接受配置,达到控