коэффициент репликации kafka меньше, чем количество брокеров

#java #apache-kafka #kafka-consumer-api

#java #apache-kafka #kafka-consumer-api

Вопрос:

У меня есть тема Kafka, созданная с коэффициентом репликации = 2, количеством разделов = 1 и количеством брокеров = 3.

Будут ли сообщения правильно прочитаны, если все 3 брокера указаны в качестве серверов начальной загрузки в consumer?

Может ли быть так, что сообщения не используются, когда потребитель попадает на узел, у которого нет реплики? Или это так не работает?

Ответ №1:

Брокеры Kafka обмениваются внутренними данными друг с другом.

Это означает, что если ваш потребитель знает только об одном из брокеров, он будет связываться со всеми брокерами в кластере, чтобы выяснить, на каком брокере находится лидер раздела. Тогда ваш потребитель будет использовать этот брокер.

Однако обычно лучше указывать не только один из адресов брокера, а несколько или даже все адреса в виде списка, разделенного запятыми, в вашей потребительской конфигурации bootstrap.servers . Таким образом, даже если один из брокеров выйдет из строя, ваш потребитель все равно сможет получать данные.

Будут ли сообщения правильно прочитаны, если все 3 брокера указаны в качестве серверов начальной загрузки в consumer?

ДА. Однако каждый раздел является лидером раздела, который находится на одном из брокеров, поэтому ваш потребитель будет использовать данные только от этого одного брокера.

Может ли быть так, что сообщения не используются, когда потребитель попадает на узел, у которого нет реплики?

Нет. Как объяснялось выше, брокеры обмениваются данными друг с другом, чтобы выяснить, на каком брокере находится лидер раздела.