Архитектура реального мира [закрыто]

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

Мои вопросы:

  1. Как вы храните http-код? хранится ли он локально на каждой машине или в общем хранилище? Если локально, как мне обновить код, если веб-сайт изменился

  2. То же самое касается статического контента, я предполагаю, что он находится в общем хранилище

  3. Если я использую CDN, он просто кеширует все статические доступ к данным? и на какой срок?

  4. LB - могу ли я получить кластер LB? если да, то как это работает?

  5. Какую БД вы бы выбрали для YouTube / стримингового сайта? и почему

Я знаю, что вопросов много, но я был бы признателен, если бы смог получить ответы на все. Спасибо!

1
задан 15 June 2018 в 11:24
1 ответ

Как вы храните http-код? хранится ли он локально на каждой машине или на общем хранилище? Если локально, как мне обновить код, если изменения веб-сайта

Есть несколько способов сохранить код в общем хранилище, например, на монтировании NFS / S3, что упрощает централизованное обновление, очевидно, что затем вы вводите единую точку отказа, чтобы люди часто имеют две копии кода в разных хранилищах, поэтому они могут потерять только половину своих узлов - и вы также можете использовать это для синего / зеленого тестирования / развертывания. Другой вариант - сохранить его в распределенной файловой системе, такой как Ceph или аналогичной, очевидно, что те же самые предостережения.

То же самое и для статического контента, я предполагаю, что он находится в разделяемом хранилище

В целом это правда, многие люди используют облачное хранилище для статического контента, поскольку оно часто «близко», с точки зрения сети, к их CDN, редко можно увидеть контент, хранящийся на веб-серверах непосредственно в этих дней.

Если я использую CDN, она просто кэширует все статические данные, к которым осуществляется доступ? и как долго?

Это, безусловно, базовая функциональность, они обычно могут намного больше, а TTL почти всегда настраивается для отдельного объекта / файла.

LBs - Как он может увидеть, если машина перегружена (средняя загрузка), если вообще?

Множество разных способов, открытые соединения, время отклика, статистика использования общих ресурсов - LB могут быть очень «настраиваемыми», я очень уважаю хороших менеджеров LB .

LB - можно ли создать кластер LB? если да, то как это работает?

Да, буквально по уровням и так, как вам нравится - в качестве примера мы используем Global LB'ing для отправки трафика в конкретный центр обработки данных на основе ряда факторов, а затем, как только он попадает на этот сайт, он разделяется на разные сервисные группы (зеленый / синий, например), а затем на фактические сервисные LB.

Какую БД вы бы выбрали для YouTube / стримингового сайта? и почему

Нет ни одной лучшей в своем классе БД, извините - здесь слишком много факторов, и стоимость является основным из них (я говорю, что MSSQL и Oracle могут стать очень затратными в наши дни!), но главное, что нужно учитывать, это если ваша БД НУЖДАЕТСЯ ссылочная целостность, как если бы она была, тогда вам понадобится база данных на основе SQL (хотя есть и бесплатные, MySQL и PostGRES очень популярны), но если вы можете спроектировать свои данные прямо, тогда вам может сойти с рук ' Базы данных NoSQL, такие как Couchbase / Mongo / Cassandra, и они абсолютно FLY , намного быстрее, чем SQL для базовых запросов, но, очевидно, они менее многофункциональны. Другое дело, что теперь вы можете полностью выполнять свою работу с БД в облаке - AWS, в частности, имеет сильное портфолио типов БД, а Azure, очевидно, имеет MSSQL как часть своего портфеля.

3
ответ дан 3 December 2019 в 18:27

Теги

Похожие вопросы