Я планирую выпустить приложение для iOS, которое загружает видео с моего сервера. Если сотни людей в день запуска попытаются сделать это, то мой сайт и сервисы, которые предоставляет мой сервер, явно отключатся. Как вы размещаете сайт на нескольких серверах? Когда кто-то пытается получить доступ к моему сайту, как его запрос передается на доступный сервер? Как Apple и Google делают это? Спасибо за вашу помощь.
10
Ответы:
Что касается больших парней (Google, Apple и т. Д.), У них сложное и дорогое оборудование для маршрутизации трафика.
Более простым решением было бы настроить несколько хостов и иметь один хост, который чередует запросы.
Скажем, у нас есть 5 серверов для размещения видео с именем VideoHostN, и у нас есть один сервер, отдельный от тех, которые отслеживают их использование под названием RoutingHost.
Первый клиент iOS запрашивает адрес, чтобы получить видео от RoutingHost. RoutingHost возвращает адрес на VideoHost1.
Второй клиент iOS запрашивает. RoutingHost отвечает VideoHost2.
И так до тех пор, пока он не достигнет нашего гипотетического максимума VideoHost5 и не сбросится до VideoHost1.
Просто нужен некоторый простой код на стороне сервера, который отслеживает, какой VideoHost использовать дальше, и возвращает ему адрес.
Это дешевый и простой способ распространения пользователей. Это не гарантирует, что некоторые пользователи не будут забиты ни на какой VideoHost. Это случайный шанс, что несколько пользователей с медленными соединениями могут в конечном итоге вытянуть из одного места, но это только начало.
источник
Вы можете сделать балансировку нагрузки по ссылке @ PeeHaa на статью в Википедии для получения информации здесь . Это требует некоторых ноу-хау, денег и времени на настройку. Крупные компании, такие как Google и Apple, используют технологии, которые они написали для себя, и пытаются имитировать их - это дорогое и излишнее решение. Если вы выполняете балансировку нагрузки, вы захотите использовать что-то намного меньшее, чем то, что они делают.
Или вы можете использовать облачные серверы для размещения вашего видео или другого контента. Они называются Content Distribution Network (CDNS), и теперь они могут делать гораздо больше, чем простой файловый хостинг. Преимущество этих сайтов заключается в том, что они используют технологию, подобную той, что была создана Google, для создания балансировки нагрузки, и они продают вам услугу, основываясь именно на количестве данных или циклов, которые вы используете на своих серверах. Это означает, что ваши расходы будут расти с той же скоростью, что и вы, поэтому при наличии хорошей модели дохода у вас всегда будут средства для оплаты услуги. Некоторые великие компании для небольших пользователей:
Их намного больше, чем этих трех. Кроме того, другим преимуществом CDN является то, что ваш контент находится не на одном сервере, а в сети по всему миру. CDN делают это так, что контент всегда приходит с сервера, ближайшего к пользователю. Установка 2+ серверов в одном месте никогда не даст вам таких же преимуществ в скорости доставки, как в CDN.
Кстати, я не работаю ни в одной из этих компаний. Я использовал веб-сервисы Amazon для размещения видео на веб-сайте моей компании, и это было огромным преимуществом.
источник
Я бы использовал Scalr на ec2 для автоматического мониторинга ваших серверов, он с открытым исходным кодом и очень хорошо работает со службами AWS. Таким образом, если ваш сервер приложений начинает получать слишком много трафика, Scalr автоматически задействует больше серверов и уравновесит нагрузку для вас. Он также автоматически создаст резервную копию ваших баз данных, если кто-то из них выйдет из-под контроля рабов в качестве хозяев. Таким образом, ваши серверы приложений и серверы баз данных контролируются и масштабируются по мере необходимости.
http://code.google.com/p/scalr/
источник
Бесплатное программное обеспечение для балансировки нагрузки, такое как ZenLoader, поможет. Это программное обеспечение с открытым исходным кодом, вы платите только за поддержку.
Я слышал, это покроет ваши требования, если вы уже приобрели серверы.
источник