2

Я новичок в весеннем облаке и просматриваю несколько примеров и материалов, доступных в Интернете, чтобы сделать себя комфортно. Однако, читая о ZUUL, некоторые сайты настроили маршруты в ZUUL application.yml, а некоторые другие сайты упомянули, что запросы будут перенаправлены на соответствующий микросервис и нет необходимости явно настраивать маршруты. Я был немного смущен. Например, в приведенном ниже сценарии, каков подход, настраивать маршруты или автоматически запускать маршрут zuul?Когда настраивать маршруты zuul

  1. Предположим, у меня работает несколько микросервисов, и все они вместе с ZUUL зарегистрированы в Эврика.
  2. У меня есть интерфейс, который работает на другом порту на одном сервере и должен взаимодействовать с вышеуказанными микросервисами.
  3. У меня также есть несколько других приложений (полностью запущенных на разных серверах), которым необходимо взаимодействовать с вышеуказанными микросервисами для извлечения данных.

ТИА ..

ответ

6

Вы использовали Zuul (который знает microservices адрес через Eureka) направить запрос между вашим microservices? если это так, вы используете шаблон балансировки нагрузки на стороне сервера.

Если вы используете службу обнаружения (Eureka в вашем случае), я думаю, что лучший подход заключается в использовании шаблона балансировки нагрузки на стороне клиента для всех запросов между службами (внутри вашей системы). (для этого вы можете использовать Ribbon или RestTemplate).

Вы можете использовать Zuul как единую входную дверь вашей системы, которая позволяет браузеру, мобильному приложению или другому пользовательскому интерфейсу использовать службы с нескольких хостов без управления совместным использованием ресурсов (CORS) и аутентификацией для каждого из них.

Например: запрос клиента (мобильного приложения) для всех комментариев к изображению. Клиент не должен знать адрес «Комментарии-сервис». Требуется только адрес прокси-сервера, и Зууль отправит запрос на нужную услугу. Вы можете сделать это в application.yml/.properties по

zuul.routes.comments.path=/comments/** 
zuul.routes.comments.service-id=comments 

Запрос будет GET www.myproxy.mycompany.com/comments. Не забывайте, что имя службы в вашем application.yml/.properties очень важно (spring.application.name). Это идентификатор службы на маршрутах Зууль (который является тем же идентификатором в Эврика).

По какой-то причине вашей системе необходимо запросить внешние службы (как вы отметили в 3-й ноте). В этом случае ваши внешние службы не являются клиентом обнаружения, Zuul не может искать идентификатор службы от Eureka. использовать маршруты,

zuul.routes.currencyprovider.path=/currencies/** 
zuul.routes.currencyprovider.url=https://currencies.net/ 

с этим маршрутом, все /currencies/** запросов от ваших услуг ЧЕРЕЗ Zuul будут сделаны. с таким подходом у вас есть одна дверь для всей вашей системы. Это API Gateway pattern.

Иногда вашей системе необходимо агрегировать несколько результатов от разных служб для ответа на запрос клиента. Вы можете сделать это в прокси (Zuul в вашем случае).

+0

Hi redoff, Спасибо за ответ. у него больше информации, чем мне нужно :). У меня есть еще один вопрос. если я использую службу обнаружения (балансировку нагрузки на стороне клиента), есть ли какое-то преимущество, позволяющее zuul маршрутизировать запросы на основе имени службы Vs, явно настраивая пути? – Harish

+0

, когда вы используете службу обнаружения, вы не подразумеваете использование балансировки нагрузки на стороне клиента. это коммуникационный подход между вашими службами, которые определяют, является ли он серверным или клиентским LB. Преимущество использования сконфигурированных путей заключается в том, что вы можете ограничить доступ только для определенных сервисов с помощью маршрутов (сконфигурированных путей) ** ЕСЛИ ТОЛЬКО ** вы добавляете 'zuul.ignored-services = *'. Пример – redoff

+0

: у вас есть 3 услуги (комментарии, пользователи, показатели). Вы хотите ограничить доступ ** THROUGH ** прокси до 1 услуги (например, службы комментариев). вы обрабатываете как: 'zuul.ignored-services = *' и 'zuul.routes.comments.path =/comments/**' 'zuul.routes.comments.service-id = комментарии'. С помощью этой строки свойств все запросы ** THROUGH ** прокси будут отклонены, за исключением 'www.myproxy.mycompany.com/comments' – redoff

 Смежные вопросы

  • Нет связанных вопросов^_^