Загрузка файлов лучшее решение для серверов с балансировкой нагрузки - PullRequest
5 голосов
/ 01 апреля 2011

Я получил балансировку нагрузки на 2 веб-сервера, подключенных к 1 серверу Mysql. Одна из функций приложения php на серверах позволяет пользователям загружать изображения, которые должны быть доступны с любого веб-сервера. Что было бы лучшим решением для этого?

  • Загрузить картинки в облака?
  • Храните фотографии в базе данных
  • Загрузка картинок на сервер MysQL (не база данных, файловая система)
  • ...?

Спасибо за советы.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2011

Rsync, как описано выше, работает, но если ваш сайт с большим трафиком работает на платформе WordPress, количество загруженных изображений может быстро стать слишком большим для rsync, чтобы пройти в дереве каталогов, и вы сначала увидите, что rsync тоже замедляется сканирование во время части контрольной суммы, и тогда оно просто перестанет работать, как если бы вы сделали ls в каталоге со слишком большим количеством файлов. Но это лучшее решение, пока вы не столкнетесь с этими проблемами.

Другим решением является удаленно смонтированный раздел nfs, но это небезопасно, если вы не находитесь в действительно надежной среде.

Другим решением было бы немедленно «поместить» файл в Amazon S3, а затем сохранить ссылку URL в вашей базе данных и просто отобразить ее при загрузке страницы.

Не храните изображения в базе данных - это действительно замедляет работу таблицы БД.

1 голос
/ 01 апреля 2011

У меня были очень хорошие результаты как при использовании GlusterFS, которая является реплицированной файловой системой, так и Amazon S3 для облачного хранилища.

0 голосов
/ 01 апреля 2011

Я бы порекомендовал загрузить в папку в файловой системе.Затем периодически запускайте задание cron, которое rsync будет в папке между двумя серверами.Вы также можете запустить rsync с загрузкой изображения.Хранение изображений в базе данных может стать сложным и может привести к раздуванию вашей базы данных.

...