2016-10-20 8 views
0

Существует процесс, который сбрасывает файлы 10k в общий накопитель NFS. Мне нужно читать и обрабатывать данные из файлов. Я написал код Java, который отлично работает в одном узле env. Но когда код развертывается в кластере WAS с 4 узлами, узлы собирают и обрабатывают одни и те же файлы.NFS: Синхронизированная обработка файлов в кластере env

Как я могу избежать этого? Есть ли какая-то функция блокировки файлов, которую я могу использовать для устранения этой проблемы? Любая помощь высоко ценится.

Дополнительная информация: Я использую библиотеку org.apache.commons.io.monitor для опроса каталога NFS каждые 10 секунд. Затем мы читаем и обрабатываем файлы, а затем перемещаем файл в папку после процесса. Как уже упоминалось, это отлично работает в одном узле env. При развертывании в кластере узлы обрабатывают один и тот же файл и обрабатывают их, что вызывает множественные вызовы с одинаковыми данными для бэкэнд-сервиса.

Я ищу оптимальное решение.

PS: Приложение, обрабатывающее файлы, не имеет доступа к какой-либо базе данных.

Заранее спасибо

ответ

0

«Есть ли какая-то функция блокировки файла, который я могу использовать, чтобы исправить эту проблему?» Не без какой-то работы по твоей цели. Вы можете создать другой файл с тем же именем, что и на .lock, и проверить приложение, чтобы увидеть, существует ли файл блокировки, создав файл блокировки, и если он преуспеет, он обработает файл. Если он терпит неудачу, то знает, что один из других членов кластера уже захватил файл блокировки.

+0

Спасибо Alexandre! Я собираюсь попробовать это, но не уверен, что это решение работает со многими потоками из опроса узлов кластера одновременно. – KrisB

 Смежные вопросы

  • Нет связанных вопросов^_^