Оптимистичная блокировка
Версия 1.10 от Alexandr Fokin на 2023/05/21 09:57
- Берем элемент (не блокируя) (фиксируем version/timestamp)
- Производим обработку.
- Атомарно проверяем, что version/timestamp не изменился. (иначе ошибка/повторная обработка/игнорирования, что исходные данные изменились с момента начала обработки)
Сохраняем элемент.
Compare and swap (CAS)
- Плохо подходит для ситуации, когда ресурс блокируется часто (плохо работает, приводит к повышенной нагрузке вычислений т.к. постоянно перевыполняется блок обработки). Предполагается, что ресурс не будет изменен за время выполнения операции.
- Не подходит для операций, которые не являются идемпотентными (например запросы во внешние сервисы).
- В некоторых случаях может использовать для управления отсоединенными данными (Предполагая, что данные в основном хранилище либо не будут изменены, либо изменение отсоединенных данных будет отброшено, либо существование механизма слияния изменений основного хранилища и отсоединенного данных).
Внутренние ссылки:
Дочерние страницы:
Обратные ссылки:
- Примеры.
- Компоненты
- AddOrUpdate
- Инициализация процесса
- Микросервисы. Паттерны разработки и рефакторинга. | Крис Ричардсон.
- Транзакции
- Ошибки