java — сжатие kafka, используя потребителя высокого уровня и простого потребителя

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

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

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

Я думаю, что потребитель высокого уровня может не работать в случае сжатия с librdkafka C ++ API на стороне производителя? Пожалуйста, очистите меня, если я ошибаюсь здесь, поскольку я видел другой пост здесь Кодек сообщений Kafka — сжатие и распаковка. В противоположность этому, я обнаружил, что другая ссылка говорит, что декомпрессия должна работать, если используется потребитель высокого уровня. http://grokbase.com/t/kafka/users/142veppeyv/unable-to-consume-snappy-compressed-messages-with-simple-consumer.

Спасибо

1

Решение

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

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

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

3

Другие решения

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

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

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

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

0

По вопросам рекламы [email protected]