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

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

1 Ответ

2 голосов
/ 26 апреля 2019

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

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

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

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

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

...