Это четвертая часть серии статей о микросервисных архитектурах, в которой мы сосредоточимся на использовании ленты для балансировки нагрузки.
Эта статья входит в серию «Микросервисы с Spring Boot»:
- Часть 1. Начало работы с архитектурой микросервисов
- Часть 2. Создание микросервиса Форекс
- Часть 3. Создание микросервиса конвертации валют
- Часть 4. Использование ленты для балансировки нагрузки
- Часть 5. Использование сервера имен Eureka
Мы также начнем рассматривать базовую реализацию микросервиса с помощью 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,
}
Когда мы запустим вышеуказанный сервис, вы увидите, что запрос также отправляется в сервис Форекс.
Это здорово! Мы создали два микросервиса и установили между ними соединение.
Однако мы жестко запрограммировали 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.
Мы можем запустить его, настроив конфигурацию запуска, как показано на изображении ниже:
Лента в действии
На данный момент у нас есть следующие услуги:- Микросервис конвертера валют (CCS) на 8100
- Два экземпляра микросервиса Форекс на 8000 и 8001.
Запрос 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 для решения этой проблемы.
Теги: #api #java #микросервисы #spring boot
-
Системы Сбора Данных И Исследования
19 Oct, 24 -
Темный Ритуал
19 Oct, 24 -
Яндекс Опубликовал Обзор Рынка Ит-Вакансий
19 Oct, 24 -
Обзор Сервисов Микроблогов. Часть 1
19 Oct, 24 -
Безопасная Платежная Карта Своими Руками
19 Oct, 24