🔁 Saga Pattern в микросервисной архитектуре: можно ли обойтись без распределённых транзакций?  Выступил на онлайн-встрече "Книжного клуба .rar" — Telegram-сообщества для Java-разработчиков, где регулярно обсуждают профессиональную литературу, технологии и устраивают встречи с практикующими инженерами. 👉 @pointrar  В этот раз разбирали реализацию паттерна Saga на Java с использованием Temporal  Демо-проект на GitHub - https://github.com/RustamKuramshin/spring-boot-saga-pattern-example  Презентация мини-доклада тут  📦 Что такое Saga и зачем она нужна?  В распределённой системе аннотация Transactional не работает между сервисами. А бизнесу всё ещё нужно "всё или ничего":  если деньги списались, товар должен быть зарезервирован и доставлен. Если нет — откатить всё назад.  Saga — это паттерн, который разбивает такую бизнес-транзакцию на цепочку локальных транзакций, и если что-то идёт не так, вызывает компенсационные действия (например, вернуть деньги).  🧩 Два способа реализовать Saga  🔸 Оркестрация  Один сервис (оркестратор) управляет всей логикой: вызывает шаги, следит за результатами, вызывает компенсации.  ➕ Централизованно, легко отлаживать  ➖ Меньше изоляции между сервисами  🔸 Хореография  Сервисы реагируют на события (event-driven): "платёж прошёл" → "резервируй товар" → "создай доставку".  ➕ Слабо связанная архитектура  ➖ Сложно проследить цепочку событий и откатов  ⚙️ В Temporal реализация Saga — это workflow, в котором бизнес-процесс описывается обычным Java-кодом.  Он:  - сохраняет состояние каждого шага (event sourcing),  - автоматически повторяет activities при сбоях,  - управляет timeouts и compensation logic,  - отделяет workflow (координацию) от activity (действий).  Например, просто пишешь:  activities.makePayment();  saga.addCompensation(activities::cancelPayment); А Temporal сам заботится о повторяемости, масштабировании и отказоустойчивости.  Если интересно больше узнать про Temporal, рекомендую посмотреть доклад Петра Сальникова с JPoint. Мне повезло присутствовать в зале на самом докладе. В дискуссионной зоне Петр ответил на множество вопросов как раз в тот период когда мне нужно было самому разбираться с Temporal 😁 

#javahub_patterns
🔁 Saga Pattern в микросервисной архитектуре: можно ли обойтись без распределённых транзакций? 

Выступил на онлайн-встрече "Книжного клуба  | Сетка — новая социальная сеть от hh.ru 🔁 Saga Pattern в микросервисной архитектуре: можно ли обойтись без распределённых транзакций? 

Выступил на онлайн-встрече "Книжного клуба  | Сетка — новая социальная сеть от hh.ru
repost

12

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь