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

Сценарий:
* Пользователь загружает изображение и вводит некоторую информацию об этом изображении
* Информация и изображение загружаются (на все серверы)
* Пользователь получает подтверждение загрузки изображения

Факторы:
* Десятки серверов, распределенных по всему миру
* Изображение должно оказаться на диске, так как оно будет обслуживаться
* Информация должна попасть в базу данных
* Изображения маленькие, не более 5 МБ

Мы рассматривали различные архитектурные решения и технологии (например, git kill , rsync ), но мы все еще не на 100% подходим к этому. Текущее решение слишком медленное, и мы надеемся улучшить его (мы отправляем файлы на все серверы с нашего сервера «загрузки»).

Есть мысли? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2011

Взгляните на Riak .Он предлагает очень хорошую поддержку для массового распространения и репликации данных.Уже некоторое время мы успешно используем его, и он оказался очень устойчивым.

Я бы смоделировал его на Riak с изображениями и метаданными, сохраненными отдельно, со связью между ними.Они оба попадают в «базу данных» и на диск таким образом, с простым способом получить форму одного к другому и доступным через URL.

Примечание: для репликации по глобальной сети вам понадобится предприятиеверсия, которая не является бесплатной.

0 голосов
/ 14 мая 2011

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

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

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

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