Встречается на собеседованиях • сегодня

Как реализовать гарантию доставки ровно один раз

Для гарантии доставки ровно один раз (exactly-once) можно использовать идемпотентные операции и механизмы дедупликации. Вот основные подходы:

  1. Идемпотентность - операция даёт одинаковый результат при повторных вызовах:
python
def process_order(order_id, data):
    if Order.objects.filter(id=order_id).exists():
        return  # уже обработан
    # логика обработки
  1. Токены дедупликации - генерируем уникальный ID для каждой операции:
python
from uuid import uuid4

def handle_request(request_id, data):
    if cache.get(request_id):
        return
    cache.set(request_id, True)
    # обработка данных
  1. Транзакции и журналирование - используем БД с транзакциями:
python
with transaction.atomic():
    if not Message.objects.filter(id=msg_id).exists():
        Message.objects.create(id=msg_id, ...)
        # бизнес-логика

Для распределённых систем можно использовать паттерны вроде:

  • Двухфазных коммитов
  • Outbox-паттерна
  • Подтверждений от потребителя (ack/nack)

Важно учитывать trade-off между надёжностью и производительностью.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы