Подтвердить что ты не робот

Как вы масштабируете HTTP-сервер, например Google?

Я часто удивляюсь, как я могу попасть на www.google.com из любой точки мира в любое время и быстро вернуть возвращенную страницу.

Конечно, они сжимают свой вывод и сохраняют минимальный дизайн - это помогает.

Но они должны иметь миллионы одновременных обращений к коробке, сидящей в Интернете, которую DNS перечисляет как "www.google.com".

Все, кто настроил Apache или другие веб-серверы, знают, что все отлично и супер быстро, пока вы не начнете получать несколько тысяч одновременных подключений, не говоря уже о миллионах!

Итак, как они это делают? Я думаю, у них есть целая ферма серверных машин, но вы никогда не узнаете об этом. Когда я отправился в Verizon только сейчас, URL был www22.verizon.com. Вы никогда не видите "www22.google.com", никогда.

Любые идеи о том, какие конкретные технологии они используют, или о том, какие технологии могут использовать люди, не относящиеся к Google, сделать то же самое?

4b9b3361

Ответ 1

google.com, update.microsoft.com и другие сервисы, которые обрабатывают удивительно высокую совокупную пропускную способность, делают большую часть своей магии через DNS.

BGP Anycast routing используется для объявления IP-адреса своих DNS-серверов из нескольких точек по всему миру. Каждый DNS-сервер настроен на разрешение google.com на IP-адреса в центре обработки данных, который географически закрыт. Таким образом, это первый уровень балансировки нагрузки, основанный географически.

Далее, хотя DNS-запрос для google.com вернет только небольшое количество IP-адресов, DNS-сервер быстро циклически проходит через большой диапазон адресов в своих ответах. Каждый клиент, запрашивающий google.com, получит конкретный ответ, и ему будет разрешено кэшировать этот ответ некоторое время, но следующий клиент получит другой IP-адрес. Таким образом, это второй уровень балансировки нагрузки.

В-третьих, они используют традиционные балансировки нагрузки на сервер для сопоставления сеансов с одним IP-адресом на несколько серверных серверов. Таким образом, это третий уровень балансировки нагрузки.

Ответ 3

В открывшемся доме Google в Остине прошлой ночью Алан Юстас показал картину дата-центра Google в Даллесе, штат Орегон, и сказал, что это было примерно 3 футбольных поля.

Это один из новых, но Google имеет несколько центров обработки данных. Это не похоже на то, что каждый запрос отправляется на один и тот же компьютер.

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

Вот некоторые сведения о том, как это облегчается:

http://research.google.com/archive/bigtable.html
http://labs.google.com/papers/gfs.html

И просто http://research.google.com/ в целом, там много интересной информации.

Ответ 4

Moishe является правильным: хотя простое предоставление статического веб-контента в масштабе Google достаточно сложно, оно довольно хорошо понято, и многие другие люди делают то же самое.

Тем не менее, это действительно доставка динамического контента, для которого Google был первопроходцем, поскольку их бумага начала все: Анатомия поисковой системы. Есть много умных техник, некоторые из которых были упомянуты здесь, но все же... Сделайте любой запрос в Google, с условиями запроса, которые не принадлежат друг другу - они не будут кэшироваться - и вы все равно получите результат возвращается к вам через пару сотен миллисекунд: это абсолютно невероятно.

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

Google умело открывать (в некоторой степени) ум, который заставляет все это случиться. В конце концов, все сводится к тому, чтобы все было хорошо масштабироваться горизонтально. Это то, что Google может не отставать от экспоненциального роста Интернета: просто добавьте больше оборудования в свои BigTable, Map/Reduce и фермы файловой системы Google. Используя большое количество товарного оборудования, с хорошей инфраструктурой и управлением вокруг него, Google может позволить себе хранить весь индекс в памяти, а запросы с одной машины на другую быстрее, чем на диск.

Между тем, Yahoo! купил все больше и больше монолитных машин, пока Солнце не смогло сделать их достаточно большими, и им пришлось перейти на Hadoop!, слишком поздно.

Масштабирование HTTP-серверов в Google - это легкая часть!

Ответ 5

http://www.akamai.com

Или, переведя на английский язык (и, возможно, опираясь на ответ Криса), используйте сеть доставки контента (CDN) с узлами по всему миру - обратите внимание, что это не только центры обработки данных, но и фактические веб-серверы (хотя я уверен большинство не сделало бы огромных костей над различием). Акамай - всего лишь один пример; нажмите google для "сети доставки контента", и вы обязательно найдете другие.

Вы также можете реализовать стратегию кэширования, хотя это, скорее всего, не даст вам достаточно далеко.;)

Ответ 6

В дополнение к крупным веб-фермам, без сомнения, они делают много кэширования. Они могут кэшировать все, что угодно, от содержимого страницы, до частых поисковых запросов. И кеширование - это то, что могут сделать и не смертельные люди Google.

Ответ 7

Это обычная обработка интернет-трафика. Google буквально имеет целые центры обработки данных по всей планете, которые отвечают на www.google.com

Ответ 8

У них также есть пользовательский веб-сервер, стек TCP/IP [вместе с инфраструктурой], я читал где-то несколько лет назад... Я сомневаюсь, что Apache или IIS или любой другой коммерческий/популярный веб-сервер могут соответствовать этому...

Ответ 9

Существует отличная статья по масштабированию HTTP-серверов:

http://www.kegel.com/c10k.html