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

Однако мы захардкодили 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); }
Это означает, что при запуске новых экземпляров Forex сервис у нас нет возможности распределить нагрузку на них.
В этой части давайте теперь включим распределение нагрузки на стороне клиента с помощью Ribbon.
Вам понадобятся:
- Maven 3.0+ — ваш инструмент для сборки
- Ваш любимый IDE. Мы используем Eclipse.
- JDK 1.8+
Готовый проект Maven с примерами кода
В Github репозитории есть все примеры кода.
Включение Ribbon
Добавьте Ribbon зависимость в 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
Запустите сервис Forex на 8001
На предыдущем шаге мы настроили Ribbon для распределения нагрузки по экземплярам. Однако у нас нет ни одного экземпляра Forex Service, работающего на 8001.
Мы можем запустить его, настроив конфигурацию запуска, как показано на рисунке ниже:

Ribbon в действии
В настоящее время у нас есть следующие сервисы:
- Конвертер валют микросервис (CCS) на 8100
- Два экземпляра микросервиса Forex на 8000 и 8001
Теперь вы увидите, что запросы к CCS будут распределяться между двумя экземплярами микросервиса Forex через 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
Вы можете заметить, что номера портов в двух ответах различны.
Резюме
Мы создали два микросервиса и установили связь между ними.

Мы используем Ribbon для распределения нагрузки между двумя экземплярами сервиса Forex.
Однако мы жестко кодируем URL обоих экземпляров FS в CCS. Это означает, что каждый раз, когда появляется новый экземпляр FS, нам нужно будет изменить конфигурацию CCS. Это не круто.
В следующей части мы будем использовать Eureka Naming Server для решения этой проблемы.
ссылка на оригинал статьи https://habr.com/ru/post/485608/
Добавить комментарий