Обращение за советом по правильному подходу к разработке на Netflix Eureka обнаруживает сервисы Spring Boot с минимальными накладными расходами

Мы запускаем среду на основе Spring Boot с примерно 15 микросервисами и пограничным шлюзом Zuul, зарегистрированным в Eureka. В настоящее время я настроил все микросервисы для вызова других микросервисов через шлюз Zuul (например, если serviceA необходимо вызвать serviceB, свойство конфигурации URL-адреса будет serviceB.baseUrl=http://zuul.mydomain.com:7001, где zuul.mydomain.com - это наш сервер разработки на AWS, а все остальные микросервисы будут работать за ним. Это). Zuul, в свою очередь, прокси-серверы к микросервисам через поиск в реестре Eureka.

Одним из преимуществ такого подхода является то, что разработчику, работающему локально на своей машине, ему просто нужно запустить свой сервис, а все другие зависимости от других сервисов доступны через шлюз Zuul на AWS (а в нашей экосистеме много таких зависимостей между службами).

Теперь мне бы очень хотелось использовать весь потенциал Eureka / Ribbon и совершать вызовы напрямую к одноранговому микросервису через его имя службы и @LoadBalanced RestTemplate, но я обнаружил, что это довольно сильно налагает на разработчика необходимость воссоздавать целую экосистему. на его машине. Как минимум, ему нужно будет запустить Eureka, свою собственную службу и любые другие службы, от которых зависит его служба. Это делает барьеры для входа в развитие излишне высокими.

Я действительно рассматривал возможность регистрации локального экземпляра разработчика в нашем сервисе Eureka на AWS, но проблема в том, что все сервисы на AWS регистрируются с использованием частного IP-адреса экземпляра EC2, который в основном недоступен с машины разработчика. Если я заставлю службу регистрироваться с использованием ее общедоступного IP-адреса, это будет означать, что мне придется использовать больше ресурсов, выделенных для каждой службы, или менять IP-адрес при каждой перезагрузке экземпляра EC2.

Я мог бы запустить локальную среду микросервисов Eureka + в локальной сети, но это означает, что мне нужно создать одну такую ​​среду для каждого офиса, в котором мы работаем, а это просто означает больше накладных расходов. В дополнение к этой проблеме это, вероятно, означало бы, что разработчик A может вызывать разработчика B наполовину готовую, еще не совсем готовую версию службы зависимостей, которая просто сбивает с толку всех, если возникает проблема (службы, которые быть развернутым в нашей среде AWS, по крайней мере, сначала проходит проверку кода перед развертыванием).

Если есть кто-нибудь, кто придумал способ упростить настройку разработчика, имея при этом возможность использовать возможности вызова одноранговых служб Feign / @LoadBalanced RestTemplate клиентов, я хотел бы получить несколько указателей в правильном направлении.


person feicipet    schedule 28.02.2017    source источник


Ответы (1)


Подтвердили, что я могу выполнить то, что хочу (а именно иметь возможность выполнять локальную разработку на клиентах RestTemplate с поддержкой Ribbon, без необходимости запускать Eureka):

  1. Заставьте Ribbon не использовать Eureka, используя следующее свойство: ribbon.eureka.enabled=false
  2. Вручную предоставьте ленте серверы, указывающие на использование следующего образца свойства: servicename.ribbon.listOfServers=test.service.com:8080
person feicipet    schedule 17.03.2017