Архитектура хостинга изображений - PullRequest
3 голосов
/ 16 января 2011

Я уверен, что многие здесь знают о сайтах хостинга изображений, таких как imgur, min.us, photobucket и т. Д.

Не то, чтобы я хотел его разрабатывать, а просто загружал файл, организовывал его вгде-то каталог, какие архитектурные соображения задействованы на этих сайтах?Особенно, когда миллионы просмотров страниц в день (например, imgur, я себе представляю)

Мне интересно об этом, потому что кажется, что многие сайты (скажем, сайты знакомств и т. Д.) Будут довольно интенсивными изображениями,Даже если это не миллионы просмотров страниц, каковы основные архитектурные требования для эффективной доставки изображений в Интернете?

Ответы [ 2 ]

2 голосов
/ 16 января 2011

Если вы говорите о внутренней серверной архитектуре, есть много соображений.

Есть ли безопасность? Подлежит ли извлечение изображения какой-либо бизнес-логике? Какой веб-сервер вы будете использовать? Какой тип распределения запросов вы просматриваете (будете ли вы показывать 1 из 10 изображений в 50% случаев, а 1 из 100 000 - в остальных 50%?

Допустим, нет безопасности, и вы используете простой веб-сервер, который не собирается выполнять кеширование для вас.

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

Что касается хранения, не храните ваши изображения в базе данных. Файловые системы очень хорошо справляются со структурой каталогов. Просто поместите ваше изображение «hello.png» в каталог «images / png / h / e / l», используя любое количество найденных вами буквенных каталогов, которое соответствует вашей библиотеке до <100 изображений в каталоге. </p>

1 голос
/ 16 января 2011

Если вы беспокоитесь о загрузке, вызванной просмотром изображений, я полагаю, вы захотите распределить изображения по ряду серверов. Это проблема сети доставки контента. Первое решение - просто разместить множество серверов в одном месте, чтобы распределить нагрузку, а решение следующего уровня - иметь набор географически распределенных серверов и в зависимости от IP-адреса клиента направлять их на близкий сервер.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...