当前位置: 首页 > 知识库问答 >
问题:

让kafka broker down的时候ctrl-c和kill -9有什么区别

杨豪
2023-03-14

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

我将简要列出我所做的工作:

  • 在2181号港口运行当地动物园管理员
  • 在端口 9092、9093、9094 上运行三个 kafka 代理
  • 创建了一个具有一个分区和三个副本的主题:我的复制主题
  • 在本主题中生成了几条消息

然后我想测试kafka的容错能力。我使用ctrl-c来终止主题的领导者,而不是按预期正常工作的kill-9。问题是这样的:

我无法使用来自Kafka的任何消息

怎么了?

附言。我使用的命令与上面提到的教程完全相同
kafka 1.00

--更新了以下是一些关键输出:

 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个答案

张璞
2023-03-14

通过Ctrl-C退出进程与通过 kill-9kill终止进程之间存在差异 kill-9将发送SIGKILL信号,该信号将终止进程,且进程无法避免,因此,相当于kill-3的 Ctrl C

盖雪峰
2023-03-14

您的offsets.topic.replication。factor=1,因此如果您使用消费者的偏移量杀死代理,则没有其他副本,因此您没有偏移量。

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

您不仅需要更改此配置,而且还必须将现有的使用者偏移量主题修改为复制因子 = 3

 类似资料:
  • 本文向大家介绍C#和 .NET有什么区别相关面试题,主要包含被问及C#和 .NET有什么区别时的应答技巧和注意事项,需要的朋友参考一下 答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。

  • 本文向大家介绍Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解,包括了Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解的使用技巧和注意事项,需要的朋友参考一下 Ctrl+c,Ctrl+d,Ctrl+z在Linux中意义 Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. Ctrl+c是强制中断程序的执行。 Ctrl+z的是将任务中断,但

  • 问题内容: 在我的情况下: 要么 没关系,有什么区别? 问题答案: 使用自定义类型: 使用了内置的简单类型: 使用复杂的内建类型: 最后一个有点棘手:

  • 本文向大家介绍C和C++的区别是什么?相关面试题,主要包含被问及C和C++的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运

  • 问题内容: 在这里,我对元素进行了设置,并为其应用了相关的CSS。 要么 现在,这里我给的,它也做同样的工作对我来说。 那么,什么是之间准确的区别 标识 和 类 ,当我应该使用 ,当我应该使用 ?我是CSS和Web设计的新手,在处理此事时有些困惑。 问题答案: 例 (请注意,CSS使用前缀 # 表示ID,使用 。 表示类。) 但是 ,HTML 5中弃用了HTML4.01标记属性。在CSS中,没有“

  • 本文向大家介绍C#中的IEnumerable和IQueryable有什么区别?,包括了C#中的IEnumerable和IQueryable有什么区别?的使用技巧和注意事项,需要的朋友参考一下 IEnumerable存在于System.Collections命名空间中。 IQueryable存在于系统中。Linq命名空间。 IEnumerable和IQueryable都是正向收集。 IEnumera