当其中一个Kafka副本出现故障时会发生什么

时间:2016-08-17 10:21:15

标签: apache-kafka

我有一组2个Kafka经纪人和一个复制因子2的主题。如果其中一个经纪人死了,我的生产者能否继续向这个降级的1个节点集群发送新消息?或复制因子2需要2个活动节点,而messaged将被拒绝?

5 个答案:

答案 0 :(得分:6)

这取决于几个因素:

  • 您的生产者配置是什么?如果您配置为" all",则领导经纪人不会回复ACK,直到该消息已被复制到ISR列表中的所有节点。此时由您的制作人决定他是否关心ACK。
  • 你对min.insync.replicas有什么价值?如果节点数低于此配置,则您的经纪人领导者不会接受来自生产者的更多消息,直到有更多节点可用。

所以基本上你的制作人可能暂停一段时间,直到更多的节点出现。

答案 1 :(得分:4)

如果没有,将不会忽略消息。活动代理的数量小于配置的副本数量。每当新的Kafka代理加入集群时,数据就会被复制到该节点。

您可以通过将复制因子配置为3或更多来重现此方案,并且只启动一个代理。

答案 2 :(得分:0)

新节点加入kafka群集后,数据将被复制,副本因素不会影响发布者消息

答案 3 :(得分:0)

复制因子2并不需要2个实时代理,它在一个代理关闭时发布消息取决于那些配置 - 确认 - min.insync.replicas

检查上面提到的那些配置@Javier

答案 4 :(得分:0)

Kafka将为生产者和消费者分配重新分配的分区,这些分区在处理丢失的分区时会遇到问题,但是对于新主题会产生问题。

您可以启动一个复制因子为2或3的代理。它确实起作用。但是,只有在集群中具有足够数量的代理之后,才能使用该复制因子创建主题。无论是在第一条消息上自动生成主题还是手动创建主题,kafka都会引发错误。

  • kafka-topics.sh --create --zookeeper localhost:2181-复制因子3-分区1 --topic测试

Error while executing topic command : Replication factor: 3 larger than available brokers: 1. [2018-08-08 15:23:18,339] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.