В чем разница между пульсаром и кафкой в ​​отношении потребления?

Чтобы получать данные из Kafka, у нас может быть несколько потребителей по теме, полностью отделенных друг от друга. Тогда, что подразумевается под no shared consumption на странице ( https://streaml.io/blog/pulsar-streaming-queuing), которая разделяет различия между кафкой и пульсаром?

1 ответ

В своем блоге Sijie называет общий обмен сообщениями очередями. С помощью обмена сообщениями в очереди создается несколько потребителей для получения сообщений из одной темы. Какой потребитель получает сообщение, совершенно случайно.

Проблема с реализацией шаблона обмена сообщениями с Kafka заключается в том, что потребители Kafka отмечают, что они приняли сообщение. Потребители Kafka используют так называемый верхний водяной знак для смещения потребителей. Это означает, что потребитель может сказать только: "Я обработал до этого момента", а не "Я обработал это сообщение".

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

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

В этом посте есть подробное объяснение.

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