首页 文章

当kafka经纪人失败时,ctrl-c和kill -9之间有什么不同

提问于
浏览
3

我正在浏览kafka官方教程,并在multibroker部分遇到了一个奇怪的问题 .

我将简要列出我所做的事情:

  • 在2181端口运行本地zookeeper

  • 在港口9092,9093,9094上运行三个kafka经纪人

  • 创建了一个包含一个分区和三个副本的主题:my-replicated-topic

  • 在本主题中产生了几条消息

然后我想测试 Kafka 的容错性 . 而不是 kill -9 正常按预期工作,我使用 ctrl-c 来终止主题的领导者 . 这是问题所在:

我不能消费来自kafka的任何消息 .

怎么了?

附:我使用的命令与上面提到的教程完全相同
Kafka 1.00

--updated以下是一些关键输出:

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic   PartitionCount:1    ReplicationFactor:3 Configs:
    Topic: my-replicated-topic  Partition: 0    Leader: 0   Replicas: 0,1,2 Isr: 1,0,2

然后我ctrl-c杀死经纪人0:

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic   PartitionCount:1    ReplicationFactor:3 Configs:
    Topic: my-replicated-topic  Partition: 0    Leader: 1   Replicas: 0,1,2 Isr: 1,2

在这个时候我不能从其他经纪人那里消费

bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --from-beginning --topic my-replicated-topic

这是代理0的配置,其他配置与此相同,但代理ID,端口和日志目录除外 .

broker.id=0
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

2 回答

  • 0

    你的offsets.topic.replication.factor = 1所以如果你用你的消费者的抵消来杀死经纪人,那么就没有其他的副本,所以你没有抵消 .

    在__consumer_offsets主题上复制因子= 1不是容错配置

    您不仅需要更改此配置,还需要将现有的消费者偏移主题修改为复制因子= 3

  • 0

    通过 Ctrl+C 退出流程与通过 kill -9 删除流程之间存在差异 . kill -9 将发送 SIGKILL 信号,该信号终止该过程并且该过程无法避免,其中 Ctrl+C ,相当于 kill -3 将发送信号 SIGQUIT ,该信号可由过程处理或被忽略 .

相关问题