У нас есть кластер Kafka/Zookeeper, состоящий из 3 брокеров. У нас есть один продюсер, который отправляет сообщения на одну конкретную тему Кафки и несколько групп потребителей, читающих эту тему. Эти потребители проводят выборы лидеров через Zookeeper для себя (независимо от Kafka).Что происходит, если Zookeeper полностью не работает?
Версии используются:
- Кафка: 0.9.0.1
- Zookeeper: 3.4.6 (входит в состав Кафки-Package)
Все процессы управляются Supervisor. Пока все работает нормально. То, что мы пробовали сейчас (для целей тестирования), состояло в том, чтобы просто убить все процессы Zookeeper и посмотреть, что произойдет.
Как и ожидалось, наши потребительские процессы больше не могли подключаться к Zookeeper. Но неожиданно, Kafka Brokers все еще работали. Наш продюсер вообще не жаловался и все еще мог писать в эту тему. Хотя я не мог использовать kafka/bin/kafka-topics.sh или что-то подобное, поскольку все они требуют параметра zookeeper, я все же мог видеть, что фактический размер журнала темпов растет. После перезапуска процессов zookeeper все снова работало так же, как и раньше.
Что мы не могли понять сейчас ... что на самом деле произошло? Мы думали, что Kafka потребует рабочего Zookeeper-Connection, и мы не смогли найти объяснения этого поведения в Интернете.
Zookeeper не требуется для всех операций, выполняемых Kafka. Например, потребительские клиенты Kakfa совершают свои смещения в ZK. Как я знаю. ZK также используется, если брокер не может выбрать новых лидеров для раздела неудавшегося брокерского хостинга. Однако, пока все брокеры работают, письмо не проблема: см. Https://kafka.apache.org/090/documentation.html#replication и http://www.confluent.io/blog/hands- free-kafka-replication-a-lesson-in-operating-simplicity/для простых деталей. –
> Потребительские клиенты Kakfa совершают свои смещения в ZK. Они? Насколько я понял, «новому потребителю» это не нужно, поскольку они хотели отделить потребителей от Zookeeper. Вот почему вы используете свойство bootstrap.servers вместо zookeeper.connect и используете Kafka-Ports – tehK
Да. Старый потребитель фиксирует смещение в ZK. Новые потребители фиксируют свои смещения в теме Kafka и не зависят от ZK. –