Каталог статей
предисловие
Шлюз на самом деле является чем-то нативным для springcloud, но я все же хочу рассказать об этом здесь, потому что, когда мы используем nacos, после того, как интерфейс вызывает сервис, он обычно обращается к нашему шлюзу, а затем шлюз выбирает наш сервис nacos, и затем вызывает внутреннюю службу
В современной микросервисной архитектуре шлюзы играют жизненно важную роль. Он действует как шлюз между приложением и внешним миром, обрабатывая запросы от клиентов и перенаправляя их в соответствующие микросервисы. Как член экосистемы Spring Cloud, Spring Cloud Gateway предоставляет нам мощное и гибкое шлюзовое решение.
В этой статье мы подробно обсудим настройку и использование Spring Cloud Gateway, чтобы помочь читателям лучше понять и применить этот превосходный инструмент шлюза.
Первым шагом является создание проекта Springboot.
Второй шаг — добавить зависимости
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR6</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Третий шаг — написать файл yml
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.0.93:8848
gateway:
routes:
- id: service-provider
uri: lb://service-provider
predicates:
- Path=/provider/** #以provider开头的请求都负载到provider服务
filters:
- RewritePath=/provider/(?<segment>.*), /$\{
segment} #过滤掉url里的provider,例如http://ip:port/provider/getCity -> http://ip:port/getCity
application:
name: gateway
server:
port: 8999
Интерпретируйте файл конфигурации:
- RewritePath: отфильтровать провайдера в URL-адресе, например, http://ip:port/provider/getCity -> http://ip:port/getCity.
- Путь: запросы, начинающиеся с провайдера, загружаются в службу провайдера.
- id: уникальный идентификатор маршрута
- ури: услуга посреди нако, которую нужно вернуть
Это наша консоль nacos, в которой есть сервис-провайдер, который отвечает за предоставление API.
Итак, мы настраиваем uri в маршрутах в yml какlb://service-provider
Если внешний интерфейс хочет получить доступ к нашему сервису, ему нужно всего лишь посетить http://localhost:8999/provider, который начинается с provider, поэтому
мы настраиваем Path как- Path=/provider/**
Но API, предоставляемый нашим поставщиком услуг, — это /echo/{string}, поэтому нам нужно удалить поставщика, поэтому RewritePath настроен как/provider/(?<segment>.*), /$\{segment}
Четвертый шаг — начать основной класс запуска.
Затем служба шлюза будет зарегистрирована в nacos.
Затем мы можем получить доступ к услугам в наших nacos через нашу службу шлюза.
API, предоставляемый провайдером, выглядит следующим образом.
Официальный веб-сайт:
- https://spring.io/projects/spring-cloud-gateway
адрес склада: - https://gitee.com/WangFuGui-Ma/spring-cloud-alibaba/дерево/мастер
Подведем итог
Благодаря введению в эту статью мы понимаем основные концепции и базовую конфигурацию Spring Cloud Gateway. Его гибкость и масштабируемость делают его идеальным для создания надежных и высокопроизводительных микросервисных архитектур.
Я надеюсь, что эта статья будет полезна читателям при использовании Spring Cloud Gateway и может углубить понимание и применение этого компонента. Желаю вам использовать Spring Cloud Gateway для простого внедрения безопасных и эффективных сервисов шлюза в ваших будущих проектах.