С помощью обнаружения регистрации сервисов Eureka, выключателя Hystrix, балансировки нагрузки на нагрузку на ленточной службе и центра конфигурации Cloud Config Count, кажется, что структура микросервиса завершена, последняя, но не менее важная часть, сервисный шлюз является неотъемлемой частью.
Spring Cloud Zuul Маршрутизация является неотъемлемой частью архитектуры микросервиса, предоставляя преимущества, такие как динамическая маршрутизация, мониторинг, устойчивость, безопасность и т. Д. Zuul - балансировщик нагрузки на основе маршрутизации JVM и на стороне серверной части Netflix.
Введение в Zuul
Zuul играет роль «интеллектуальных шлюзов» во всем рамках Spring Cloud Microservices. С одной стороны, Zuul - это шлюз для доступа, который играет роль обратного прокси и является единственным входом для внешних потребителей, чтобы запросить внутренние услуги. С другой стороны, Zuul также имеет функции фильтрации. Вводив правила фильтра во время выполнения, он может реализовать аутентификацию пользователя, динамическую маршрутизацию, выпуск серого, A/B -тестирование, ограничение тока загрузки и другие функции.
Большинство функций Zuul выполняются с помощью функций фильтрации. Zuul может предоставить четыре стандартных типа фильтрации, как показано на рисунке ниже:
1) PRE: Правила фильтрации работают перед маршрутизацией. Вы можете использовать фильтр «Pre» для достижения аутентификации пользователя, журналов запросов записи и т. Д.;
2) Маршрутизация: Правила фильтрации вступают в силу при маршрутизации. Динамическая маршрутизация, высвобождение серого, A/B -тестирование, ограничение тока нагрузки и т. Д. Можно использовать для достижения динамической маршрутизации, выброса серого и многого другого.
3) Пост: правило фильтрации вступает в силу после маршрутизации. Фильтр «post» может использоваться для сбора статистики и метрик, написать соответствующие микросервисы в ответ HTTP и вернуть ее потребителю услуги;
4) Ошибка: это произойдет, когда возникнет ошибка в процессе маршрутизации правила фильтрации. Вы можете использовать фильтр ошибки для записи журнала ошибок и выполнить вторичную обработку ошибки и т. Д.
Передайте сообщения между фильтрами с запросом. Контент, хранящийся в запросе, включает в себя целевой адрес маршрутизации, информацию об ошибках, информацию о запросе, информацию о ответе и т. Д.
1. Пример
Основываясь на предыдущей демонстрации, мы продемонстрируем службу Zuul Gateway
1. Создайте класс шлюза
@Enablezuulproxy @springcloudapplication // Интегрирование @springbootapplication, @enablediscoveryclient, @enablecircuitbreaker public class zuulapplication {public static void main (string [] args) {new SpringapplicationBuilder (zuulapplication.class) .web (true). }}2. Добавить файл конфигурации свойств
spring.application.name = api-gateway server.port = 5555 zuul.routes.api-a.path =/api-a/** zuul.routes.api-a.serviceid = compute-service zuul.routes.api-b.path =/api-b/** zuul.routes.api-b.serviceid = compute-serviceid = compute-serviceid = compute-serviceid = compute-serviceid = compute-serviceid = compute-serviceid eureka.client.serviceurl.defaultzone = http: // localhost: 1111/eureka/
Также укажите на адрес центра регистрации услуг Eureka, API-A.Serviceid, B-Serviceid Point на имя поставщика услуг
3. Эффект доступа
Первоначально экземпляр службы вычислительной работы был непосредственно доступен через ссылку http: // compute-service/add? A = 10 & b = 20. Теперь вы можете непосредственно получить доступ к службе вычислительной работы по локальному хосту: 5555/API-A/Add? A = 1 & B = 2 Адрес шлюза. Аналогичным образом, Zuul Gateway также обеспечивает функцию балансировки нагрузки сервисной нагрузки, отправляя все запросы в экземпляр службы службы.
2. Что такое шлюз? Зачем нужно использовать шлюз?
Через приведенный выше рисунок интерфейс API напрямую подвергается воздействию абонента службы без шлюза. Когда количество вызывающих абонентов увеличивается, различные абоненты бизнеса различаются, а права на пользовательский доступ, проверка и другие логики должны быть добавлены. После добавления шлюза API между сторонним абонентом и поставщиком услуг создается стена. Эта стена напрямую связывается с вызывающим абонентом для управления разрешением, а затем запрос сбалансирован на бэкэнд -сервере. Так же, как нет необходимости напрямую доступа к методу добавления вычислительного обслуживания, запрос передается в экземпляр службы через ссылку API-A/Add. Zuul - это шлюз API, который обеспечивает балансировку нагрузки, обратный прокси и аутентификацию разрешения.
Подобно Nginx, добавляющему стенку защиты в передней части службы применения, балансировка нагрузки Zuul предназначена для распространения запросов на службу или экземпляр службы в кластере. Представленная ранее лента также фокусируется на функциях загрузки обслуживания, которые направлены на то, чтобы потребители услуг распространяли запросы вызовов в конкретный экземпляр предоставления услуг. Оба балансируют нагрузку, что фактически проводится на разных уровнях системы.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.