[Spring Cloud] Конфигурация и использование шлюза

предисловие

Шлюз на самом деле является чем-то нативным для 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 для простого внедрения безопасных и эффективных сервисов шлюза в ваших будущих проектах.

Guess you like

Origin blog.csdn.net/u011397981/article/details/132011320