вторник, 30 июля 2024 г.

Spring Cloud Gateway

Предположим мы хотим обращаться к нескольким API/нескольким сервисам через одну точку. Для этого мы поднимаем еще один сервис (микросервисная архитектура) и этот сервис будет у нас принимать запросы и перенаправлять их куда надо. Для этого мы создаем приложение Spring Boot и добавляем к нему в зависимости

implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
Далее нам нужно в конфиге прописать маршруты.

spring:
  cloud:
    gateway:
      routes:
        - id: ya
          uri: http://ya.ru
          predicates:
            - Path=/ya/**
          filters:
            - StripPrefix=1
        - id: employees
          uri: http://localhost:8081
          predicates:
            - Path=/employees/**
          filters:
            - StripPrefix=1
Для примера. В результате у нас по адресу localhost:8080/ya будет ya.ru а по адресу localhost:8080/employees будет сервис employees запущенный на 8081 порту (имеется в виду что наш сервис cloud gateway запущен на 8080-м порту). StripPrefix=1 значит убрать первую часть url. Далее все запросы соответствующие предикату перенапрявлются на uri. Мы можем запусть Eureka и разрешать наши сервисы через нее. Для этого нам нужно uri в конфиге маршрутов задавать в таком виде:

	uri: lb://employee-service
Тут указывается название под которым сервис зарегистрирован в Еврике. Так же мы можем посмотреть список зарегестрированных маршрутов через actuator. Для это в конфиг приложения нам надо добавить:

management:
  endpoint:
    gateway:
      enabled=true
  endpoints:
    web:
      exposure:
        include: "*"
И тогда по адресу localhost:8080/actuator/gateway/routes у нас будет информация о маршрутах.

Комментариев нет:

Отправить комментарий