digital-garden/knowledge/dev/архитектура/паттерн/Транзакционный аутбокс.md
2024-06-13 21:01:37 +03:00

2.2 KiB
Raw Permalink Blame History

aliases tags date zero-link parents linked
транзакционный аутбокс
зрелость/🌱
2023-10-26
00 Архитектура ПО

Транзакционный аутбокс - это шаблон проектирования программного обеспечения, который обеспечивает надежную обработку сообщений в распределенной системе. Этот шаблон обеспечивает гарантию "точно-однажды" (exactly-once) обработки сообщения, что означает, что сообщение будет обработано только один раз, независимо от возможных сбоев или перезапусков системы.

Основная идея транзакционного аутбокса заключается в том, что каждое действие, которое требует отправки сообщения в распределенной системе, должно быть выполнено в рамках одной транзакции вместе с действием записи этого сообщения в "аутбокс" (исходящий ящик) в базе данных. Затем отдельный процесс или служба ("диспетчер аутбокса") периодически сканирует аутбокс и отправляет сообщения. Если сообщение успешно отправлено, оно удаляется из аутбокса.

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