【发布时间】:2022-01-05 01:13:09
【问题描述】:
我在Linux上测试Kafka,但是不知道哪里出了问题,因为测试结果和我理解的不一样。
让我解释一下设置。
目前,在 centos7 中,三个 broker 配置了 kafka 版本 2.8.1,分别使用 9092、9093 和 9094 端口。 在生产者的情况下,所有三个端口都连接到 bootstrap-server 设置,然后执行。
kafka-console-producer.bat --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test
对于消费者,设置了三个,以便它们可以连接到三个端口中的每一个。
1. kafka-console-consumer.bat --bootstrap-serverlocalhost:9092 --topic test
2. kafka-console-consumer.bat --bootstrap-serverlocalhost:9093 --topic test
3. kafka-console-consumer.bat --bootstrap-serverlocalhost:9094 --topic test
如果我在这里解释一下我的理解,
对于 Kafka,leader broker 充当控制器,follow brokers 复制 leader broker 的数据。 如果其中一个追随者代理死亡,则连接到代理的消费者上只会出现一条断开消息。其他代理正常运行。 如果一个leader broker死掉了,follow brokers中的一个会变成leader broker,变化后的leader broker会作为一个controller。
如果我要解释这个问题, 如果你杀死了一个leader broker,检查describe选项,另一个follow broker已经变成了leader,但是生产者和消费者都找不到新的leader而失败。 即使在 9092 端口上运行的代理在没有成为领导者的情况下杀死了代理,生产者和消费者也会失败。
问题。
- 如果领导者代理死了,生产者和消费者是否也应该建立新的连接?
- 我是否误解了生产者和消费者?
- 设置有问题吗?
【问题讨论】:
标签: apache-kafka