【问题标题】:Best way to start zookeeper server from java program从java程序启动zookeeper服务器的最佳方法
【发布时间】:2015-09-25 12:13:12
【问题描述】:

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

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

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

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: java apache-zookeeper


    【解决方案1】:

    如果您想从您的 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 或类似的配置管理工具,在这种情况下您还需要重新启动集群以采用新配置。

    【讨论】:

    • 感谢@igorbel 的回答!在所有这些选项中,我找到了这里提到的:link 最简单的。所以,现在我正在使用这种方法!
    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多