Давайте изучим основы микросервисных и микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса с Spring Boot. Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka и ленты для балансировки нагрузки на стороне клиента.
Это часть 4 этой серии. В этой части мы сосредоточимся на использовании ленты для балансировки нагрузки.
Микросервисы с Spring Boot
- Часть 1. Начало работы с архитектурой микросервисов
- Часть 2 — Создание форекс микросервиса
- Часть 3 — Создание микросервиса конвертации валют
- Текущая часть — Часть 4 — Использование ленты для балансировки нагрузки
- Часть 5. Использование сервера имен Eureka
Ты выучишь:
- Что нужно для балансировки нагрузки?
- Что такое лента?
- Как добавить ленту в проект Spring Boot?
- Как включить и настроить ленту для балансировки нагрузки?
Обзор микросервисов
В предыдущих двух частях мы создали микросервисы и установили связь между ними.
Перейдите по адресу http: // localhost: 8100 / конвертер валют-feign / от / EUR / до / INR / количество / 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);
}
Это означает, что при запуске новых экземпляров Forex Service у нас нет возможности распределить нагрузку на них.
В этой части давайте теперь включим распределение нагрузки на стороне клиента с помощью ленты.
Инструменты вам понадобятся:
- Maven 3.0+ — ваш инструмент для сборки
- Ваш любимый IDE. Мы используем Eclipse.
- 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
Запустите сервис Forex на 8001
На предыдущем шаге мы настроили ленту для распределения нагрузки по экземплярам. Однако у нас нет ни одного экземпляра Forex Service, работающего на 8001.
Мы можем запустить его, настроив конфигурацию запуска, как показано на рисунке ниже:
Лента в действии
В настоящее время у нас есть следующие сервисы:
- Конвертер валют микросервис (CCS) на 8100
- Два экземпляра микросервиса Форекс на 8000 и 8001
Теперь вы увидите, что запросы к CCS будут распределяться между двумя экземплярами микросервиса Forex через Ribbon.
Запрос 1
Перейдите по адресу http: // localhost: 8100 / конвертер валют-feign / от / EUR / до / INR / количество / 10000
Запрос 2
Перейдите по адресу http: // localhost: 8100 / конвертер валют-feign / от / EUR / до / INR / количество / 10000
Вы можете видеть, что номера портов в двух ответах различны.
Резюме
Мы создали два микросервиса и установили связь между ними.
Мы используем ленту для распределения нагрузки между двумя экземплярами сервиса Forex.
Однако мы жестко кодируем URL обоих экземпляров FS в CCS. Это означает, что каждый раз, когда появляется новый экземпляр FS, нам нужно будет изменить конфигурацию CCS. Это не круто.
В следующей части мы будем использовать Eureka Naming Server для решения этой проблемы.