Механизм и опции для установки TTL и обработки данных после TTL exipry в среде с несколькими экземплярами - PullRequest
0 голосов
/ 04 июня 2019

В наших приложениях SpringBoot есть сценарий, в котором приложение-запросчик отправляет событие запроса (скажем, запрос цитаты), на которое может ответить несколько приложений.Через некоторое время, основываясь на ответах (кавычках), запрашивающий должен выбрать наилучшее решение и отправить фактический запрос (скажем, заказ) конкретному приложению-ответчику.Шаги ниже:

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

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

Ниже приведены два варианта, о которых мы думаем:

1.Использование Redis : Создание записи с TTL при отправке цитаты и прослушивание события истечения срока действия.По истечении срока действия проверьте ответы и найдите лучший.Проблема в том, что у нас есть несколько экземпляров и как убедиться, что только один экземпляр обрабатывает событие expiry .Кроме того, Наш Redis имеет несколько узлов , что, по-видимому, связано с истечением срока действия и событиями.

  1. Использование RabbitMQ : Другой вариант - отправить сообщение для отложенного обмена вместе с первоначальными запросами котировки .Сам запросчик прослушивает сообщение, и когда сообщение от отложенного обмена наконец читается, тогда лучшая цитата может быть идентифицирована и обработана.Проблема в , мы можем получить около 10K сообщений , что может замедлить обработку.(группировка гарантирует, что только один экземпляр потребляет сообщение) Также насколько надежен отсроченный обмен для реализации производства ?

Хотел проверить некоторые соображения по поводу двух вышеупомянутых подходов, некоторые плюсы/ минусы, а лучшие подходы или альтернативы?

...