TGViewer
ИТ-архитектура ИТ-архитектура @itarchitecture · 559 subscribers
Post #307 644
Dual Write Problem

Dual Write Problem (проблема двойной записи) возникает, когда две или больше операций должны быть согласованными, но выполняются в разных системах или базах данных.

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

Что произойдёт, если приложение упадёт после сохранения данных, но до отправки события?

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

Есть два стандартных решения.

1. Использование Change Data Capture (CDC)

После записи данных в базу механизмы CDC отслеживают изменения.
Инструмент или сервис CDC затем читает эти изменения и публикует их как события в event broker.

Преимущества:
• Нет ответственности на уровне приложения: приложению не нужно публиковать события — это делает CDC-инструмент
• Надёжность: CDC тесно связан с базой данных, поэтому все зафиксированные транзакции в итоге будут обработаны и опубликованы.

Компромисс: Настройка и поддержка CDC-инструментов добавляет операционной сложности.

2. Паттерн Outbox

Паттерн Outbox сохраняет события в специальную таблицу outbox в той же транзакции, в которой изменяются данные.

Затем отдельный асинхронный процесс читает записи из этой таблицы и публикует события в event broker.

Преимущества:
• Атомарность: изменение данных и запись события происходят в одной транзакции — либо оба фиксируются, либо оба откатываются.
• Eventual Consistency (конечная согласованность): события всё равно будут опубликованы, даже если первая попытка не удалась.

Компромисс:
Появляется дополнительная "обвязка":
* таблица outbox
* процесс, который читает её и публикует события.

Важно помнить
Без распределённых транзакций мы можем строить только системы с конечной согласованностью (eventual consistency).

#pattern #eventual_consistency #cdc

На связи с вами @itarchitecture
  • 👍 7
More from @itarchitecture
  1. Jul 17, 2026https://www.youtube.com/live/N_n3AQtrfEU?si=h3IaD4Avi-LFgGMi
  2. Apr 16, 2026Technology Radar за апрель 2026 Почитал свежий Technology Radar. Если коротко: мы входим в…
  3. Feb 6, 2026День из жизни Solutions Architect #fun
  4. Jan 17, 2026Как внедряли DDD в Яндекс360 - Что такое DDD и зачем он нужен? - Какой книгой лучше всего…
  5. Jan 9, 2026🎬 Архитектура предпросмотра видео в Netflix Когда вы наводите курсор на таймлайн Netflix,…
  6. Dec 23, 2025https://youtu.be/MzNRbpF9pEU?si=xCxdS-mDzH1dvnkh
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 →