可以减少min.insync.replicas吗?

Is it possible to decrease min.insync.replicas?

我计划在生产环境中 运行 Kafka 集群。在部署集群之前,我试图找到最好的配置来保证HA和数据的一致性。

我在官方文档中读到不能降低分区复制因子,但是 min.insync.replicas 呢?当我降低测试环境中的值时,我在查看主题描述时看不到任何差异。将值从 3 更改为 2 后,我仍然有 3 个 ISR。是因为它是最小值还是因为没有考虑配置更改?

是的,可以减少(或通常更改)主题的 min.insync.replicas 配置。

但是,当您正在寻找最佳配置以确保高可用性和数据一致性时,降低该值是违反直觉的。

ISR(在同步副本中)和设置 min.insync.replicas 之间存在很大差异。 kafka-topics --describe 中显示的 ISR 只是告诉您主题中数据的健康程度以及所有副本是否跟上分区领导者。

另一方面,min.insync.replicas 与使用该设置写入主题的 KafkaProducer 一起工作。 TopicConfigs 上的官方 Kafka 文档将其描述为:

When a producer sets acks to "all" (or "-1"), min.insync.replicas specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful.

再次强调,如果您正在寻找高可用性和一致性,最好在生产者中设置 acks = all,同时保持 min.insync.replicas 高。