我正在 Docker 中运行 Kafka 集群,并探索不同的配置以获得最佳性能。我想到了四种情况:
场景 1:两台 Kafka 服务器,各有两个代理(ksrv1:9092,9093 和 ksrv2:9092,9093),由单个 ZooKeeper 提供服务。
场景 2:与场景 1 相同,但使用两个或三个 ZooKeeper 以提高容错能力。
场景 3:每个 Kafka 服务器都有一个代理和一个专用的 ZooKeeper。
场景4:与场景3类似,但是多个ZooKeeper以实现高容错性。
哪个场景性能更好?
Kafka 不再需要 Zookeeper。它尤其不应该是“每个经纪人一个/多个”。Kafka集群可以有数十个broker,但最多只需要7个Zookeeper。如果您使用牛皮纸模式,则需要零。
单个主机上的多个代理(或 Zookeeper)不太可能提高性能。您的单个磁盘、CPU 和 RAM 将成为限制因素,尤其是当数据开始在同一主机磁盘内复制时