2.39M
Категория: ПрограммированиеПрограммирование

Java Department – Microservices in action

1.

MODERN SOFTWARE ENGINEERING FOR YOUR NEEDS
Java Department – Microservices in action
Boukun Maksim
28 Nov 2023

2.

Agenda
Взгляд на микросервисы как эффективный подход к построению
приложений
Коммуникация между микросервисами
Service Discovery
Load Balancing
Netflix Eureka
Fault-tolerance pattern
Заключение
Вопросы и ответы

3.

Взгляд на микросервисы как эффективный подход к
построению приложений
Архитектурный стиль микросервисов — это подход, при котором единое
приложение строится как набор небольших сервисов, каждый из которых
работает в собственном процессе и коммуницирует с остальными используя
легковесные механизмы, как правило HTTP.

4.

Коммуникация между микросервисами
Сервисы взаимодействуют друг с другом с помощью множества различных
типов коммуникации. В основном эти виды коммуникаций можно
классифицировать по двум осям.
Синхронный и асинхронный

5.

Коммуникация между микросервисами
Выбор между синхронными и асинхронными запросами зависит от
конкретных требований вашего приложения и контекста использования.
Синхронные запросы:
•Преимущества:
• Проще в использовании и
понимании, особенно для
синхронных операций.
• Более прямой и
последовательный код.
•Сценарии использования:
• Подходят для простых
приложений, где блокировка
выполнения не приводит к
проблемам с
производительностью.
Асинхронные запросы:
•Преимущества:
• Эффективное использование ресурсов, так
как не блокируют поток выполнения.
• Подходят для сценариев с большим
числом одновременных запросов, где
блокировка может привести к ухудшению
производительности.
•Сценарии использования:
• Рекомендуются в микросервисной
архитектуре, где асинхронная
коммуникация может улучшить
отзывчивость системы.
• Подходят для приложений, где важна
параллельная обработка множества задач.

6.

Коммуникация между микросервисами
Одним из способов коммуникации является использование протокола http.
Асинхронная
WebClient:
WebClient - реактивный клиент для
выполнения асинхронных HTTP-запросов.
Синхронный:
RestTemplate:
RestTemplate - стандартный
способ выполнения
синхронных HTTP-запросов

7.

Коммуникация между микросервисами
WebClient
Существует два способа создания веб-клиента.

8.

Коммуникация между микросервисами
WebClient

9.

Service Discovery
Service Discovery (обнаружение
сервисов)
это
концепция
в
распределенных вычислениях, где
сервисы в сети могут динамически
находить друг друга. Она играет
важную
роль
в
построении
микросервисных архитектур и в
обеспечении
их
гибкости
и
масштабируемости.

10.

Service Discovery

11.

Service Discovery
В мире микросервисной архитектуры существует несколько популярных
реализаций Discovery Server, предоставляющих инструменты для регистрации,
поиска и управления микросервисами. Вот несколько из них:
1.
2.
3.
4.
Spring Cloud Eureka
Spring Cloud Consul
Zookeeper
И т. д.

12.

Load Balancing
Load Balancer помогает распределить нагрузку
между несколькими экземплярами сервиса.

13.

Netflix Eureka
Eureka — это инструмент регистрации микросервисов, разработанный Netflix с
открытым исходным кодом.
Сервер Eureka сам по себе
является микросервисом, который
используется для регистрации и
хранения местонахождения других
микросервисов в той же системе.
Службы регистрируются на сервере,
где их могут идентифицировать и
найти другие микрослужбы, когда это
необходимо.

14.

Netflix Eureka
Настройка в проекте

15.

Netflix Eureka
Настройка в проекте

16.

Netflix Eureka
Настройка в проекте

17.

Netflix Eureka
Настройка в проекте

18.

Fault-tolerance patterns
Это очень важно при проектировании и эксплуатации надежных систем,
особенно в мире микросервисных архитектур. По сути, отказоустойчивость
означает, что система может продолжать работать и предоставлять услуги, даже
если что-то пойдет не так. Проблемы могут возникнуть по-разному, включая сбои
оборудования, сбои программного обеспечения, проблемы с сетью и даже
человеческие ошибки.
Ключевой принцип – проектировать на провал. Это означает признание того,
что ошибки произойдут, и планирование их устранения. Если вы ожидаете, что
компонент или служба может выйти из строя в любой момент, вы можете заранее
реализовать стратегии по смягчению его воздействия.

19.

Fault-tolerance patterns
Circuit Breaker Pattern
В шаблоне «Выключатель» обсуждаются 3 основных состояния:
CLOSED
OPEN
HALF OPEN

20.

Fault-tolerance patterns
Circuit Breaker Pattern

21.

Fault-tolerance patterns
Circuit Breaker Pattern

22.

Fault-tolerance patterns
Retry pattern
Шаблон повтора (Retry pattern) представляет собой механизм для обработки
временных сбоев при выполнении операции, путем повторного выполнения этой
операции с определенной задержкой в случае ее неудачи.

23.

Fault-tolerance patterns
Retry pattern

24.

Fault-tolerance patterns
Rate-limiter patter
"Rate limiter" — это паттерн, который используется для ограничения
количества запросов, которые могут быть выполнены в течение определенного
периода времени.

25.

Заключение

26.

Вопросы и ответы

27.

Всем спасибо за внимание!!!
English     Русский Правила