У меня есть приложение, использующее Springboot, Gemfire и MySQL.Приложение Springboot служит API отдыха.Я хочу «заблокировать» запись в кеше, чтобы только один запрос, отправленный в остальные API, мог получить доступ к определенной записи в GemFire одновременно.Другие не могут делать CRUD для этой записи, пока владелец записи не освободит владение.У меня есть два подхода на данный момент.
Подход 1 - Создайте функцию GemFire, которая выполняет блокировку / разблокировку записи при ее вызове с помощью остальных API (в другое время) с использованием org.apache.geode.cache.Region.getDistributedLock.
Подход 2 - Создание региона (например, Блокировка), в котором запись создается при доступе к записи целевого региона (например, Клиент) в первый раз.Когда 2-й запрос хочет получить доступ к той же записи, остальные API сначала проверяют блокировку региона.Rest api извлекает и возвращает запись из региона Customer, если ключ не существует в регионе Lock.В противном случае, запись не будет возвращена.Как только первый запросчик завершает работу, rest api удаляет запись в области Lock.
Мне интересно, есть ли альтернативы, кроме этих двух вариантов.