Представьте, есть нагруженный сайт, в котором есть аккаунты пользователей.
Каждый пользователь может загружать и скачивать свои файлы по http.
В случае, если все это вертится на одном физическом сервере, вроде как все элементарно - делаем папку upload, в ней подпапки на каждого пользователя, авторизация и т.п.
Но как это решить, если сайт высоконагруженный?
Т.е. используется несколько серверов приложений и несколько серверов данных.
За каждым пользователем закрепляется свой сервер данных для хранения файлов, типа f1.mysite.ru, f2.mysite.ru.. f10.mysite.ru
Каждый сервер приложения - отдельная машина.
Каждый сервер данных - тоже отдельная машина.
Допустим, при закачке файла, его указывают в форме на главном сайте mysite.ru, но фактически, его нужно разместить на f1.mysite.ru
Как это сделать?
Скачивание будет осуществляться по ссылке f1.mysite.ru/<fileid>, т.е. сервер данных - это тупо файловый веб-сервер. (со скачкой мне пока понятно)
P.S. Смотрел в сторону gridFS. Пока останавливает, что файлы надо черпать из него программно (nginx-gridfs забраковали). И файловый веб-сервер намного прозрачней.
Смотрел и NFS, здесь гемор с настройкой и падением mount в реальном времени (при масштабировании)