Similar presentations:
Java Department – Microservices in action
1.
MODERN SOFTWARE ENGINEERING FOR YOUR NEEDSJava 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 DiscoveryService Discovery (обнаружение
сервисов)
это
концепция
в
распределенных вычислениях, где
сервисы в сети могут динамически
находить друг друга. Она играет
важную
роль
в
построении
микросервисных архитектур и в
обеспечении
их
гибкости
и
масштабируемости.
10.
Service Discovery11.
Service DiscoveryВ мире микросервисной архитектуры существует несколько популярных
реализаций Discovery Server, предоставляющих инструменты для регистрации,
поиска и управления микросервисами. Вот несколько из них:
1.
2.
3.
4.
Spring Cloud Eureka
Spring Cloud Consul
Zookeeper
И т. д.
12.
Load BalancingLoad Balancer помогает распределить нагрузку
между несколькими экземплярами сервиса.
13.
Netflix EurekaEureka — это инструмент регистрации микросервисов, разработанный Netflix с
открытым исходным кодом.
Сервер Eureka сам по себе
является микросервисом, который
используется для регистрации и
хранения местонахождения других
микросервисов в той же системе.
Службы регистрируются на сервере,
где их могут идентифицировать и
найти другие микрослужбы, когда это
необходимо.
14.
Netflix EurekaНастройка в проекте
15.
Netflix EurekaНастройка в проекте
16.
Netflix EurekaНастройка в проекте
17.
Netflix EurekaНастройка в проекте
18.
Fault-tolerance patternsЭто очень важно при проектировании и эксплуатации надежных систем,
особенно в мире микросервисных архитектур. По сути, отказоустойчивость
означает, что система может продолжать работать и предоставлять услуги, даже
если что-то пойдет не так. Проблемы могут возникнуть по-разному, включая сбои
оборудования, сбои программного обеспечения, проблемы с сетью и даже
человеческие ошибки.
Ключевой принцип – проектировать на провал. Это означает признание того,
что ошибки произойдут, и планирование их устранения. Если вы ожидаете, что
компонент или служба может выйти из строя в любой момент, вы можете заранее
реализовать стратегии по смягчению его воздействия.
19.
Fault-tolerance patternsCircuit Breaker Pattern
В шаблоне «Выключатель» обсуждаются 3 основных состояния:
CLOSED
OPEN
HALF OPEN
20.
Fault-tolerance patternsCircuit Breaker Pattern
21.
Fault-tolerance patternsCircuit Breaker Pattern
22.
Fault-tolerance patternsRetry pattern
Шаблон повтора (Retry pattern) представляет собой механизм для обработки
временных сбоев при выполнении операции, путем повторного выполнения этой
операции с определенной задержкой в случае ее неудачи.
23.
Fault-tolerance patternsRetry pattern
24.
Fault-tolerance patternsRate-limiter patter
"Rate limiter" — это паттерн, который используется для ограничения
количества запросов, которые могут быть выполнены в течение определенного
периода времени.