#apache-kafka
#apache-kafka
Вопрос:
У меня есть кластер kafka из трех узлов. Я создал сообщения в тему kafka с разделом 1 и коэффициентом репликации 3. Что произойдет, если мой потребитель будет работать намного медленнее, чем производитель? Политики хранения и другие свойства раздела по умолчанию
Например:
Производитель записывает 10 ГБ в час
Потребитель читает 5 ГБ в час
Хранение = 5 ГБ и 5 часов
Доступное пространство — 30 ГБ
Что происходит после одного дня непрерывной работы?
Какие параметры я должен проверить, чтобы гарантировать нулевую потерю данных??
Спасибо!
Ответ №1:
Чтобы предотвратить потерю данных, вы должны гарантировать, что потребитель сможет использовать данные по крайней мере так же быстро, как и производитель, иначе вы потеряете данные. Kafka не заботится о том, были ли данные использованы или нет, он удаляет данные на основе конфигураций хранения.
Если вы используете коэффициент репликации, равный 3, это означает, что каждый записанный вами ГБ равен 3 ГБ, поскольку он реплицируется еще 2 раза, поэтому произведите соответствующие вычисления и умножьте их на время хранения:
Необходимый общий объем памяти — ГБ / час * Коэффициент хранения * репликации. итак, 10 ГБ / час * 3 часа хранения * 3 повторения. коэффициент = 90 ГБ (всего на всех узлах вместе!)
Обычно одного раздела недостаточно, большее количество разделов обеспечит вам большую пропускную способность для использования данных.