Как повысить надежность дизайна pub / sub? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть служба, которая подписывается на топи c в брокере сообщений. Мне нужно повысить надежность и убедиться, что любые сообщения, опубликованные в топи c, не теряются. Итак, для этой цели необходимо управлять несколькими копиями сервисов. На данный момент есть два варианта:

  1. Вначале развернуть несколько услуг, подписаться на topi c от каждой услуги. Когда сообщение будет опубликовано, все службы его получат. Чтобы избежать дублирования обработки, воспользуйтесь помощью базы данных, в которую службы пытаются вставить строку с подробностями сообщения. Теперь, если запись с данными уже существует, вставка завершится ошибкой, и служба прекратит обработку. Таким образом, только одна служба может писать в базу данных и будет иметь право обрабатывать сообщение. Остальные проигнорируют это сообщение. (Проблема здесь в накладных расходах на дополнительные соединения)

  2. Вначале разверните несколько служб, но только одна служба будет подписываться на topi c. Каждый раз, когда эта служба выходит из строя, другая берет на себя инициативу. Что-то вроде процесса выбора лидера в алгоритмах консенсуса. (Проблема здесь в сложности)

Каким другим способом я могу справиться с этим вариантом использования?

...