Я ищу оптимизацию архитектуры микросервиса, которая в настоящее время использует HTTP/REST для внутренней связи между узлами.Шина сообщений против Quasar/HTTP для внутренних вызовов Microservice
Одним из вариантов является использование противодавления в сервисах (например) путем интеграции чего-то типа Quasar в стек. Это, несомненно, улучшит ситуацию. Но я вижу пару проблем. Один из них: асинхронные клиентские потоки являются временными (в памяти) и при сбое клиента (сбой), эти потоки повтора будут потеряны. Второй, теоретически, если целевой сервер в течение некоторого времени не работает, клиент может в конечном итоге достичь попытки повторной попытки OOM, потому что потоки в конечном счете ограничены, даже Quasar Fibers.
Я знаю, что это немного параноик, но мне интересно, будет ли альтернатива на основе очереди более выгодной в очень больших масштабах.
Он по-прежнему работает асинхронно, как Quasar/fiber, за исключением: a) централизованное управление очередью и от JVM клиента; b) очередь может быть долговечной, так что в случае, когда клиентские и/или целевые серверы опускаются, никакие сообщения в полете не теряются.
Недостатком очереди, конечно, является то, что есть больше перелетов, и это замедляет работу системы. Но я думаю, что есть, вероятно, сладкое пятно, где пики Quasar ROI и централизованная и прочная очередь становятся более важными для масштабирования и HA.
Мой вопрос:
ли этот компромисс был обсужден? Существуют ли какие-либо документы по использованию централизованного внешнего подхода к очереди/маршрутизатора для внутриобщинного сообщения .
TL; DR; я просто понял, что я мог бы, вероятно, фраза этот вопрос:
«Когда это целесообразно использовать Message Bus на основе intraservice коммуникации в отличие от прямого HTTP в архитектуре microservice »