【问题标题】:Kafka running on zookeeper subcontext or chrootKafka 在 zookeeper 子上下文或 chroot 上运行
【发布时间】:2016-06-06 19:12:41
【问题描述】:

状态:我们正在与 kafka 和几个不同的服务共享 zookeeper,这些服务正在使用 zookeeper 进行协调。他们很好地在 zookeeper 子上下文上运行。看起来像这样:

/
   /service1/...
   /service2/...
   /brokers/...
   /consumers/...

我的问题是.. 是否可以设置 kafka 以使用子上下文?因此,其他服务最终无法修改其他服务子上下文。应该是:

/
   /service1/...
   /service2/...
   /kafka/brokers/...
   /kafka/consumers/...

我在其他项目中看到过这种语法:

zk://10.0.0.1,10.0.0.2/kafka

让我们说。因此,kafka 只会看到 brokersconsumers 路径,并且无法与其他子上下文混淆。

恐怕kafka当时不支持这种格式。另一个问题是,有解决方法吗?喜欢以某种方式包装动物园管理员?有任何想法吗?或者kafka应该专门使用zookeeper。这是最佳实践吗?我们应该为每个项目生成 zookeeper,这太过分了,因此 zookeeper 需要 ensemble 至少包含 3 个节点。

感谢您的回答!

【问题讨论】:

    标签: integration apache-kafka apache-zookeeper


    【解决方案1】:

    您可以在 Kafka 中使用 zk chroot 语法,详见 Kafka 配置documentation

    Zookeeper 还允许您添加“chroot”路径,这将使该集群的所有 kafka 数据出现在特定路径下。这是一种在同一个 Zookeeper 集群上设置多个 Kafka 集群或其他应用程序的方法。为此,请以 hostname1:port1,hostname2:port2,hostname3:port3/chroot/path 的形式给出一个连接字符串,它将把所有这个集群的数据放在路径 /chroot/path 下。请注意,您必须在启动代理之前自己创建此路径,并且消费者必须使用相同的连接字符串。

    最好的做法是维护一个 ZooKeeper 集群(至少我看到的是这样)。否则,您将创建更多的操作工作负载来维护良好的 ZK 集成。

    Kafka documentation 关于操作 ZK 的建议是使用多个 ZK:

    应用程序隔离:除非您真正了解要安装在同一机器上的其他应用程序的应用程序模式,否则单独运行 ZooKeeper 可能是个好主意(尽管这可以与硬件)。

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 1970-01-01
      • 2021-05-20
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2018-02-10
      • 2013-09-03
      相关资源
      最近更新 更多