Идемпотентность действий в микросервисе

Идемпотентными должны быть повторяемые изменения: создание по ключу запроса, запись URL, обработка событий и очистка. Аналитические переходы нельзя бездумно дедуплицировать по ссылке.

Короткий ответ

Что ответить на собеседовании

Идемпотентными должны быть повторяемые изменения: создание по ключу запроса, запись URL, обработка событий и очистка. Аналитические переходы нельзя бездумно дедуплицировать по ссылке.

Подробный разбор

Ответ с пояснениями

Условие

В архитектуре рассматриваются основные элементы: TinyUrl (POST/GET), API‑Gateway, кэш, шарды SQL‑баз, очередь, аналитика и внешний сервис генерации ссылок. Необходимо определить, какие из этих операций должны быть идемпотентными.

Ответ

Идемпотентными должны быть повторяемые изменения: создание по ключу запроса, запись URL, обработка событий и очистка. Аналитические переходы нельзя бездумно дедуплицировать по ссылке.

POST создания получает idempotency key: одинаковый ключ с тем же содержимым возвращает прежнюю ссылку, а не новую. Результат генератора либо устойчиво связывают с ключом операции, либо допускают неиспользованные ID, не создавая дубликатов записей.

GET читает отображение; повтор может означать новый реальный переход. Поэтому аналитика дедуплицирует повторную доставку одного события по event_id, но не разные посещения одного short code. Удаление просроченного ключа и установка определённого значения кеша естественно повторяемы; инкремент счётчика — нет. Retries gateway не должны повторять небезопасный POST без такого контракта.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее