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

Создание сервера имен Eureka с помощью Spring Initializr — это очень просто. Spring Initializr: start.spring.io — отличный инструмент для быстрого создания ваших проектов Spring Boot.
С помощью Spring Initializr вы можете создавать самые разные проекты.
Для создания проекта веб-сервисов необходимо выполнить следующие шаги:
1. Запустите Spring Initializr и выберите следующее:
— Eureka
— DevTools
2. Нажмите Generate Project.
3. Импортируйте проект в Eclipse: File -> Import -> Existing Maven Project.
Не забудьте указать Eureka в зависимостях.
Включите EurekaServer в SpringBootMicroserviceEurekaNamingServerApplication.
Настройте имя приложения и порт для сервера Eureka:
Запустите SpringBootMicroserviceEurekaNamingServerApplication как Java приложение.
Вы можете видеть статус запущенного сервера Eureka по адресу
Вы увидите, что к Eureka еще не подключено ни одного экземпляра:

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

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

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

Все, что вам нужно сделать, это удалить следующую конфигурацию
в application.properties:
Перезапустите экземпляр CCS.
В настоящее время у нас есть следующие сервисы:
Теперь вы увидите, что запросы к CCS будут распределяться между двумя экземплярами микросервиса Forex с помощью Ribbon через Eureka.
Вы можете заметить, что номера портов в двух ответах различны.
Упражнение: Запустите еще один экземпляр сервиса Forex на 8002. Вы увидите, что нагрузка автоматически перенаправляется на него.
Здорово! Это круто, не правда ли?
Мы создали два микросервиса и установили связь между ними.

Мы используем ленту для распределения нагрузки между двумя экземплярами сервиса Forex и Eureka в качестве сервера имен. Когда мы запустим новые экземпляры сервиса Forex, вы увидите, что нагрузка автоматически распределяется между ними.
Идея этой серии из пяти статей состояла в том, чтобы придать микросервисам возможности Spring Boot и Spring Cloud.
Существует множество возможностей для использования микросервисов. До следующего раза.
Полный пример кода для этого проекта можно найти в репозитории GitHub.
Это статья входит в серию статей «Микросервисы со Spring Boot»:
- Часть 1. Начало работы с архитектурой микросервисов
- Часть 2. Создание микросервиса Forex
- Часть 3. Создание микросервиса конвертации валют
- Часть 4. Использование Ribbon для балансировки нагрузки
- Часть 5. Использование сервера имен Eureka
В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью 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.