java - 从 java 程序启动 zookeeper 服务器的最佳方式

标签 java apache-zookeeper

我有两个问题找不到任何流行/广泛接受的解决方案:

  1. 使用 Java 程序启动 zookeeper 服务器的最简单方法是什么?

  2. 而且,是否可以将服务器添加到 zookeeper 集群,而无需手动转到每台机器并使用新节点的 id 和 ip:port 条目更新它们的配置文件?

有人可以帮忙吗?谢谢!

最佳答案

如果您想从 Java 代码启动一个新的 ZooKeeper 服务器进程,您可以像从 Java 启动任何其他外部进程一样进行操作,例如使用 ProcessBuilder。对于 ZooKeeper,这里没有什么特别之处。您可以查看官方文档,了解实际命令的外观。如果你想监督生产使用的过程会变得很复杂,所以在这种情况下最好使用你的操作系统上提供的东西(例如 upstart,runit 等......),或者看看 Exhibitor 的代码示例: https://github.com/Netflix/exhibitor .

如果您询问有关从您的 Java 程序启动 ZooKeeper 集群的问题,那么您会使事情进一步复杂化,因为您基本上需要监督不同主机上的多个 ZooKeeper JVM 进程。另请查看参展商。

如果您的问题是关于在与您的 Java 代码(嵌入式)相同的 JVM 进程中启动 ZooKeeper 服务器实例,那么它也是可能的。有几个重要的细节要记住,看看这个答案: Is it possible to start a zookeeper server instance in process, say for unit tests?

关于您的第二个问题,最近才在 3.5.0 中添加了对动态集群重新配置的真正支持:http://zookeeper.apache.org/doc/trunk/zookeeperReconfig.html .

在此之前,您仍然可以“将服务器添加到 zookeeper 集群,而无需手动转到每台机器并更新它们的配置”,但您必须使用配置管理工具,如 Chef、Puppet 或类似工具,在这种情况下您还需要重新启动集群以采用新配置。

关于java - 从 java 程序启动 zookeeper 服务器的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278193/

相关文章:

java - 将 Spring HATEOAS 添加到 pom.xml 失败

java - 创建 Java CLASSPATH 的 BAT 文件

java - 我想使用 java 将数据从 firestore cloud 加载到 android studio 中的 listview

azure - Clickhouse服务器无法连接到Zookeeper

apache-zookeeper - zookeeper 的临时 znode 的用例是什么?

java - Eclipse 生成 setter

java - gc.log写入是异步的吗?将 gc.log 放在 NFS 挂载上安全吗?

solr - 使用 ZooKeeper 在 SolrCloud 中配置 DataImportHandler

java - 来自单个java应用程序的zookeeper中使用sasl的多用户身份验证

ruby - 尝试使用zookeeper gem时获取 "uninitialized constant Zookeeper (NameError)"