Spring Cloud Zuul для составных вызовов API?

Я начинаю создавать шлюз API микросервисов и использую Spring Cloud Zuul, чтобы помочь мне с маршрутизацией. Но для некоторых вызовов API шлюза потребуется несколько запросов к разным службам.

Допустим, у меня есть 2 службы: Служба сведений о заказе и Служба доставки. Я хочу иметь конечную точку шлюза GET /orders/{orderId}, которая вызывает службу сведений о заказе, а затем службу доставки и объединяет их для возврата полных сведений о заказе с доставкой. Возможно ли это с помощью маршрутизации Zuul (может быть, фильтров?) Или мне нужно сделать это вручную (создать контроллер специально для таких запросов), используя что-то вроде RestTemplate для выполнения вызовов?

Вы можете использовать фильтры маршрутов Zuul, см. cloud.spring.io/spring-cloud-netflix/multi/…

user10871691 10.04.2019 10:51
0
1
410
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете избежать этого осложнения и перенаправить запрос от вашего Gateway к Order service, чтобы сделать заказ, а затем сделать запрос HTTP от Order service к Delivery service, чтобы сделать доставку. По своей природе эти сущности работают так. И не беспокойтесь о скорости, это очень быстро.

Это, во-первых, в вашем случае, если вы хотите получить детали заказа с деталями доставки, это должно происходить таким же образом. Возможно, даже ваша служба заказов должна сохранять некоторые детали доставки в своей базе данных. Мы делали это так, вы должны избегать избыточных данных, но иногда это имеет смысл.

Вот схема выполнения заказа:

Есть смысл?

Да, это первая идея, которая пришла мне в голову, но я не хочу, чтобы сервисы так разговаривали друг с другом. Я хочу, чтобы они были отдельными.

D.Tomov 11.04.2019 13:21

Почему бы нет? У меня около 40 сервисов, они общаются через потоки HTTP или Kafka. Это нормально, они находятся в одной сети, и это быстро. @Д.Томов

Milenko Jevremovic 11.04.2019 13:26

Другие вопросы по теме