Конфигурация кафки min.insync.replicas не работает - PullRequest
1 голос
/ 09 ноября 2019

Это мои первые дни в изучении кафки. И я проверяю каждое свойство / концепцию kafka на моей локальной машине.

Итак, я натолкнулся на это свойство min.insync.replicas и вот мое понимание. Пожалуйста, исправьте меня, если я что-то неправильно понял.

  • Как только сообщение отправлено в тему, сообщение должно быть написано как минимум min.insync.replicas числу подписчиков.
  • min.insync.replicas также включает лидера.
  • Если число доступных живых брокеров ( косвенно, в репликах синхронизации ) меньше указанного min.insync.replicas, тогда производитель выдаст исключение, не публикуемоесообщение.

Ниже приведены шаги, которые я выполнил для создания описанного выше сценария

  1. Запустили 3 локальных брокера с идентификаторами брокера 0, 1 и 2
  2. создал тему insync и установите min.insync.replicas на 2, используя следующую команду

sudo ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic insync --config min.insync.replicas=2

Опишите тему, приведенную в следующем

Тема: insync PartitionCount: 1 ReplicationFactor: 3 Конфиги: min.insync.replicas = 2 Тема: insync Раздел: 0 Лидер: 2 Реплики: 2,0,1 Isr: 1,2,0

На этом этапе я убедился, что предоставленное мной свойство выбрано kafka

Я начал отправлять сообщения и потреблять их с терминала, используя следующую команду

Производитель: ./kafka-console-producer.sh --broker-list localhost:9092 --topic insync --producer.config ../config/producer.properties

Потребитель: ./kafka-console-consumer.sh --zookeeper localhost:2181 --topic insync

На данный момент я смог успешно отправлять и получать сообщения.

Скупил 2 брокеров (0 и 2) и описал тему, в результате чего

Тема: insync PartitionCount: 1 ReplicationFactor: 3 Конфиги: min.insync.replicas = 2Тема: insync Раздел: 0 Лидер: 1 Реплики: 2,0,1 Isr: 1

На данный момент In Sync Replicas только 1 ( Isr: 1 )

Затем я попытался создать сообщение, и оно заработало. Мне удалось отправить сообщения от производителя консоли, и я мог видеть эти сообщения в консоли потребителя.

Моя версия Kafka: kafka_2.10-0.10.0.0

следующееСвойства производителя:

bootstrap.servers = localhost: 9092

сжатие.type = нет

batch.size = 20

acks= all

Я ожидал, что произойдет сбой производителя с NotEnoughReplicasException, как указано в this .

открытый класс NotEnoughReplicasException extends RetriableException

Количество реплик insync для раздела меньше, чем> min.insync.replicas

, но работает нормально.

Я что-то упустил? Как я могу создать сценарий?

1 Ответ

0 голосов
/ 11 ноября 2019

acks установлен на "все"? если нет, попробуйте установить все

...