Сжатие кафки с использованием высокого уровня потребителя и простого потребителя

В моем приложении мы используем потребителя высокого уровня Kafka, который потребляет распакованные данные без каких-либо проблем, если производитель и потребитель сжимают и распаковывают данные с помощью API Java.

Что произойдет, если производитель использует librdkafka C++ API для сжатия (snappy или GZIP)? способен ли потребитель Java распаковать прозрачно, как это было в случае вышеупомянутого. Что происходит с размером выборки на стороне потребителя? делает это также прозрачно.

Что произойдет, если потребитель kafka разработан с использованием простой модели потребителя? Нужно ли распаковывать явным образом сжатые данные, поступающие от производителя (предположим, что здесь используется librdkafka C++ API).

Я думаю, что потребитель высокого уровня может не работать в случае сжатия происходит с librdkafka C++ API на стороне производителя? Пожалуйста, очистите меня, если я ошибаюсь здесь, поскольку я видел другой пост здесь Кодек сообщения Kafka - сжимайте и распаковывайте В противоположность этому, я нашел еще одну ссылку, в которой говорится, что декомпрессия должна работать, если используется потребитель высокого уровня Lehane

Спасибо

2 ответа

Решение

Они совместимы, librdkafka использует то же сжатие и кадрирование, что и клиент Scala/Java.

Увеличение fetch.message.max.bytes позволяет потребителю извлекать более крупные сообщения или более крупные пакеты сообщений с каждым запросом, но обычно его можно оставить равным значению по умолчанию, если только ваши производители не создают сообщения, превышающие это значение - в этом случае вам также потребуется увеличить message.max.bytes,

Сжатие настраивается только для производителя, настройка на стороне потребителя не требуется, поскольку каждое сообщение (или пакет сообщений) помечается их типом сжатия (none, snappy, gzip, ..).

Основная идея всех этих распределенных производителей / брокеров / потребителей состоит в том, чтобы работать друг с другом без проблем и прозрачно. Это означает, что вы не должны знать (и заботиться):

  • как продюсеры реализованы
  • какое сжатие они используют (если есть)
  • сколько производителей / брокеров

Вашему потребителю нужно только прослушать его тему / раздел и узнать, что делать с сообщениями.

Вы можете рассматривать это как аналогию с Интернетом: вашему браузеру все равно, как написано SO, на каком сервере он работает, использует ли он gzip и так далее. Пока они оба говорят по http - это будет работать.

Другие вопросы по тегам