我计划在生产环境中运行Kafka集群。在部署群集之前,我会尝试找到最佳配置以确保HA和数据的一致性。
我在官方文档中读到不可能减小分区复制因子,但是min.insync.replicas
又如何呢?当我在测试环境中降低该值时,查看主题描述时看不到任何差异。将值从3更改为2后,我还有3 ISR。是因为它是一个最小值,还是因为未考虑配置更改?
答案 0 :(得分:2)
是的,可以减少(或总体上可以更改)主题的min.insync.replicas
配置。
但是,当您在寻找最佳配置以确保高可用性和数据一致性时,减小该值是违反直觉的。
(同步副本中的)ISR与设置min.insync.replicas
之间有很大的不同。 kafka-topics --describe
中显示的ISR仅告诉您主题数据的运行状况,以及所有副本是否都与分区领导者保持同步。
另一方面,min.insync.replicas
与KafkaProducer一起使用该设置写入主题。在TopicConfigs上的官方Kafka文档中将其描述为:
当生产者将
acks
设置为“全部”(或“ -1”)时,min.insync.replicas
指定必须确认写入的最小副本数,才能将写入视为成功。
再次强调一下,如果您要寻求高可用性和一致性,最好在生产者中设置acks = all
,同时保持min.insync.replicas
高。