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

如何为动态大小的ZooKeeper集群初始化策展人框架?

袁鸿畅
2023-03-14

我刚刚在独立模式下使用Apache Curator和ZooKeeper实现了一个分布式锁。我草签了策展人框架如下:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2182", retryPolicy);

一切都很好,所以我尝试在集群模式下使用ZooKeeper。我启动了三个实例,并初始化了CuratorFramework,如下所示:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2182,localhost:2182,localhost:2183", retryPolicy);

如您所见,我刚刚添加了两个新节点的地址。到目前为止还不错。
但是,当我不知道每个节点的地址和集群的大小时,我如何初始化客户端,因为我想动态扩展它?
我可以通过仅指定第一个节点的地址来初始化它,该节点将始终启动。但是如果该节点出现故障,Curator将失去与整个集群的连接(我刚刚尝试过)。

共有2个答案

公冶翰池
2023-03-14

你应该知道你的Zookeeper实例在哪里。当你不知道某物在哪里时,就没有办法连接到它——你怎么可能?

如果您可以连接到任何实例,您可以获取配置详细信息,并定期轮询它,以保持您的连接详细信息最新,也许?

也许看看https://zookeeper.apache.org/doc/r3.5.5/zookeeperReconfig.html#ch_reconfig_rebalancing

尹凌龙
2023-03-14

CuratorFrameworkFactory有一个生成器,允许您指定EnsembleProvider而不是connectionString,并包括EnsembleTracker。这将使您的连接字符串保持最新,但您需要以某种方式保留数据,以确保应用程序在重新启动时能够找到集成。我建议实现一个装饰EnsembleProvider,它封装了一个FixedAssembleProvider,并将配置写入属性文件。

例子:

EnsembleProvider ensemble = new MyDecoratingEnsembleProvider(new FixedEnsembleProvider("localhost:2182", true));
CuratorFramework client = CuratorFrameworkFactory.builder()
    .ensembleProvider(ensemble)
    .retryPolicy(retryPolicy)
    .ensembleTracker(true)
    .build();

 类似资料:
  • 问题内容: 我尝试用go编写一个小型应用程序,该应用程序从标准输入中获取“ x”个整数,然后计算平均值并将其返回。到目前为止,我还没有: 尝试编译此错误时,出现以下错误消息: 无效的数组绑定元素 怎么了 问题答案: 您应该使用切片而不是数组: 请参阅“ 深入了解用法和内部原理 ”。 另外,您可能要考虑为循环使用范围:

  • 本文介绍如何对 Kubernetes 上的集群进行初始化配置完成初始化账号和密码设置,以及批量自动执行 SQL 语句对数据库进行初始化。 注意: 如果 TiDB 集群创建完以后手动修改过 root 用户的密码,初始化会失败。 以下功能只在 TiDB 集群创建后第一次执行起作用,执行完以后再修改不会生效。 配置 TidbInitializer 请参考 TidbInitializer 示例和 API

  • 我试着创建一个tf。具有动态形状的变量。以下概述了问题。 这样做很有效。 然而,当我尝试这样做时: 它抛出错误ValueError:initial_value必须具有指定的形状:张量("random_uniform: 0",形状=(?, ?), dtype=flat32) 刚来上下文(问题输入是动态批处理的占位符): 似乎将一个动态值放入随机均匀给出了形状=(?,?) 给出了tf的误差。变量。 感

  • 本文向大家介绍ZooKeeper 集群 ?相关面试题,主要包含被问及ZooKeeper 集群 ?时的应答技巧和注意事项,需要的朋友参考一下 为了保证高可用,最好是以集群形态来部署 ZooKeeper,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么 ZooKeeper 本身仍然是可用的。通常 3 台服务器就可以构成一个 ZooKeeper 集群了。ZooKeeper 官方提供的架构

  • 结果将是: 我对这个结果感到困惑,因为根据标准规则,不是静态初始化,是静态初始化,因为这些: 变量或临时对象o的常量初始值设定项是其完全表达式为常量表达式的初始值设定项,但如果o是对象,则这样的初始值设定项也可以为o及其子对象调用constexpr构造函数,即使这些对象是非文字类类型。 如果实体的常量初始值设定项初始化具有静态或线程存储持续时间的变量或临时对象,则执行常量初始化。如果不执行常量初始

  • 问题内容: 有没有一种方法可以在不初始化的情况下计算关联集合的大小? 例如 (由于我的where子句更加复杂,而from子句是多态查询,所以我不能以任何其他方式执行此操作是有充分的理由的) 谢谢。 问题答案: 除查询外,可能的解决方案可能是使用(使用XML表示法)映射。这样,您可以使用所需的任何查询来获取Parent,然后在不加载整个集合的情况下进行调用(仅执行类型查询)。 有了注释,它将是 更新