TGViewer
Java: fill the gaps Java: fill the gaps @java_fillthegaps · 12.3K subscribers
Post #574 12.4K
Распределенные транзакции

Кукусики, спасибо за огоньки к прошлому посту! Очень приятно, вижу, что цените качественный контент🥰

А теперь к делу. В посте про сагу мы сформулировали, что она нужна для распределенных транзакций. Если на собесе упоминается термин “распределенная транзакция”, грех не спросить, что же это такое.

Удивительно, но на этом шаге многие сыпятся🤷

Транзакция — очень многозначительное понятие в айтишке, но первое, что приходит на ум — транзакции в базе данных.

Соответственно, распределённая транзакция — набор изменений в нескольких БД, которые выполняются атомарно. В любой момент времени система находится в согласованном состоянии.

— И как это, хорошо или плохо? — спрашивают вас
Чувствуете подвох, но пока не понимаете где:
— Да нормально вроде…

Интервьюер понимает, что вы опасны для проекта и ставит жирный минус.

❓ Что не так с распределенными транзакциями в БД?

Во-первых, медленно работают. Во-вторых, часто являются признаком косяков в архитектуре.

Каждый сервис выполняет задачи определенного типа. Сервис заказов работает с заказами, сервис логистики — с маршрутами и тд. Все нужные сервису данные обычно лежат в одной БД.

🚩 Распределённая транзакция в БД — это обычно знак, что мы неверно распределили функции по сервисам.

Второе значение слова транзакция — набор изменений, которые происходят атомарно. Либо все завершатся успешно либо ни одно.

Тут нет отсылок на БД, нет требования одновременности и согласованности в каждый момент времени. И это уже нормальный вариант для жизни. Если что-то пошло не так, делаем ретрай или потихоньку откатываем изменения.

Ещё раз подсвечу разницу.

🛢️ Распределённая транзакция в БД:
▫️ Данные в системе согласованы в каждый момент времени
▫️ Гарантия распространяется только на изменения в БД
▫️ Сложно и долго
▫️ Признак плохой архитектуры

🎩 Распределённая транзакция бизнес-процесса:
▫️ Eventual consistency. Однажды всё станет хорошо, но в процессе возможны несогласованные данные
▫️ Можно менять состояние не только в БД, но и в других сервисах, файлах, отправлять сообщения в месседж брокер
▫️ Не требует сложных блокировок

Термин один, а значения абсолютно разные! Обидно, когда кандидат их путает и предлагает масштабно блокировать систему, где это не требуется.
  • 🔥 220
  • 👍 50
  • ❤ 15
  • 👎 9
More from @java_fillthegaps
  1. Apr 30, 2026Get Your Hands Dirty on Clean Architecture: отзыв на книгу Когда я подняла тему чистой арх…
  2. Apr 27, 2026​Clean Architecture: отзыв на книгу Наконец-то дочитала книгу Clean Architecture Роберта М…
  3. Mar 4, 2026Как переиспользовать контекст в интеграционных тестах Сегодня расскажу базовый минимум для…
  4. Mar 4, 2026Post #660
  5. Mar 4, 2026Тестовый контекст поднимается 2 минуты. У нас 4 класса с интеграционными тестами, их конфи…
  6. Feb 25, 2026Чистая архитектура. Главы 3-5 Продолжаем спидран по Clean Architecture Роберта Мартина. ⭐️…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →