国家:我们与卡夫卡和几个不同的服务共享动物园管理员,这些服务使用动物园管理员进行协调。它们在动物园管理员的次级环境上运行得很好。看起来是这样的:
/
/service1/...
/service2/...
/brokers/...
/consumers/...我的问题是。是否有可能设置卡夫卡使用子上下文?因此,其他服务最终不能修改其他服务的子上下文。它将是:
/
/service1/...
/service2/...
/kafka/brokers/...
/kafka/consumers/...我在其他项目中看到了这种语法:
zk://10.0.1、10.0.0.2/kafka
让我们说。所以,卡夫卡只会看到brokers和consumers的路径,也就没有办法处理其他的子上下文了。
恐怕当时卡夫卡不支持这种格式。另一个问题是,有解决办法吗?比如包扎动物园管理员?有什么想法吗?或者卡夫卡应该专门使用动物园管理员。这是最好的实践,我们应该为每个项目培育动物园管理员,这是过度的,因此动物园管理员需要至少由3个节点组成。
谢谢你的回答!
发布于 2016-03-06 16:00:21
您可以在Kafka中使用zk chroot语法,如Kafka配置文档中详细介绍的那样。
动物园管理员还允许您添加一个"chroot“路径,这将使此集群的所有kafka数据出现在特定路径下。这是一种在同一动物园集群上设置多个Kafka集群或其他应用程序的方法。为此,在hostname1:port1、hostname3 2:port2、hostname3 3:port3 3 /chroot/path中给出一个连接字符串,它将这个集群的所有数据放在路径/chroot/ path下。请注意,您必须在启动代理之前自己创建此路径,并且使用者必须使用相同的连接字符串。
最佳实践是维护单个ZooKeeper集群(至少我已经看到了这一点)。否则,您将创建更多的操作工作负载来维护一个良好的ZK集成。
但是,关于ZK操作的Kafka 文档建议使用多个ZKs:
应用程序隔离:除非您真正理解希望安装在同一个框上的其他应用程序的应用模式,否则单独运行ZooKeeper可能是个好主意(尽管这可能是一种与硬件功能相平衡的行为)。
https://stackoverflow.com/questions/35603128
复制相似问题