Я планирую систему для обслуживания файлов изображений из кластера серверов с балансировкой нагрузки.Я борюсь с архитектурой и с тем, сохранять ли фактические файлы изображений в виде больших двоичных объектов в базе данных или в файловой системе.
Моя проблема заключается в том, что соединение с базой данных требуется в любом случае, так как пользователи должны проходить аутентификацию.Разные пользователи имеют доступ только к содержимому своих друзей и элементам, загруженным ими самостоятельно.Так как соединение все равно требуется, может быть, изображения могут быть извлечены оттуда также?
Изображения должны храниться без единой точки отказа.И очевидно, что система должна быть быстрой.
Для подхода к базе данных: база данных отделена от остальной части моего приложения, поэтому основная база данных моих приложений не будет раздутой всеми изображениями.База данных будет легко масштабироваться, так как мне просто нужно добавить больше серверов в кластер.Проблема в том, что я слышал, что это может быть медленная система с веб-сайта с миллионами и даже миллиардами фотографий.
Для файловой системы: мне было бы очень интересно узнать, как можно разработать систему, гдевеб-серверы сбалансированы по нагрузке, и ни один из них не слишком важен для всей системы.Все серверы должны использовать общее хранилище, чтобы они могли обращаться к одним и тем же файлам в кластере.
Что вы думаете?Какое решение является лучшим в этом случае?
Какой тип архитектуры и серверов вы бы порекомендовали для кластера обслуживания изображений?Примечание: этот кластер только обслуживает изображения.Серверы приложений - это совсем другая история.