Обработка критического сеанса вне кода - Java
В моем проекте несколько сценариев состояния гонки учитываются путем написания критического раздела внутри кода, поскольку для базы данных Blazegraph нет механизма блокировки. Приложение развернуто в AWS Fargate(докер).
Недостатком является то, что мы не можем масштабировать приложение в нескольких контейнерах из-за синхронизированного блока в коде.
Пример:
- У меня есть проект с несколькими ревизиями. Только один пользователь должен иметь возможность фиксировать одновременно. Фиксация выполняется путем чтения последнего номера версии в проекте. Следовательно, код для получения номера последней редакции и фиксации новой редакции находится в синхронизированном блоке.
- В проекте поддерживается счетчик объектов для генерации последовательного идентификатора для каждого запроса на сохранение. Следовательно, код для извлечения последнего счетчика объектов и приращения находится в синхронизированном блоке
Возможные варианты:
- поддерживать очередь - слишком дорого, так как все запросы нужно направлять через очередь
- оставьте uuid как id - деловые причины. не может быть изменено
Любые предложения приветствуются. Огромное спасибо заранее.