Консул с Spring Cloud Gateway - межсервисная связь

Настройка: у меня есть набор микросервисов на основе Spring Boot, которые обслуживаются Spring Cloud Gateway, что означает, что каждый запрос, поступающий от пользовательского интерфейса или внешнего клиента API, сначала поступает в Spring Cloud Gateway, а затем пересылается в соответствующий микросервис.

Маршруты настраиваются в Consul, и Spring Cloud Gateway связывается с Consul для получения маршрутов соответствующим образом.

Требование: некоторые микросервисы должны взаимодействовать друг с другом с помощью REST API. Я бы предпочел, чтобы это общение происходило также через Spring Cloud Gateway. Это поможет сократить количество услуг, обращающихся к Consul для получения сведений о других услугах.

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

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


person Mubin    schedule 13.02.2019    source источник
comment
Все службы должны быть зарегистрированы у консула, который позволяет шлюзу маршрутизировать запрос. Использование consul позволит им общаться друг с другом без дополнительной нагрузки на шлюз. Поскольку шлюз - это ваш клиент, на который вы не захотите возлагать дополнительную нагрузку. Кроме того, Spring Consul упрощает взаимодействие с другими службами.   -  person Nitishkumar Singh    schedule 13.02.2019
comment
@NitishkumarSingh Причина, по которой я хочу, чтобы вызовы службы-службы проходили через шлюз, заключается в том, что будет выполнена некоторая обработка и некоторые заголовки будут добавлены к запросу в шлюзе, и я хочу, чтобы это происходило для каждого вызова, независимо от того, откуда он приходит.   -  person Mubin    schedule 13.02.2019
comment
так будут ли эти заголовки в службе вызывающего абонента, если да, то не можете ли вы также добавить их в запрос для вызываемой службы?   -  person Nitishkumar Singh    schedule 13.02.2019
comment
не могли бы вы также добавить их в запрос на вызываемую услугу - это то, чего я хочу избежать.   -  person Mubin    schedule 13.02.2019
comment
использование нескольких микросервисов практически не меняется. Чтобы использовать несколько экземпляров шлюза, вам нужно сделать одно из нескольких: использовать ленту и статический список шлюзов, использовать dns round robbin или использовать балансировщик нагрузки платформы (ELB или аналог).   -  person spencergibb    schedule 13.02.2019