Куда пойти, чтобы узнать о веб-архитектуре? Ютуб пример?
Я пытаюсь создать веб-приложение, похожее на Youtube (оно не подделывает), но, думаю, я не знаю, как видео очень хорошо подается в Интернете.
Я знаю, как создавать обычные веб-приложения на основе баз данных, но ничего похожего на масштабируемость Youtube. Все приложения, которые я создал ранее, были запущены на одном сервере, а файлы хранятся в той же папке, что и веб-сервер.
Как отделить сервер приложений от хранилища файлов от медиасервера? Я бы более или менее хотел четыре машины (группы машин):
- Серверы приложений - представление веб-страницы, обработка пользовательских загрузок, привязка флэш-плеера пользователя к нужному медиа-серверу и т. Д.
- Осколки базы данных - храните информацию о пользователях, проверяйте избранное и т. Д.
- Хранение файлов - Храните медиа файлы
- Медиа-серверы - обслуживайте медиа-файлы
Как мне все это соединить? Какие технологии я должен использовать? Куда мне обратиться, чтобы узнать больше об этой архитектуре?
Как работает встраиваемая флеш-программа на Youtube? Я хочу встроить свой флеш-плеер в другие сайты и привязать его к моей архитектуре.
Примечание: я изучил: http://highscalability.com/youtube-architecture
Но я до сих пор не понимаю общую картину того, как эти вещи связаны друг с другом. Если кто-то может объяснить в общих чертах, как все это работает?
Существуют ли выделенные клиентские серверы, работающие внутри, чтобы перетасовать все эти вещи между серверами приложений, хранилищем файлов и т. Д. Это все через HTTP с использованием JSON, что здесь происходит!
Спасибо!
3 ответа
Вы можете проверить http://highscalability.com/ для некоторых действительно интересных вещей на эту тему.
Как отделить сервер приложений от хранилища файлов от медиасервера?
Вы используете кластерную файловую систему, такую как OCFS2: http://oss.oracle.com/projects/ocfs2/
Хранилище SAN, OCFS2, каждый сервер приложений монтирует общую файловую систему через iSCSI.
Более экзотическим решением является MogileFS, используемое LiveJournal: http://www.danga.com/mogilefs/
ура
Ну, как все это сочетается, тем не менее, вы действительно хотите совместить это. Существует так много вариантов того, как спроектировать систему того типа, который вы описываете, от чего она зависит, в частности, от конкретного приложения, от того, что вам удобно, и от того, сколько на самом деле нужно масштабировать.
Лучшее, что вы можете сделать, это взглянуть на все различные программы, используемые для веб-сайтов с высокой степенью масштабируемости, и прочитать учебные пособия, документацию и взглянуть на реальные реализации, если сможете. Взгляните на программное обеспечение для обмена сообщениями, такое как ZeroMQ, или другое программное обеспечение на основе AMQP. Посмотрите на масштабируемые хранилища данных, которые не требуют ручного разделения и нормализации баз данных. Вы можете прочитать о многих вещах, которые дадут вам представление о том, как все действительно сходится, и вы сможете получить представление о всей системе с высоты птичьего полета.
Вы можете использовать следующие ссылки: Python Django Web Framework - полный курс для начинающих - https://www.youtube.com/watch?v=F5mRW0jo-U4 Основы веб-архитектуры - https://www.youtube.com/watch?v=AYHE2m651dY5 Ресурсы по изучению архитектуры веб-приложений - https://codecondo.com/web-application-architecture/ Раскрытие архитектуры веб-приложений: как правильно выбрать тип - https://perfectial.com/blog/web-application-architecture/