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

Mil*_*ran 7 integration apache-kafka apache-zookeeper

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

/
   /service1/...
   /service2/...
   /brokers/...
   /consumers/...
Run Code Online (Sandbox Code Playgroud)

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

/
   /service1/...
   /service2/...
   /kafka/brokers/...
   /kafka/consumers/...
Run Code Online (Sandbox Code Playgroud)

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

ZK://10.0.0.1,10.0.0.2/kafka

我们说吧.所以,kafka只会看到brokersconsumers路径,并且没有办法搞砸其他子上下文.

我担心kafka当时不支持这种格式.其他问题是,有解决方法吗?好像以某种方式结束动物园管理员?有任何想法吗?或者kafka应该专门使用zookeeper.这是最好的做法,我们应该为每个项目产生zookeeper,这是矫枉过正,因此zookeeper需要的集合包含至少3个节点.

感谢您的回答!

Mar*_*ano 10

您可以将kk chroot语法与Kafka一起使用,如Kafka配置文档中所述.

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

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

关于操作ZK 的Kafka 文档建议使用多个ZK:

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