Files
digital-garden/dev/architecture/Отправка сообщений в Kafka из транзакции БД.md
2025-01-17 15:29:17 +03:00

3.8 KiB
Raw Blame History

aliases, tags, date
aliases tags date
maturity/🌱
content/problem
2024-11-15

Взаимодействие между ../../../../_inbox/Транзакция БД и отправкой сообщений в ../../../../_inbox/00 Kafka может приводить к несогласованности данных. Пример проблемы: если сообщение отправлено в Kafka, но транзакция базы данных откатывается, сообщение останется в Kafka, тогда как база данных не зафиксирует изменений. Это вызывает рассинхронизацию между системами.

Для решения проблемы используются следующие подходы:

  • Transactional Outbox. Изменения фиксируются в основной таблице базы данных и одновременно записываются в отдельную таблицу “Outbox”. Асинхронный процесс или сервис считывает записи из “Outbox” и отправляет их в Kafka. Это позволяет отделить транзакцию базы данных от отправки сообщений и гарантировать Согласованность данных.
  • Change Data Capture (CDC). С помощью инструментов, таких как Debezium, отслеживаются изменения в базе данных. Эти изменения публикуются в Kafka в режиме реального времени. CDC подходит для автоматической синхронизации данных, но требует настройки и дополнительных ресурсов.
  • Распределённые транзакции (двухфазный коммит). Этот подход координирует транзакции между базой данных и Kafka, гарантируя Согласованность данных. Однако он считается сложным в реализации и менее масштабируемым, особенно в распределённых системах.

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

Для предотвращения дублирования используется highload/Идемпотентность на базе уникального идентификатора. Пример: каждое сообщение или транзакция сопровождается уникальным идентификатором, который проверяется перед выполнением операции. Если идентификатор уже обработан, операция пропускается.


Мета информация

Область:: ../../meta/zero/00 Архитектура ПО Родитель:: Источник:: Создана:: 2024-11-15 Автор::

Дополнительные материалы

Дочерние заметки