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

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

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


person D.Tomov    schedule 10.04.2019    source источник
comment
Вы можете использовать фильтры маршрутов Zuul, см. cloud.spring.io/spring- облако-netflix / мульти /   -  person    schedule 10.04.2019


Ответы (1)


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

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

Вот схема оформления заказа:  введите описание изображения здесь

Есть смысл?

person Milenko Jevremovic    schedule 10.04.2019
comment
Да, это первая идея, которая пришла мне в голову, но я не хочу, чтобы службы так разговаривали друг с другом. Я хочу, чтобы они были отдельно. - person D.Tomov; 11.04.2019
comment
Почему нет? У меня около 40 сервисов, они общаются через потоки HTTP или Kafka. Это нормально, они находятся в одной сети, и это быстро. @ Д.Томов - person Milenko Jevremovic; 11.04.2019