Kafka Consumer не получает данные, когда один из брокеров не работает - PullRequest
0 голосов
/ 14 декабря 2018

Kafka Quickstart
Использование Kafka v2.1.0 на RHEL v6.9

Потребитель не может получить данные, когда один из брокеров Kafka не работает.

Выполненные действия:
1. Запустите zookeeper
2. Запустите Kafka-Server0 (localhost: 9092, kafkalogs1)
3. Запустите Kafka-Server1 (localhost: 9094, kafkalog2)
4. Создать тему "test1 ", количество разделов = 1, коэффициент репликации = 2
5. Запустите производителя для темы" test1 "
6. Запустите приемник
7. Отправьте сообщения от производителя
8. Получите сообщенияпотребительская сторона.

Все вышеперечисленные шаги работали без проблем.

Когда я выключаю Kafka-Server0, потребитель перестает получать данные от производителя.Когда я возвращаюсь к Kafka-Server0, потребитель начинает получать сообщения с того места, где он остановился.

Используются эти команды

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test1
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic test1

Поведение такое же (сообщение не полученона стороне потребителя), когда я запускаю потребителя с двумя серверами, указанными в параметре --bootstrap-server.

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9094 --topic test1

Любая идея, почему потребитель прекращает получать сообщения, когда server0 не работает, даже если коэффициент репликации длятема test1 была установлена ​​на 2?

Уже есть похожий вопрос, но на него не был дан полный ответ Быстрый запуск Kafka 0.10: сбой потребителя при сбое "основного" брокера

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

В начальных версиях Kafka офсет управлялся в zookeeper, но с течением времени Kafka постоянно развивался, вводя множество новых функций.Теперь Кафка управляет смещением в теме __consumer_offsets.

Можно вспомнить сценарий, в котором вы создали тему с коэффициентом репликации 1. В случае сбоя брокера данные находятся только на том узле Kafka, который не работает.Таким образом, вы не можете получить эти данные.Та же аналогия применима к теме __consumer_offsets.

Вам необходимо повторно посетить server.properties, чтобы получить ожидаемые функции.Но если вы все еще хотите получать сообщения из раздела реплики, вам может потребоваться перезапустить консольный потребитель с параметром --from-begin true

0 голосов
/ 14 декабря 2018

Если тема смещений недоступна, вы не можете ее использовать.

Просмотрите файл server.properties для этих файлов и посмотрите приведенный выше комментарий и соответственно увеличьте его (применяется, только если тема еще не существует)

# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
# For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1

Согласно ваш предыдущий вопрос , похоже, у него есть только одна реплика

Посмотрите, как вы можете увеличить коэффициент репликации для существующеготема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...