Повтор запроса и долгий ответ

Сеть рвётся посреди операции. Нажмите кнопку дважды и посмотрите, что окажется в базе — с ключом идемпотентности и без него.

Нажмите на участок схемы, чтобы открыть шаг.

Картина целиком

Ключ на операцию превращает повтор из второго списания в чтение готового результата. Асинхронный контракт превращает ожидание в подписку. Оба приёма про одно и то же: сеть ненадёжна, и это норма, а не исключение.

Что внутри

  1. 1 Запрос и обрыв связи — Включите «сломать сеть после списания» и нажмите кнопку дважды.
  2. 2 Что делает сервер — Ключ придумывает клиент, один на операцию, и повторяет его при каждом ретрае.
  3. 3 Без ключа — дубликаты — Ретраи делают не только люди: их делают браузер, прокси и очередь задач.
  4. 4 С ключом — одна запись — Строка с ключом создаётся до самого действия, иначе два одновременных ретрая проскочат мимо друг друга.
  5. 5 Долгий ответ: 504 или 202 — Для потока у прокси должна быть выключена буферизация, иначе ответ придёт одним куском в самом конце.

Интерактивные статьи

1 / 5