Обработка критического сеанса вне кода - Java - PullRequest
0 голосов
/ 30 октября 2018

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

Недостатком является то, что мы не можем масштабировать приложение в нескольких контейнерах из-за синхронизированного блока в коде.

Пример:

  1. У меня есть проект с несколькими ревизиями. Только один пользователь должен иметь возможность фиксировать одновременно. Фиксация выполняется путем чтения последнего номера версии в проекте. Следовательно, код для получения номера последней редакции и фиксации новой редакции находится в синхронизированном блоке.
  2. В проекте поддерживается счетчик объектов для генерации последовательного идентификатора для каждого запроса на сохранение. Следовательно, код для извлечения последнего счетчика объектов и приращения находится в синхронизированном блоке

Возможные варианты:

  1. поддерживать очередь - слишком дорого, так как все запросы нужно направлять через очередь
  2. оставьте uuid в качестве id - деловые причины. не может быть изменено

Любые предложения приветствуются. Заранее большое спасибо.

...