SYSTEM ATLASЗагрузка материала

Идемпотентность

Idempotency

Повторное выполнение одной операции не меняет результат после первого успешного выполнения.

Простыми словами

Представьте, что после нажатия «Оплатить» телефон повторил запрос из-за плохой связи. Хорошо спроектированная операция узнает повтор и не спишет деньги второй раз. Поэтому для опасных повторов используют стабильный ключ запроса и возвращают уже полученный результат вместо нового бизнес-действия.

Формальное определение

В математике операция f идемпотентна, если f(f(x)) = f(x). В инженерной системе повтор одного логического запроса должен приводить к состоянию, эквивалентному состоянию после одного успешного выполнения, хотя ответы и побочные журналы могут отличаться.

Механизм действия

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

Пример в работе

Нерабочий подход

POST /pay каждый раз списывает деньги без ключа операции.

Системный подход

Клиент передает idempotency key, а сервер возвращает результат уже обработанной операции.

Ограничения

Идемпотентность описывает повторение одной операции при тех же условиях; она не гарантирует отсутствие побочных эффектов, гонок или дедупликации разных запросов.

Источник

Internet Engineering Task Force, “HTTP Semantics”, 2022.

Первоисточник