Микросервисы со Spring Boot. Часть 5. Использование сервера имен Eureka

от автора

В этой заключительной части нашей серии архитектур микросервисов мы научимся включать сервер имен Eureka и позволять микросервисам взаимодействовать с ним.

Это статья входит в серию статей «Микросервисы со Spring Boot»:

В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.

Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka (Eureka Naming Server) и Ribbon для балансировки нагрузки на стороне клиента.

В этой части мы сконцентрируемся на включении Eureka Naming Server и обеспечим взаимодействие микросервисов с ним.

Вы изучите:

  • Для чего нужен сервер имен?
  • Что такое Эврика?
  • Как сервер имен обеспечивает прозрачность местонахождения между микросервисами?

В 2 и 3 частях мы создали два микросервиса и установили связь между ними.

В части 4 мы использовали Ribbon для распределения нагрузки между двумя экземплярами Forex сервиса. Тем не менее, мы жестко кодируем URL обоих экземпляров сервиса Forex в CCS. Это означает, что каждый раз, когда появляется новый экземпляр FS, нам нужно будет изменить конфигурацию CCS. Это не круто.

В этой части мы будем использовать Eureka Naming Server для решения этой проблемы.

Вам понадобятся:

  • Maven 3.0+ — ваш инструмент для сборки
  • Ваш любимый IDE. Мы используем Eclipse.
  • JDK 1.8+

Готовый проект Maven с примерами кода

В Github репозитории есть все примеры кода.

Создание проекта загрузки сервера имен Eureka с помощью Spring Initializr

Создание сервера имен Eureka с помощью Spring Initializr — это очень просто. Spring Initializr: start.spring.io — отличный инструмент для быстрого создания ваших проектов Spring Boot.

С помощью Spring Initializr вы можете создавать самые разные проекты.

Для создания проекта веб-сервисов необходимо выполнить следующие шаги:

1. Запустите Spring Initializr и выберите следующее:

  • Наберите com.in28minutes.springboot.microservice.eureka.naming.server в качестве группы
  • Наберите в качестве артефакта spring-boot-microservice-eureka-naming-server
  • Выберите следующие зависимости:

— Eureka
— DevTools

2. Нажмите Generate Project.

3. Импортируйте проект в Eclipse: File -> Import -> Existing Maven Project.

Не забудьте указать Eureka в зависимостях.

Включение Eureka

Включите EurekaServer в SpringBootMicroserviceEurekaNamingServerApplication.

@SpringBootApplication @EnableEurekaServer public class SpringBootMicroserviceEurekaNamingServerApplicatio

Настройте имя приложения и порт для сервера Eureka:

/spring-boot-microservice-eureka-naming-server/src/main/resources/application.properties

spring.application.name=netflix-eureka-naming-server server.port=8761 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false

Запуск сервера имен Eureka

Запустите SpringBootMicroserviceEurekaNamingServerApplication как Java приложение.

Вы можете видеть статус запущенного сервера Eureka по адресу

http://localhost:8761

Вы увидите, что к Eureka еще не подключено ни одного экземпляра:

Подключите микросервисы FS и CCS к Eureka

Сделайте эти изменения для обоих микросервисах:

  • Добавьте следующую зависимость в pom.xml:
    <dependency> 	<groupId>org.springframework.cloud</groupId> 	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>

  • Настройте Eureka URL в application.properties:
    eureka.client.service-url.default-zone=http://localhost:8761/eureka

Перезапустите все экземпляры CCS и FS. Вы увидите, что микросервисы CCS и FS зарегистрированы на сервере имен Eureka. Это классно!

На этом снимке экрана показано, как запустить дополнительный экземпляр сервиса Forex на 8081.

Вы видите, что один экземпляр CCS и два экземпляра микросервисов FS зарегистрированы на сервере имен Eureka.

Маршрутизация запросов Ribbon через Eureka

Все, что вам нужно сделать, это удалить следующую конфигурацию
в application.properties:

forex-service.ribbon.listOfServers=localhost:8000,localhost:8001

Перезапустите экземпляр CCS.

Eureka в действии

В настоящее время у нас есть следующие сервисы:

  • Микросервис конвертации Валют (CCS) на 8100
  • Два экземпляра микросервиса Forex на 8000 и 8001
  • Eureka Server запущен

Теперь вы увидите, что запросы к CCS будут распределяться между двумя экземплярами микросервиса Forex с помощью Ribbon через Eureka.

Запрос 1

GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000

{   id: 10002,   from: "EUR",   to: "INR",   conversionMultiple: 75,   quantity: 10000,   totalCalculatedAmount: 750000,   port: 8000, }

Запрос 2

GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000

{   id: 10002,   from: "EUR",   to: "INR",   conversionMultiple: 75,   quantity: 10000,   totalCalculatedAmount: 750000,   port: 8001, }

Вы можете заметить, что номера портов в двух ответах различны.

Упражнение: Запустите еще один экземпляр сервиса Forex на 8002. Вы увидите, что нагрузка автоматически перенаправляется на него.

Здорово! Это круто, не правда ли?

Резюме

Мы создали два микросервиса и установили связь между ними.

Мы используем ленту для распределения нагрузки между двумя экземплярами сервиса Forex и Eureka в качестве сервера имен. Когда мы запустим новые экземпляры сервиса Forex, вы увидите, что нагрузка автоматически распределяется между ними.

Идея этой серии из пяти статей состояла в том, чтобы придать микросервисам возможности Spring Boot и Spring Cloud.

Существует множество возможностей для использования микросервисов. До следующего раза.

Полный пример кода для этого проекта можно найти в репозитории GitHub.

ссылка на оригинал статьи https://habr.com/ru/post/486126/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *