digital-garden/knowledge/dev/архитектура/паттерн/Транзакционный аутбокс.md

16 lines
2.2 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
- транзакционный аутбокс
tags:
- зрелость/🌱
date: "[[2023-10-26]]"
zero-link:
- "[[00 Архитектура ПО]]"
parents:
linked:
---
Транзакционный аутбокс - это шаблон проектирования программного обеспечения, который обеспечивает надежную обработку сообщений в распределенной системе. Этот шаблон обеспечивает гарантию "точно-однажды" (exactly-once) обработки сообщения, что означает, что сообщение будет обработано только один раз, независимо от возможных сбоев или перезапусков системы.
Основная идея транзакционного аутбокса заключается в том, что каждое действие, которое требует отправки сообщения в распределенной системе, должно быть выполнено в рамках одной транзакции вместе с действием записи этого сообщения в "аутбокс" (исходящий ящик) в базе данных. Затем отдельный процесс или служба ("диспетчер аутбокса") периодически сканирует аутбокс и отправляет сообщения. Если сообщение успешно отправлено, оно удаляется из аутбокса.
Этот шаблон помогает обеспечить надежность и устойчивость к сбоям в распределенных системах, где сетевые проблемы, сбои оборудования и другие проблемы могут привести к потере или дублированию сообщений. Транзакционный аутбокс гарантирует, что каждое сообщение будет обработано точно один раз, даже если произойдет сбой или перезапуск системы.