min insyncreplicas 属性是否会影响 kafka 中的消费者

Raj*_*ala 5 apache-kafka kafka-consumer-api

我有3 节点集群的min.insync.replicas=2配置。default.replication.factor=3如果我尝试在只有一个经纪人启动的情况下进行生产,那么它就会像我预期的那样失败。但是,如果我在只有 1 个代理可用时尝试消费,消费者仍然能够消费消息。这似乎min.insync.replicas=2对消费者不起作用。这是知道的行为还是我错过了什么?

Gio*_*ous 3

min.insync.replicas指定必须确认写入才能认为此写入成功的最小副本数,因此,它对负责写入的生产者端有影响。该配置参数对消费者端没有任何直接影响,这就是为什么它不会影响消费者,即使活动代理的数量小于 的值min.insync.replicas

根据文档

当生产者设置acks"all"(或"-1") 时,min.insync.replicas 指定必须确认写入才能被视为成功的最小副本数。如果无法满足此最小值,则生产者将引发异常( 或 NotEnoughReplicasNotEnoughReplicasAfterAppend。一起使用时,min.insync.replicas可以acks让您强制执行更大的耐用性保证。典型的场景是创建一个复制因子为 3 的主题,设置min.insync.replicas为 2,并使用 进行acks生成"all"。这将确保生产者在大多数副本未收到写入时引发异常。