Поскольку архитектура микросервисов имеет несомненный программный дизайн.Таким образом, вы можете получить разные ответы на эти вопросы.Да, REST и Event based это две разные вещи, но иногда оба вместе дают дизайн для достижения большей гибкости.
Отвечая на ваши вопросы, Я не вижу никакого вреда, если REST API также подписываются на очередь до тех пор, пока вы можете поддерживать их оба, т. Е. Изменения в сообщении не влияют на API, и у вас есть надлежащий запасной вариант и Механизм возможной согласованности на месте.Вы можете проверить обсуждение .Уже есть несколько проектов, которые пробовали это, таких как nakadi и ponte .
Так что все зависит от поведения вашего сервиса связи, чтобы выбрать между API REST иДизайн на основе событий или оба .
То, что вы делаете, основано на ваших требованиях, вы можете выбрать REST API , где вы видите синхронное поведение между сервисами и переходом Дизайн, основанный на событиях , где вы найдете службы, нуждающиеся в Асинхронное поведение , объединение и того и другого не повредит.
В идеале для протокола межпроцессного взаимодействия лучше использовать обмен сообщениями, а для клиентского сервиса лучше всего подходят API REST.Проверьте стиль связи в microservices.io
Архитектура на основе REST
Преимущество
Запрос / Ответ прост и лучше всего подходит для синхронных сред.
Упрощенная система, поскольку в ней нет промежуточного брокера
Способствует оркестровке, т. Е. Служба может предпринимать действия на основе ответа другой службы.
недостаток
Службам необходимо обнаруживать местоположенияэкземпляров службы.
Отображение один к одному между службами.
Остальное используется HTTP, который является протоколом общего назначения, созданным поверх TCP / IPчто добавляет огромные накладные расходы при использовании его для передачи сообщений.
Архитектура, управляемая событиями
Advantage
Управляемые событиями архитектуры привлекают разработчиков API, посколькуОни отлично работают в асинхронных средах.
Слабая связь, поскольку она разъединяет сервисы, так как в случае однократного обслуживания несколько сервисов могут предпринимать действия в зависимости от требований приложения.легко подключить любого нового потребителя к производителю.
Улучшенная доступность, поскольку брокер сообщений буферизует сообщения до тех пор, пока потребитель не сможет их обработать.
Недостаток
- Дополнительная сложность брокера сообщений, которая должна быть высокой доступности
- Отладка запроса на событие не так проста.