Обслуживание изображений через HTTP.Высокодоступная архитектура с балансировкой нагрузки - PullRequest
1 голос
/ 24 февраля 2011

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

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

Изображения должны храниться без единой точки отказа.И очевидно, что система должна быть быстрой.

Для подхода к базе данных: база данных отделена от остальной части моего приложения, поэтому основная база данных моих приложений не будет раздутой всеми изображениями.База данных будет легко масштабироваться, так как мне просто нужно добавить больше серверов в кластер.Проблема в том, что я слышал, что это может быть медленная система с веб-сайта с миллионами и даже миллиардами фотографий.

Для файловой системы: мне было бы очень интересно узнать, как можно разработать систему, гдевеб-серверы сбалансированы по нагрузке, и ни один из них не слишком важен для всей системы.Все серверы должны использовать общее хранилище, чтобы они могли обращаться к одним и тем же файлам в кластере.

Что вы думаете?Какое решение является лучшим в этом случае?

Какой тип архитектуры и серверов вы бы порекомендовали для кластера обслуживания изображений?Примечание: этот кластер только обслуживает изображения.Серверы приложений - это совсем другая история.

1 Ответ

1 голос
/ 24 февраля 2011

Я определенно не буду хранить их в базе данных. Если вам нужно использовать PHP для аутентификации, сделайте это как можно быстрее и используйте X-SendFile, чтобы передать фактическое изображение, отправляемое на ваш веб-сервер.

Для файловой системы это звучит как MogileFS было бы неплохо.

Для веб-сервера я бы предложил nginx . Если вы можете адаптировать свой механизм аутентификации для использования одного из существующих модулей или написать свой собственный модуль для него, вы можете полностью пропустить PHP (уже есть клиентский модуль MogileFS).

...