Как можно использовать обмен сообщениями в случае большей загрузки запроса? - PullRequest
0 голосов
/ 10 июля 2019

Я появился на собеседовании в одной из компаний-разработчиков MNC, и интервьюер задал мне сложный вопрос. Он сказал, предположим, что у вас есть система с пользователями и ее заказами, а также есть сервисы для пользователей и заказов. Если пользовательский сервис уже масштабирован, а сервис заказов еще не масштабирован, то как регулируется нагрузка на сервис заказов. Как пользовательский сервис отправляет много запросов в сервис заказов для получения заказов. Может ли кто-нибудь дать мне технический стек для решения этой проблемы. Я думаю, что использование очереди сообщений может быть вариантом, но как? Или, может быть, нить ...... Или и то и другое .... помогите!

1 Ответ

1 голос
/ 10 июля 2019

Я не знаю контекста вопроса, и был ли он связан с обменом сообщениями или нет.

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

  • Отказоустойчивость: если вы используете синхронизирующие вызовы из пользовательского сервиса в сервис заказа ... последний может быть перегружен.Здесь вы можете использовать Автоматический выключатель в службе пользователя, чтобы избежать каскадных сбоев.
  • Устойчивость / производительность: Еще один способ справиться с обратным давлением - Реактивное программирование. Взгляните на SpringReactor (один из примеров).
  • Устойчивость / производительность: вы можете перейти от схемы интеграции API к Интеграция обмена сообщениями .Таким образом, ваша служба пользователя и служба заказа могут взаимодействовать асинхронно.(Например, шаблон «Издатель / подписчик»).

Опять же, многое можно сделать (это всего лишь несколько), но выбор должен быть основан на сценарии.

...