Логический поток для CDN, веб-приложений и серверов обработки - PullRequest
0 голосов
/ 05 октября 2011

Я создаю веб-сайт, который позволяет пользователям загружать и смотреть видео. Не спускайтесь в дампы - мы не потеряли другого человека из-за другого клона Youtube - содержание очень узкое. И потрясающе. Есть три сервера:

CDN | Веб-приложение | Видеопроцессор

Сервер Web App передает пользовательские загрузки в CDN. Сервер видеопроцессора загружает загруженные видео из CDN и обрабатывает их, выплевывая различные типы видео, эскизы и некоторые метаданные.

Отсюда сервер видеопроцессора должен сделать две вещи: (1) загрузить новые данные в CDN (решено) и (2) отправить ссылки на данные CDN в базе данных веб-приложения (проблема).

ПРОБЛЕМА. Как сервер видеопроцессора должен передавать данные о файлах CDN (URL-адреса видео, заголовки и т. Д.) В веб-приложение?

РЕШЕНИЕ A: Сохраните обработанные видеоданные в текстовом файле, после завершения загрузите их на сервер Web App и настройте на сервере Web App регулярный импорт файлов txt в базу данных.

РЕШЕНИЕ B: Видеопроцессор передает данные в веб-приложение, а веб-приложение создает записи в БД. Кредит ММ (я буду голосовать, когда вы отправите).

Насколько хорошо решение А? B? У тебя лучше?

Редактировать: CDN - это Rackspace Cloud, веб-приложение - на Django, видеопроцессор - это серверный сервер Ubuntu, на котором выполняются некоторые скрипты Python.

1 Ответ

0 голосов
/ 15 октября 2011

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

Пользователь загружает видео, и веб-приложение получает уведомление, например, видео загружается в веб-приложение или CDN, как в примере выше.

Веб-приложение предоставляет список видео для конвертации через API.

Видеопроцессор запрашивает у API следующее видео в очереди, затем извлекает его и запускает процесс преобразования.

Когда видео преобразовано, видеопроцессор загружает его и использует API веб-приложения для обновления статуса, URL-адресов и других метаданных.

Обычно я разделяю детали с помощью API, чтобы вы могли заменить их при необходимости.

...