Как перейти на другой путь, используя netflix zuul? - PullRequest
1 голос
/ 09 апреля 2019

Я использую netflix zuul, встроенный в приложение весенней загрузки 1.5.x.За зуул есть несколько микросервисов.Эти микросервисы предоставляют публичные конечные точки в / public / **.

Теперь я хочу выставить эти публичные конечные точки через шлюз zuul api, но удаляя "/ public" из окончательного URL-адреса шлюза api.

Пример (ожидается) извне (запрос через zuul api gateway):

api.yourdomain.tld/path/to/service/endpoint

Zuul должен переслать этот запрос (с / public в URL):

service:{port}/public/path/to/service/endpoint

Как мне добиться этого без использования параметра URL в конфигурации zuul.Я хотел бы положиться на внутреннюю балансировку нагрузки на стороне клиента с использованием параметров serviceId .Я не мог понять это.

Если это не очень хорошая модель, я должен разделить свои микросервисы на веб-сервисы и основные сервисы?Так что только веб-сервисы монтируются / доступны через Zuul?

Эта конфигурация работает нормально, но использует вместо параметра serviceId параметр url:

    custom-service:
      path: /path/to/service/endpoint/**
      stripPrefix: false
      url: http://custom-service:51022/public
      sensitiveHeaders:

1 Ответ

0 голосов
/ 10 апреля 2019

Требуется обнаружение службы через Spring Cloud Netflix Eureka , отметьте Введение и Как объявить маршруты с помощью serviceId

После настройки этого, включите прокси-сервер zuul и клиент обнаружения в приложении zuul

@EnableZuulProxy
@EnableDiscoveryClient
@SpringBootApplication
public class ZuulProxyApplication {

   public static void main(String[] args) {
       SpringApplication.run(ZuulProxyApplication.class, args);
   }
}

than:

eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=true

Приложение Zuul не нужно регистрировать в Eureka, и оно должно получить реестр.

И чем вы можете сказать:

zuul:
  routes:
    custom-service:
      path: /path/to/service/endpoint/**
      stripPrefix: false
      serviceId: customServiceId

Если вы хотите задать несколько маршрутов для одной услуги, выполните:

zuul:
  routes:
    custom-service:
      path: /path/to/service/endpoint/**
      stripPrefix: false
      serviceId: customServiceId
    custom-service:
      path: /second_path/to/service/endpoint/**
      stripPrefix: false
      serviceId: customServiceId
...