
У нас есть растущий набор файлов данных (файлы .wav, файлы изображений и т.д.), которые являются данными, т.е. не являются частью кода приложения - загружены и изменены пользователями. Количество файлов составляет тысячи, а общий размер достигает ГБ.
У нас есть несколько кластеров серверов в разных местах по всему миру (США, ЕС, ME). В каждом кластере важно, чтобы данные обслуживались локально, а не из S3 (файлы данных не обслуживаются напрямую клиентами, а обрабатываются серверами). Мы хотим назначить файловый сервер в каждом месте, который будет обслуживать файлы через NFS на других узлах в том же кластере.
Итак, суть такова:
- Файлы, загруженные через приложение, должны оказаться в формате
S3
. - Каждый узел файлового сервера должен реплицировать эти файлы.
Мы видим несколько вариантов:
- Использование
origin
файлового сервера, который реплицирует данныеS3
для резервного копирования/управления версиями и на узлы черезrsync
(или аналогично). - То же, что и выше, но подчиненные устройства реплицируются с
S3
помощью чего-то вроде инструмента S3 или подобного. - Не используя
origin
код приложения, загружается напрямую вS3
, а подчиненные устройства реплицируются, как указано выше.
Нам было интересно, какое решение является рекомендуемым и какие инструменты доступны для репликации (т. е. в категории «файловая система-файловая система» и в категории «файловая система/S3»).