Как получить доступ к набору папок из списка сервисов без конфликта

У меня есть набор служб, работающих на разных серверах, все имеют доступ к общему ресурсу, например; список папок, содержащих видео, которые требуют некоторой обработки.

Я хочу реализовать некоторый механизм блокировки, чтобы службы не могли одновременно обращаться к одной и той же папке, поэтому моя идея состоит в том, чтобы создать текстовый файл в папке как "in-folder-lock" и проверить, существует ли этот файл перед обработкой видео. файлы внутри.

Я уверен, что этот тест не будет успешным в реальных условиях, когда службы ищут папки для работы.

Есть идеи?

Любая помощь приветствуется, спасибо заранее.

1 ответ

Решение

Вы можете использовать некоторый механизм распределенной блокировки, такой как Redis Redlock или же Consul lock но если у вас есть несколько серверов, борющихся за эту общую папку, почему бы вам не рассмотреть возможность разделения файлов в нескольких папках (используя согласованный алгоритм хеширования), а затем заставить ваши серверы (используя тот же согласованный алгоритм хеширования) обрабатывать файлы только для их выделенная папка? Таким образом, вы могли бы распараллелить обработку вместо того, чтобы все серверы N-1 ожидали, что N-й сервер обработает все в одной папке.

Другие вопросы по тегам