У меня есть задание планировщика, которое каждые X минут проверяет, есть ли какой-либо файл на сервере sftp, загружает его, анализирует и загружает файл состояния, в котором говорится, что файл успешно загружен.Если файл не был загружен и проанализирован успешно, мы не загружаем файл состояния.
Файл состояния используется сторонним приложением, которое на основании наличия файла состояния на сервере sftp начинает выполнять какую-то другую работу.Если нет файла состояния, он не запустит задание.
Проблема начинается с нескольких экземпляров сервера, на которых выполняется одно задание планировщика.Я не могу придумать лучший способ, как убедиться, что все серверы успешно загрузили файл и сообщить стороннему приложению с файлом состояния, что оно может начать свою работу?
Единственный способ, которым я могу общаться с этимСтороннее приложение через файл статуса.
Некоторые решения:
до того, как мы запустили задание планировщика только на одном сервере и получили общий диск для использования этих файлов.Это больше не вариант
Я думал загрузить файл состояния в неправильном формате (чтобы стороннее приложение не запускало свою работу) с некоторым идентификатором сервера, и это будет подтверждениемчто этот сервер скачал файл.Все остальные серверы также поместят свои идентификаторы в тот же файл.Затем первый сервер, который обнаружит, что по крайней мере 3 раза упомянули одинаковые идентификаторы сервера (3x server1, 3x server2, 3x server3), изменит файл состояния в правильном формате, а затем третье лицо может начать свою работу.Теоретически проблемы могут возникнуть, если в файле было упомянуто 3 раза: server1 и server2, но server3 не был упомянут вообще (все серверы имеют одинаковое выражение cron, как каждые 2 минуты)
Используйте некоторую конфигурацию, где будет определено количество серверов, которые должны загрузить файл, и на основании этой конфигурации я могу проверить, все ли записи записали свои идентификаторы в поддельный файл состояния.Проблемы в том, что если я добавляю новый сервер, мне нужно обновить конфигурационный файл.
Я полагаю, что это общая проблема, и есть какой-то шаблон или алгоритм?