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

Версия 1.11 от Alexandr Fokin на 2023/08/24 13:12
Предупреждение: Из соображений безопасности документ отображается в ограниченном режиме, поскольку это не текущая версия. Из-за этого могут быть расхождения и ошибки.

 

 
  1. Берем элемент (не блокируя) (фиксируем version/timestamp)
  2. Производим обработку.
  3. Атомарно проверяем, что version/timestamp не изменился.
    (иначе:
    ошибка
    /повторная попытка обработки на основании новой версии данных
    /игнорирования, что исходные данные изменились с момента начала обработки
  4. Сохраняем элемент.
 Compare and swap (CAS)
 
  • Плохо подходит для ситуации, когда ресурс блокируется часто (плохо работает, приводит к повышенной нагрузке вычислений т.к. постоянно перевыполняется блок обработки). Предполагается, что ресурс не будет изменен за время выполнения операции.
  • Не подходит для операций, которые не являются идемпотентными (например запросы во внешние сервисы).
  • В некоторых случаях может использовать для управления отсоединенными данными (Предполагая, что данные в основном хранилище либо не будут изменены, либо изменение отсоединенных данных будет отброшено, либо существование механизма слияния изменений основного хранилища и отсоединенного данных).

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

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

Не удалось выполнить макрос [velocity]. Причина: [The execution of the [velocity] script macro is not allowed in [xwiki:Архитектура и модели.Блокировки.Оптимистичная блокировка.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.]. Нажмите на это сообщение для получения подробной информации.