Должен ли API-шлюз связываться через очередь или напрямую с другими µServices? - PullRequest
3 голосов
/ 16 июня 2019

Мне было интересно, какой из моих двух методов более уместен, или есть событие другого?

(1) Прямой

direct communication Прямая связь между GATEWAY и μSERVICE A

  1. UI отправляет HTTP запрос GATEWAY
  2. GATEWAY отправляет HTTP запрос μSERVICE A
  3. μSERVICE A возвращает либо SUCCESS, либо ERROR
  4. Событие сохраняется в EVENT STORE и публикуется в QUEUE
  5. PROJECTION DATABASE обновляется
  6. Другое μSERVICES может потреблять событие

(2) События

queue communication На основе событийсообщение через очередь сообщений

  1. UI отправляет HTTP запрос на GATEWAY
  2. GATEWAY опубликованное событие на QUEUE
  3. μSERVICE A потребляет событие
  4. Событие сохраняется в EVENT STORE и публикуется в QUEUE
  5. PROJECTION DATABASE обновляется
  6. Другое μSERVICES может потреблять событие
  7. GATEWAY потребляет событие и отправляет ответ (SUCCESS или ERROR) на UI

Мне очень жаль, если я неправильно понял какую-то концепцию, я относительно новичок в этом стиле архитектуры.

Заранее спасибо за любую помощь!:)

1 Ответ

2 голосов
/ 17 июня 2019

Второй подход является предпочтительным и асинхронным.

Прямой

При первом приближении ваши микросхемы B и C ждут публикации события.Масштабируемость этой системы напрямую зависит от microsvc A. Что если microsvc A не работает или отстает от записи событий в очередь?это как единая точка отказа и узкое место.Вы не можете легко масштабировать систему.

События

В микросервисах мы поддерживаем системную асинхронность, чтобы они могли масштабироваться.Шлюз должен записывать в очередь, используя pub / sub, и все эти микросервисы могут использовать события одновременно.Система в целом более надежна и может масштабироваться.

...