Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров20K
Автор оригинала: Ranga Karanam
В этой заключительной части нашей серии архитектур микросервисов мы научимся включать сервер имен 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.
Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Публикации