【问题标题】:Kafka, questions about setting upKafka,关于设置的问题
【发布时间】: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 端口上运行的代理在没有成为领导者的情况下杀死了代理,生产者和消费者也会失败。

问题。

  1. 如果领导者代理死了,生产者和消费者是否也应该建立新的连接?
  2. 我是否误解了生产者和消费者?
  3. 设置有问题吗?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    我正在 Linux 上测试 Kafka

    但是您正在使用批处理文件,并连接到适用于 Windows 的 localhost...


    以便它们可以连接到三个端口中的每一个。

    这不是 Kafka 分配负载的方式。每个主题分区只能有一个消费者线程处于活动状态。不清楚你的主题有多少个分区,但如果你只有一个并且那个特定的代理死了(它是唯一的副本和领导者),这就解释了为什么你的客户端会停止工作。

    除此之外,Kafka 通常在同一个端口上,在多个主机上。使用一台主机并不是真正的容错,而且会浪费资源(CPU、RAM 和磁盘)。


    关于生产者,retries 有一个属性可以配置;我不确定控制台生产者是否覆盖了默认值,但它应该在新请求时连接到下一个可用的代理。

    对于消费者,同样如此,但是,您需要确保您的 offsets.topic.replication.factor(以及交易主题因素,如果您使用它们)大于 1;否则,消费者将无法读取任何内容(或者事务将不起作用,在较新版本中默认启用)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-25
      • 2014-10-14
      • 2017-06-23
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多