- PVSM.RU - https://www.pvsm.ru -
Это первая часть серии статей по основам микросервисных архитектур.
В ней вы познакомитеь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.
Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.
Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka (Eureka Naming Server) и Ribbon для балансировки нагрузки на стороне клиента.
Это статья входит в серию статей «Микросервисы со Spring Boot»:
В этом руководстве мы создадим ресурс для студентов, предоставляющий три сервиса с использованием соответствующих URI и методов HTTP:
В этой серии статей мы создадим два микросервиса:
Не беспокойтесь, если вам будут не ясны некоторые вещей. Идея состоит в том, чтобы дать вам общую картину, прежде чем мы начнем разработку и шаг за шагом создадим микросервисы.
Форекс сервис (FS, Forex Service) является поставщиком услуг. Он предоставляет стоимость обмена валюты для различных валют. Давайте предположим, что он общается с Forex Exchange и предоставляет текущую стоимость обмена между валютами. Пример запроса и ответа показан ниже:
GET to http://localhost:8000/currency-exchange/from/EUR/to/INR
{
id: 10002,
from: "EUR",
to: "INR",
conversionMultiple: 75,
port: 8000,
}
Ответ на запрос выше является обменным курсом евро к INR. В ответе ConversionMultiple равно 75.
О поле port мы поговорим чуть позже.
Сервис конвертации валют (CCS) может конвертировать множество валют в другую валюту. Он использует сервис Forex для получения текущих значений обмена валюты. CCS является потребителем услуг. Пример запроса и ответа показан ниже:
GET to http://localhost:8100/currency-converter/from/EUR/to/INR/quantity/10000
{
id: 10002,
from: "EUR",
to: "INR",
conversionMultiple: 75,
quantity: 10000,
totalCalculatedAmount: 750000,
port: 8000,
}
Запрос выше позволяет определить стоимость 10000 евро в индийских рупиях. TotalCalculatedAmount составляет 750000 INR. Диаграмма ниже показывает связь между CCS и FS.
В зависимости от нагрузки у нас может быть несколько экземпляров Сервиса конвертации валют и Сервиса Форекс.
И количество экземпляров для каждого сервиса может меняться со временем. На рисунке ниже показан конкретный пример, где созданы 5 экземпляров сервиса Forex.
Что должно произойти в вышеуказанной ситуации, так это то, что нагрузка должна быть равномерно распределена между этими 5 экземплярами.
В этой серии статей мы будем использовать Ribbon для балансировки нагрузки и сервер имен Eureka для регистрации всех микросервисов.
Вы когда-нибудь работали в проекте
Это типичные характеристики монолитных приложений.
Монолитные приложения обычно огромны — более 100 000 строк кода. В некоторых случаях даже более миллиона строк кода.
Монолиты характеризуются следующим:
Типичные проблемы включают:
Микросервисные архитектуры развивались как решение проблем масштабируемости и инноваций с монолитными архитектурами. Имеется ряд определений, предлагаемых для микросервисов.
Небольшие автономные сервисы, которые работают совместно — Сэм Ньюман (Sam Newman)
Разработка отдельного приложения в виде набора небольших сервисов, каждый из которых работает в своем собственном процессе и взаимодействует с облегченными механизмами, часто API-интерфейсом HTTP-ресурсов. Эти сервисы построены на бизнес-возможностях и могут быть развернуты независимо с помощью полностью автоматизированного механизма развертывания. Существует минимальный уровень централизованного управления этими службами, которые могут быть написаны на разных языках программирования и использовать разные технологии хранения данных — Джеймс Льюис (James Lewis) и Мартин Фаулер (Martin Fowler)
Хотя для микросервисов нет единого принятого определения, имеется несколько важных характеристик:
Вот так будет выглядеть монолит. Одно приложение для всего.
Так будет выглядеть то же приложение при разработке с использованием Microservices Architecture.
Микросервисные архитектуры включают несколько небольших, хорошо спроектированных компонентов, взаимодействующих с помощью сообщений.
Преимущества:
Хотя разработка нескольких небольших компонентов может показаться легкой, существует ряд присущих ей сложностей, связанных с архитектурами микросервисов.
Давайте рассмотрим некоторые из проблем:
Spring Boot позволяет быстро создавать готовые приложения и предоставляет предоставляетследующие нефункциональные возможности:
Spring Cloud предоставляет решения для облачной активации ваших микросервисов. Он использует и основывается на некоторых облачных решениях, созданных компанией Netflix (Netflix OSS).
— Сервера имен Eureka
— Ribbon (балансировка нагрузки на стороне клиента)
— Feign (упрощает разработку REST клиентов)
— Распределенная трассировка Zipkin
— Netflix API шлюз
В этой серии статей мы создадим два микросервиса:
Прим. перев. Автор далее частично повторяет уже сказанное. Сохранена оригинальная редакция (без удаления повторов)
Диаграмма ниже показывает связь между CCS и FS. Мы установим связь между этими двумя компонентами.
Мы хотели бы иметь возможность динамически увеличивать и уменьшать количество экземпляров каждого из этих сервисов.
И количество экземпляров для каждого сервиса может меняться со временем. На рисунке ниже показан конкретный пример, где созданы 5 экземпляров сервиса Forex.
Реализация решения для динамического масштабирования вверх и вниз требует ответа на два вопроса:
Поскольку мы хотим, чтобы это было динамичным, мы не можем жестко закодировать URL-адреса в сервисах FS в CCS. Вот почему мы вводим сервер имен.
Все экземпляры компонентов (CCS и FS) регистрируются на сервере имен Eureka. Когда FS должен вызвать CCS, он запросит Eureka Naming Server об активных экземплярах. Мы будем использовать Ribbon для балансировки нагрузки на стороне клиента между различными экземплярами FS.
Ниже приведена высокоуровневая диаграмма последовательности того, что будет происходить при запросе от CCS к FS.
Далее в этой серии статей:
Автор: val6852
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/343780
Ссылки в тексте:
[1] Источник: https://habr.com/ru/post/484130/?utm_source=habrahabr&utm_medium=rss&utm_campaign=484130
Нажмите здесь для печати.