Вопрос с собеседования · System design

Что означает идемпотентность операции?

JuniorНадёжность и идемпотентность
Ещё спрашивают так:
  • Что такое идемпотентная операция?
Коротко

Операция идемпотентна, если состояние после одного и нескольких выполнений одинаково — повтор безопасен.

  • Нужна, потому что сеть ненадёжна и клиент повторяет запросы без ответа
  • Речь о состоянии, а не об ответе: второй DELETE вернёт 404, но объекта нет в обоих случаях
  • «Установить статус» идемпотентно, «прибавить к балансу» — нет

А ещё Неидемпотентное делают идемпотентным ключом идемпотентности

Подробно

Свойство критично потому, что сеть ненадёжна: не получив ответа, клиент не знает, выполнилась операция или нет, и повторяет запрос. Если операция идемпотентна, повтор безвреден. Обратите внимание, что речь именно о состоянии системы, а не об одинаковом ответе: повторное удаление вернёт другой код, но состояние будет тем же — объекта нет.

Что хотят услышать

  • Определение через состояние.
  • Зачем: повторы при ненадёжной сети.
  • Примеры идемпотентных и неидемпотентных операций.

Частые ошибки

  • Требовать одинакового ответа вместо одинакового состояния.
  • Считать идемпотентность синонимом атомарности.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Повтор с теми же данными не меняет итог по сравнению с однократным вызовом
  • ✗Операция выполняется атомарно и не может прерваться
  • ✗Операция всегда возвращает одинаковый ответ независимо от текущего состояния системы
  • ✗Операция не может завершиться ошибкой

Что спросят дальше

  • Как сделать идемпотентным создание ресурса?
  • Почему это свойство обязательно при повторах и at-least-once доставке?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования