Назад | Перейти на главную страницу

Куда обратиться, чтобы узнать о веб-архитектуре? Пример Youtube?

Я пытаюсь создать веб-приложение, похожее на Youtube (это не подделка), но, думаю, я не знаю, как видео подается в Интернете очень хорошо.

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

Как отделить сервер приложений от файлового хранилища от медиа-сервера? Я бы более или менее хотел четыре машины (кластеры машин):

  1. Серверы приложений - представляйте веб-страницу, обрабатывайте загрузки пользователей, связывайте флэш-плеер пользователя с правильным медиа-сервером и т. Д.
  2. Осколки базы данных - храните информацию о пользователях, проверяйте избранное и т. Д.
  3. Хранение файлов - Храните медиафайлы
  4. Медиа-серверы - обслуживают медиафайлы

Как мне все это соединить? Какие технологии мне следует использовать? Куда мне обратиться, чтобы узнать больше об этой архитектуре?

Как работает встраиваемая флеш-память Youtube? Я хочу встроить свой флеш-плеер на другие веб-сайты и привязать его к моей архитектуре.

Примечание: Я изучил: http://highscalability.com/youtube-architecture

Но я до сих пор не могу понять, как все это взаимосвязано. Если кто-то может объяснить на высоком уровне, как все это работает?

Существуют ли внутренние выделенные клиентские серверы, позволяющие перемещать все эти вещи между серверами приложений, хранилищем файлов и т. Д. Все ли это происходит через HTTP с использованием JSON, что здесь происходит?

Спасибо!

Вы можете проверить http://highscalability.com/ для некоторых действительно интересных материалов по этой теме.

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

Лучшее, что вы действительно можете сделать, - это взглянуть на все различное программное обеспечение, используемое для высокомасштабируемых веб-сайтов, и прочитать учебные пособия, документацию и посмотреть на реальные реализации, если это возможно. Взгляните на программное обеспечение для обмена сообщениями, такое как ZeroMQ, или другое программное обеспечение, основанное на AMQP. Посмотрите на масштабируемые хранилища данных, которые не требуют ручного разделения и нормализации баз данных. Вы можете прочитать так много вещей, которые дадут вам некоторое представление о том, как все действительно сочетается друг с другом, и вы сможете получить надлежащий обзор всей системы с высоты птичьего полета.

Как отделить сервер приложений от файлового хранилища от медиа-сервера?

Вы используете кластерную файловую систему, например OCFS2: http://oss.oracle.com/projects/ocfs2/

Хранилище SAN, OCFS2, каждый сервер приложений монтирует общую файловую систему через iSCSI.

Более экзотическое решение - MogileFS, используемое LiveJournal: http://www.danga.com/mogilefs/

Ура