Артем Савенков
Главный архитектор в Т1 Иннотех · 01.07
Новый пост на канале: https://t.me/legko_v_it/344
Хочу продолжить нашу тему про транзакции рассказом об архитектурном паттерне Saga а так же про два подхода к управлению микросервисами: хореографию и оркестрацию. Они помогают организовать взаимодействие между сервисами в сложных системах.
Хореография В хореографии каждый микросервис сам знает, что делать и когда. Представь танец, где каждый танцор знает свои движения и выполняет их, реагируя на других танцоров. В контексте микросервисов это означает, что каждый сервис сам принимает решения на основе событий, которые он получает.
Плюсы: * Меньше центрального управления, что делает систему более гибкой. * Сервисы меньше зависят друг от друга.
Минусы: * Сложнее отлаживать и понимать, что происходит в системе. * Требуется хорошо продуманная схема событий. * Оркестрация
Оркестрация Наоборот, похожа на оркестр с дирижёром. Здесь есть центральный сервис (оркестратор), который управляет всеми другими сервисами, указывая, что и когда делать. Оркестратор следит за последовательностью выполнения задач и координирует все действия.
Плюсы: * Более понятная и контролируемая структура. * Легче отлаживать и отслеживать выполнение процесса.
Минусы: * Централизованное управление может стать узким местом. * Увеличенная зависимость от оркестратора.
Пример в контексте Saga Возьмём тот же пример с интернет-магазином.
Хореография: Сервис заказа создает заказ и публикует событие "order_created". Сервис проверки наличия товара ждет это событие, проверяет наличие и публикует событие "stock_confirmed". Сервис оплаты слушает "stock_confirmed" и проводит оплату, публикуя "payment_processed". Если что-то пойдет не так, каждый сервис отправляет свои "компенсирующие" события, отменяющие его действия.
Оркестрация: Оркестратор начинает процесс, отправляя команду сервису заказа. Получив подтверждение, оркестратор командует сервису проверки наличия товара. После проверки оркестратор отправляет команду на оплату. В случае ошибки оркестратор сам инициирует откат.
В итоге, оба подхода имеют свои сильные и слабые стороны, и выбор между ними зависит от конкретных требований и архитектуры системы.
еще контент автора
еще контент автора
Артем Савенков
Главный архитектор в Т1 Иннотех · 01.07
войдите, чтобы увидеть
и подписаться на интересных профи