Оптимистичная блокировка

Версия 1.9 от Alexandr Fokin на 2023/05/21 09:57


  1. Берем элемент (не блокируя) (фиксируем version/timestamp)
  2. Производим обработку.
  3. Атомарно проверяем, что version/timestamp не изменился. (иначе ошибка/повторная обработка/игнорирования, что исходные данные изменились с момента начала обработки)
  4. Сохраняем элемент.

Compare and swap (CAS)


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

Внутренние ссылки:

Дочерние страницы:
Обратные ссылки:

Теги: