Идемпотентные ключи при распределенных вызовах в Go.

Ответ

Клиент генерирует уникальный ключ (idempotency key) и шлет с запросом; сервер кеширует результат по ключу и при повторном запросе с тем же ключом возвращает сохраненный ответ. В Go: middleware извлекает ключ из заголовка, проверяет хранилище (Redis, БД); при совпадении - возврат кеша, иначе выполнение handler и сохранение. Защита от дублей при ретраях и таймаутах.

key := r.Header.Get("Idempotency-Key")
if key == "" { ... }
if cached := store.Get(key); cached != nil { writeCached(w, cached); return }
resp := handle(r)
store.Set(key, resp, ttl)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.