Микросервисы С Spring Boot. Часть 4. Использование Ленты Для Балансировки Нагрузки

Это четвертая часть серии статей о микросервисных архитектурах, в которой мы сосредоточимся на использовании ленты для балансировки нагрузки.

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

  • Часть 1. Начало работы с архитектурой микросервисов
  • Часть 2. Создание микросервиса Форекс
  • Часть 3. Создание микросервиса конвертации валют
  • Часть 4. Использование ленты для балансировки нагрузки
  • Часть 5. Использование сервера имен Eureka
В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud. Это руководство поможет вам изучить основы микросервисной архитектуры.

Мы также начнем рассматривать базовую реализацию микросервиса с помощью Spring Boot. Мы создадим пару микросервисов и заставим их взаимодействовать друг с другом, используя Eureka Naming Server и Ribbon для балансировки нагрузки на стороне клиента.

В этом уроке мы продолжим рассказ о том, как использовать Ribbon в качестве балансировщика нагрузки в проекте микросервисов Spring Boot.

Ты выучишь:

  • Что нужно для балансировки нагрузки?
  • Что такое лента?
  • Как добавить ленту в проект Spring Boot?
  • Как включить и настроить Ribbon для балансировки нагрузки?


Обзор микросервисов

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

  
  
  
  
  
  
  
   

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, }

Когда мы запустим вышеуказанный сервис, вы увидите, что запрос также отправляется в сервис Форекс.

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



Микросервисы с Spring Boot. Часть 4. Использование ленты для балансировки нагрузки

Однако мы жестко запрограммировали URL-адрес FS в компоненте CCS CurrencyExchangeServiceProxy.

@FeignClient(name="forex-service" url="localhost:8000") public interface CurrencyExchangeServiceProxy { @GetMapping("/currency-exchange/from/{from}/to/{to}") public CurrencyConversionBean retrieveExchangeValue (@PathVariable("from") String from, @PathVariable("to") String to); }

Это значит, что когда мы запускаем новые экземпляры сервиса Форекс, у нас нет возможности распределить на них нагрузку.

В этой части давайте теперь включим балансировку нагрузки на стороне клиента с помощью ленты.



Тебе понадобится:

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

  • JDK 1.8+


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

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



Включение ленты

Добавьте зависимость ленты в pom.xml:

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency>

Включите RibbonClient в CurrencyExchangeServiceProxy:

@FeignClient(name="forex-service") @RibbonClient(name="forex-service") public interface CurrencyExchangeServiceProxy {

Настройте экземпляры в application.properties:

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



Запустите сервис Форекс на 8001.

На предыдущем шаге мы настроили Ribbon для распределения нагрузки между экземплярами.

Однако у нас нет ни одного экземпляра службы Forex, работающего на 8001. Мы можем запустить его, настроив конфигурацию запуска, как показано на изображении ниже:

Микросервисы с Spring Boot. Часть 4. Использование ленты для балансировки нагрузки



Лента в действии

На данный момент у нас есть следующие услуги:
  • Микросервис конвертера валют (CCS) на 8100
  • Два экземпляра микросервиса Форекс на 8000 и 8001.
Теперь вы увидите, что запросы к CCS будут распределяться между двумя экземплярами микросервиса Форекс через Ribbon.

Запрос 1



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



Запрос 2



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

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



Краткое содержание

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



Микросервисы с Spring Boot. Часть 4. Использование ленты для балансировки нагрузки

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

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

Теги: #api #java #микросервисы #spring boot

Вместе с данным постом часто просматривают: