Вход по решению: файловый хостинг с Amazon S3 или аналогичным и php - PullRequest
3 голосов
/ 03 февраля 2012

Я ценю ваши комментарии, чтобы помочь мне определиться со следующим.

Мои требования:

  • У меня есть сайт, размещенный на общем сервере, и я собираюсь предоставлять контент своим пользователям. Около 60 ГБ контента (около 2000 файлов по 30 МБ каждый. Пользователи будут иметь доступ только к 20 файлам одновременно), я рассчитываю около 100 ГБ ежемесячного использования полосы пропускания.

  • Как только пользователь зарегистрируется для контента, ссылки будут доступны для загрузки пользователем. Но я хочу, чтобы срок действия ссылок истек через 7 дней с возможностью увеличения срока действия.

  • Я думаю, что дисковое пространство и пропускная способность требуют таких сервисов, как файлы Amazon S3 или Rackspace Cloud (или есть альтернатива?)

  • Для управления истечением срока я планирую каким-то образом получить ссылки с истекшим сроком действия (я думаю, что S3 имеет эту функцию, а не Rackspace) ИЛИ контролировать дату истечения срока действия в моей базе данных и иметь пакетный процесс, который будет переименовывать ежедневно все 200 файлов в облаке и в моей базе данных (если пользователь скопировал прямую ссылку, она не будет работать на следующий день, только моя веб-страница будет иметь обновленные ссылки). PHP используется для программирования.

Так что ты думаешь? Облачный файловый хостинг это путь? Который из? Имеет ли смысл управление ссылками или это слишком сложно с помощью программирования (отправка команд на облачный сервер ...)

EDIT: У некоторых принимающих компаний есть неограниченное пространство и пропускная способность в их общих планах. Я спросил их персонал поддержки, и они сказали, что они действительно соблюдают "неограниченное" соглашение Итак, 100 ГБ передачи в месяц - это нормально, единственное, на что нужно обратить внимание - это загрузка процессора. Таким образом, совместный хостинг - еще одна альтернатива на выбор.

Followup: Так углубившись в это, я обнаружил, что TOS планов Unlimited говорят, что не разрешено использовать пространство в основном для размещения мультимедийных файлов. Поэтому я решил пойти с Amazon s3 и решением, предоставленным Томом Андерсеном.

Спасибо за ввод.

Ответы [ 3 ]

2 голосов
/ 06 февраля 2012

Я не могу говорить за S3, но я использую Rackspace Cloud файлы и серверы.

Хорошо, что вы не платите за входящую пропускную способность, поэтому загрузка очень дешевая.

Я бы сделал это так:

  1. Загрузить все необходимые файлы в «приватный» контейнер
  2. Создание общедоступного контейнера с включенным CDN
  3. Это даст вам специальный URL вроде http://c3214146.r65.ce3.rackcdn.com
  4. Создайте собственную запись DNS CNAME для своего домена, указав на это, например: http://cdn.yourdomain.com
  5. Когда пользователь запрашивает файл, используйте операцию COPY api с длинным случайным именем файла , чтобы сделать копию на стороне сервера из частного контейнера в общий контейнер.
  6. Сохраните имя файла в базе данных mysql для вашего приложения
  7. Когда срок действия файла истечет, используйте операцию DELETE api , затем операцию PURGE api , чтобы вытащить его из CDN ... окончательно удалите запись из таблицы mysql.

С помощью команды PURGE ... Я слышал, что она не работает 100% времени и может оставить файл на дополнительный день ... также в документах сказано, что он может использоваться только для экстренных случаев.

Редактировать: Я только что слышал, есть ограничение в 25 чисток в день.

Однако лично я только что использовал delete для объектов и обнаружил, что сразу же вынул их из CDN. Таким образом, в худшем случае файл будет доступен на некоторых узлах CDN в течение 24 часов после удаления.

Редактировать: Вы можете изменить TTL (время кэширования) на узлах CDN. По умолчанию установлено значение 72 часа, поэтому может потребоваться установить его на что-то меньшее ... но не настолько низкое, чтобы вы потеряли преимущество CDN.

Преимущества, которые я нахожу с CDN:

  1. Он передает контент конечным пользователям вдали от серверов США и обеспечивает супер быстрое время загрузки для них
  2. Если у вас есть суперпопулярный файл ... ваш сайт не заберет, когда 1000 человек начнут его скачивать ... поскольку все они получат копии, вытолкнутые на любой узел CDN, к которому они были ближе всего.
2 голосов
/ 03 февраля 2012

Лично я не думаю, что вам обязательно нужно для этого использовать облачное решение. Это может быть немного дорого. Вы могли бы просто получить выделенный сервер вместо этого. Один провайдер, который приходит на ум, предоставляет пропускную способность 3000 ГБ / месяц на некоторых из своих планов самого низкого уровня. Это на 10 Мбит восходящей линии связи; Вы можете обновить до 100 Мбит / с за 10 долл. / мес. 1 Гбит за 20 долл. / мес. Я не буду называть имена, но вы можете искать выделенные серверы и, возможно, найти их по своему вкусу.

Что касается устаревания файлов, просто реализуйте это в PHP, поддерживаемом базой данных. Вам не нужно будет перемещать файлы, хранить все файлы в каталоге, недоступном из Интернета, и использовать сценарий PHP, чтобы определить, является ли ссылка действительной, и если да, то прочитать содержимое файла и передать их браузер. Если ссылка недействительна, вы можете показать сообщение об ошибке. Это довольно простая концепция, и я думаю, что есть много заранее написанных сценариев, которые делают это доступным, но в зависимости от ваших потребностей, это не так уж сложно сделать самостоятельно.

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

Надеюсь, это поможет.

1 голос
/ 04 февраля 2012

Вам не нужно переименовывать файлы на S3 каждый день.Просто сделайте их приватными (по умолчанию) и раздайте ограниченные по времени URL-адреса на день или неделю всем, кто авторизован.

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

...