Назад | Перейти на главную страницу

Как масштабировать хостинг / обслуживание изображений?

Я задал этот вопрос переполнение стека и мне предложили попробовать это здесь:

Я создаю веб-сайт, на котором пользователи могут загружать фотографии, и я также конвертирую загруженные фотографии в миниатюры.

Забегая вперед, если веб-сайт станет популярным, как его масштабировать, чтобы изображения (как оригинальные, так и эскизы) сохранялись и обслуживались с нескольких серверов? Может кластер? Есть ли какое-нибудь программное обеспечение с открытым исходным кодом, которое могло бы мне помочь в этом?

Спасибо.

Самое простое, что вы можете сделать, чтобы позже иметь хорошие варианты, - это написать свое программное обеспечение таким образом, чтобы изображения никогда не могли сохранять одно и то же имя файла при изменении - изменение изображения всегда должно изменять имя файла. Это означает, что вы можете установить очень долгое время жизни кэша либо через свои собственные кеши, либо через сеть доставки контента, что значительно сократит количество необходимых вам операций чтения с диска. (Возможно, вам понадобится какой-то механизм для немедленного удаления определенного файла из кеша или CDN, если могут возникнуть обстоятельства, когда изображение имеет удалить полностью.)

Чтобы разрешить горизонтальное масштабирование, разбейте изображения на большое количество групп (100 или более) и укажите в начале пути к каждому изображению группу, в которой оно находится. Вы можете обслуживать все группы с одного сервера сейчас, но позже. На сегодняшний день будет довольно просто использовать балансировщик нагрузки для направления трафика на разные серверы на основе группы изображений. Я бы не стал использовать кластеризованную файловую систему для изображений, потому что она добавляет дополнительный уровень сложности, и, вероятно, проще использовать несколько серверов и некоторые правила балансировки нагрузки для распределения нагрузки.