卡夫卡在zookeeper子上下文或chroot上运行

时间:2016-02-24 13:09:03

标签: integration apache-kafka apache-zookeeper

状态:我们正在与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需要的集合包含至少3个节点。

感谢您的回答!

1 个答案:

答案 0 :(得分:9)

您可以将kk chroot语法与Kafka一起使用,详见Kafka配置documentation

  

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

最佳做法是维护一个ZooKeeper集群(至少这是我所见过的)。否则,您将为维护良好的ZK集合创建更多的操作工作负载。

关于操作ZK的Kafka documentation建议有多个ZK:

  

应用程序隔离:除非您真正了解要在同一个盒子上安装的其他应用程序的应用程序模式,否则最好独立运行ZooKeeper(尽管这可以是一个具有该功能的平衡行为。硬件)。