advanced
Write-behind
Buffer writes through cache or queue only when durability, ordering, replay, and loss handling are designed. Всегда проговаривайте freshness и invalidation.
Write-behind (write-back) подтверждает запись в кеш сразу и асинхронно сбрасывает в БД пакетами. Снижает write latency и сглаживает всплески, но риск потери при падении кеша до flush без WAL или репликации.
Нужны гарантии порядка, replay после сбоя и backpressure, когда БД не успевает. Подходит для счётчиков просмотров или сессий с допустимой потерей — опасно для денег без тщательного дизайна.
На интервью: write-behind для счётчика просмотров, окно потери при crash и меры durability.
Типовые ошибки: неограниченный буфер записи; lag flush и большой recovery replay; write-behind для движения денег.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Допустимое окно потери.
- WAL до ack при нужной durability.
- Batch и rate-limit flush в БД.
- Мониторинг lag flush и глубины буфера.