Идемпотентными должны быть повторяемые изменения: создание по ключу запроса, запись URL, обработка событий и очистка. Аналитические переходы нельзя бездумно дедуплицировать по ссылке.
Идемпотентность действий в микросервисе
Идемпотентными должны быть повторяемые изменения: создание по ключу запроса, запись URL, обработка событий и очистка. Аналитические переходы нельзя бездумно дедуплицировать по ссылке.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В архитектуре рассматриваются основные элементы: TinyUrl (POST/GET), API‑Gateway, кэш, шарды SQL‑баз, очередь, аналитика и внешний сервис генерации ссылок. Необходимо определить, какие из этих операций должны быть идемпотентными.
Ответ
Идемпотентными должны быть повторяемые изменения: создание по ключу запроса, запись URL, обработка событий и очистка. Аналитические переходы нельзя бездумно дедуплицировать по ссылке.
POST создания получает idempotency key: одинаковый ключ с тем же содержимым возвращает прежнюю ссылку, а не новую. Результат генератора либо устойчиво связывают с ключом операции, либо допускают неиспользованные ID, не создавая дубликатов записей.
GET читает отображение; повтор может означать новый реальный переход. Поэтому аналитика дедуплицирует повторную доставку одного события по event_id, но не разные посещения одного short code. Удаление просроченного ключа и установка определённого значения кеша естественно повторяемы; инкремент счётчика — нет. Retries gateway не должны повторять небезопасный POST без такого контракта.