Фоновые потоки в горизонтально масштабируемом приложении - PullRequest
0 голосов
/ 23 сентября 2018

В настоящее время у меня есть приложение, которое масштабируется горизонтально с одной базой данных SQL.Периодически запускается фоновый процесс, но я хочу, чтобы одновременно выполнялся только один запуск этого фонового процесса.Я пытался сделать это с помощью строки базы данных и блокировки, но я застрял.Требуется, чтобы только одно пакетное задание было успешно выполнено в день.

В настоящее время у меня есть таблица с именем lock, которая имеет три столбца: timestamp, lock_id, status.Состояние - это перечисление с тремя значениями: 0 = не запущен, 1 = запущен, 2 = завершен.

Проблема заключается в том, что если пакетное задание не выполняется и состояние равно 0, как я могу убедиться, что толькоповторяется один фоновый процесс.Как я могу гарантировать, что в сценарии повтора работает только один фоновый процесс?

В идеальном мире я хотел бы сделать инструкцию SELECT, которая проверяет STATUS в таблице блокировок, если статус = 0это означает, что не работает, затем запустите фоновое задание и измените статус на 1 = выполняется.Однако, если все горизонтально масштабируемые процессы делают это одновременно, гарантируется ли выполнение только одного?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...