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

#spring #microservices #spring-cloud #netflix-zuul #spring-cloud-netflix

#spring #микросервисы #spring-cloud #netflix-zuul #spring-cloud-netflix

Вопрос:

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

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

Комментарии:

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

Ответ №1:

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

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

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

Имеет смысл?

Комментарии:

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

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