У меня около 5 веб-серверов на балансировщике нагрузки, и если пользователь загружает картинку, на ее синхронизацию может уйти до минуты (crontab). Это может расстраивать некоторых людей, считающих, что это не удалось. Есть ли способ выполнить rsync в реальном времени?
Спасибо
Большинство людей проектируют такую систему, используя централизованное хранилище, не требующее никакой синхронизации.
Как сказал Chopper3, существует централизованное хранилище с использованием SAN или NAS, и это кажется наиболее распространенным. Если вы действительно хотите хранить их на отдельных серверах, вы можете посмотреть что-то вроде DRBD, который похож на RAID через Ethernet, чтобы синхронизировать том между серверами.
inosync в значительной степени готов для этого, при условии, что загрузки поступают на машину с Linux (mac и bsd имеют разные механизмы и требуют другой утилиты)
Вы также можете использовать inotify для просмотра каталога и мгновенного запуска распространения изменений файла с помощью scp, rsync или любого другого метода.
Раньше для решения этой проблемы вы использовали общую сетевую файловую систему (каноническую, например, NFS).
Сейчас я использую gridfs MongoDB для этого типа хранилища общих объектов с множественным доступом.
Прямо сейчас мы проводим несколько тестов с inotify. Я тоже рекомендую эти варианты:
уведомить: Библиотека событий файловой системы для Java inotify-java: library предоставляет привязки и API для мониторинга файловой системы на платформах Linux И, конечно же: inosync