#apache-kafka #kafka-producer-api
#apache-kafka #kafka-producer-api
Вопрос:
Если я установлю min.insync.replicas
значение 1, лидер будет ждать, пока подписчик получит эту запись, или он отправит подтверждение продюсеру, считая себя одним из списка ISR.
Ответ №1:
Если вы установите min.insync.replicas
значение 1, достаточно, чтобы лидер подтвердил получение данных. Лидер не будет ждать, пока какие-либо подписчики подтвердят данные.
Возможно, стоит упомянуть, что min.insync.replicas
только вступает в силу, когда вы установили для своей конфигурации производителя acks
значение all
(или -1
).
Минимально допустимое значение для min.insync.replicas
равно 1
, поэтому, даже если ваш коэффициент репликации темы установлен на 1, вы не можете получить значение ниже 1.
Является ли лидер частью списка ISR?
Да, лидер является частью списка ISR. Вы можете увидеть это при вызове инструмента командной строки kafka-topics
. В результате вы заметите, что один и тот же номер брокера будет отображаться как «Лидер» и в «ISR»:
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test
Topic: test PartitionCount: 1 ReplicationFactor: 3
Topic: test Partition: 0 Leader: 3 Replicas: 2,3,1 Isr: 3
Комментарии:
1. В кластере Kafka с 3 узлами, какой должна быть настройка для
min.insync.replicas
, позволяющая допускать сбой одного узла?2. В этом случае вам нужно установить его равным 2.
3. Это то, что я всегда думал, но я получаю
NOT_ENOUGH_REPLICAS
ошибку. Я начинаю думать, что лидер не является частью ISR, и этоmin.insync.replicas=1
означает, что лидер 1 реплика = 2 узла. Документальный фильм Kafka также читается во многих местах так, как будто лидер не был частью ISR. Странно…4. Привет @FrVaBe, я понимаю, откуда вы и почему это сбивает с толку, поскольку изначально у меня была такая же мысль. Я провел еще некоторое исследование и обнаружил, что следующие предложения в учебном материале для разработчиков Confluent Kafka действительно понятны и полезны: «Описание на слайде вводит в заблуждение, потому что ISR включает лидера, а также захваченных последователей . ISR — это список реплик — как лидера, так и последователей , — которые идентичны до указанной точки, называемой отметкой прилива.»
5. Большое спасибо! для пояснения мне действительно нужно это проверить (в любом случае нужно выполнить несколько тестов на отказ кластера) — и с
min.insync.replicas=2
не должно возникнуть проблем с уничтожением узла кластера из 3 узлов.