TGViewer
ТехнофITнес | Никита Ульшин ТехнофITнес | Никита Ульшин @tech_fit · 262 subscribers
Post #32 334
Исправляем дублирование запросов к API

Меня безумно порадовала первая же строка этой статьи:

«Первое правило распределённых систем — не превращайте свою систему в распределённую.»


Эти слова хочется написать на лбу стене офиса, чтобы некоторые инженеры не забывали о том, какие проблемы несёт создание распределённых систем.

Одна из таких проблем — дублирующие запросы к API. Распределённые системы лишены ACID-транзакций (в лучшем случае можно применить сагу), поэтому дублирующие запросы на чувствительные операции могут вызвать трудноустранимые баги. Решением является идемпотентность, которой и посвящена статья.

⭐️ Интересные идеи

➡️ Идемпотентность — это свойство операций, которое позволяет применять их многократно без изменения конечного состояния приложения. Идемпотентны методы GET, PUT, DELETE, HEAD, OPTIONS и TRACE. POST и PATCH не являются идемпотентными.

➡️ Для обеспечения идемпотентности используется отслеживание пар ключ–запрос. Ключ генерируется на клиенте для каждого запроса и называется ключом идемпотентности.

➡️ Для ключа идемпотентности предусмотрен специальный HTTP-заголовок Idempotency-Key. Он принимает строку; в качестве примера спецификация использует UUID.

➡️ Спецификация также описывает обработку ошибок. Указаны три статуса:
🟡400 — не указан ключ идемпотентности
🟡422 — ключ идемпотентности уже использован
🟡409 — запрос с указанным ключом идемпотентности уже обрабатывается

Приятного чтения!

#systemdesign@tech_fit
➖➖➖➖➖➖➖➖➖➖➖
// Понравился пост? Ставь 💛
// И обязательно подпишись на канал, чтобы не пропустить новые статьи
Medium Fixing duplicate API requests The first rule of distributed systems is “Don’t distribute your system”. Designing distributed systems right is infamously hard for…
  • 🔥 7
  • ⚡ 2
  • 👍 2
More from @tech_fit
  1. Oct 13, 2025Почему Uber переехал с Postgres на MySQL Интересная статья о том, какие проблемы в Postgre…
  2. Oct 6, 2025Паттерн Bulkhead Продолжаю читать статьи про паттерны отказоустойчивых приложений. На очер…
  3. Oct 1, 2025Как сервера договариваются друг с другом: алгоритм распределённого консенсуса Raft Распред…
  4. Sep 29, 2025Микросервисы не подходят стартапам Интересная статья, которая в очередной раз напоминает о…
  5. Aug 25, 2025Сколько партиций в Kafka мне нужно? Партиции — это одна из важнейших частей Kafka. С их по…
  6. Aug 18, 2025Роадмап архитектора Как вы знаете, иногда я тут делюсь не обзорчиками, а вполне прикладным…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →