Поддерживает ли разделенные разделы Pulsar глобальный порядок при использовании различных эксклюзивных подписок?

#apache-kafka #messaging #distributed #apache-pulsar

Вопрос:

В документации Apache Pulsar у нас есть:

введите описание изображения здесь

Учитывая, что у нас есть производитель, который производит только одну разделенную тему и две эксклюзивные подписки (эксклюзивная подписка гарантирует заказ в теме) для такой темы! Будут ли сообщения использоваться по порядку в каждой подписке?

Ответ №1:

Это зависит от вашего режима маршрутизации.

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

Если вы используете режим одиночной или круглой части (по умолчанию) и указываете ключ в своих сообщениях, все сообщения с одним и тем же ключом будут помещены в один раздел и будут в порядке.

В противном случае нет никаких гарантий упорядочения по разделам. Сообщения упорядочены только внутри данного раздела. Из документа : «Разделенная тема фактически реализована как N внутренних тем, где N-количество разделов». Таким образом, подписка на разделенную тему-это то же самое, что подписка на несколько тем. В этом посте есть несколько тестов для подписок на несколько тем https://jack-vanlightly.com/blog/2019/9/4/a-look-at-multi-topic-subscriptions-with-apache-pulsar это показывает, что вы не можете полагаться на глобальный порядок в разделенных/нескольких темах.

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

Комментарии:

1. Спасибо за ваше объяснение! Мне придется поработать со своим подходом, чтобы получить желаемое поведение 🙂