Использование Kafka с огромными данными

#apache-kafka

#apache-kafka

Вопрос:

У меня есть кластер kafka из трех узлов. Я создал сообщения в тему kafka с разделом 1 и коэффициентом репликации 3. Что произойдет, если мой потребитель будет работать намного медленнее, чем производитель? Политики хранения и другие свойства раздела по умолчанию

Например:

Производитель записывает 10 ГБ в час

Потребитель читает 5 ГБ в час

Хранение = 5 ГБ и 5 часов

Доступное пространство — 30 ГБ

Что происходит после одного дня непрерывной работы?

Какие параметры я должен проверить, чтобы гарантировать нулевую потерю данных??

Спасибо!

Ответ №1:

Чтобы предотвратить потерю данных, вы должны гарантировать, что потребитель сможет использовать данные по крайней мере так же быстро, как и производитель, иначе вы потеряете данные. Kafka не заботится о том, были ли данные использованы или нет, он удаляет данные на основе конфигураций хранения.

Если вы используете коэффициент репликации, равный 3, это означает, что каждый записанный вами ГБ равен 3 ГБ, поскольку он реплицируется еще 2 раза, поэтому произведите соответствующие вычисления и умножьте их на время хранения:

Необходимый общий объем памяти — ГБ / час * Коэффициент хранения * репликации. итак, 10 ГБ / час * 3 часа хранения * 3 повторения. коэффициент = 90 ГБ (всего на всех узлах вместе!)

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