Как вы масштабируете HTTP-сервер, как Google? - PullRequest
31 голосов
/ 17 октября 2008

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

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

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

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

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

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

Ответы [ 9 ]

44 голосов
/ 17 октября 2008

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

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

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

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

15 голосов
/ 17 октября 2008
7 голосов
/ 17 октября 2008

Вчера вечером в открытом доме 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 голосов
/ 26 декабря 2008

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

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

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

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

Тем временем Yahoo! покупал все большие и большие монолитные машины, пока Sun больше не мог сделать их достаточно большими, и им пришлось переключиться на Hadoop !, слишком поздно.

Простота масштабирования HTTP-серверов в Google!

3 голосов
/ 17 октября 2008

http://www.akamai.com

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

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

1 голос
/ 17 октября 2008

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

0 голосов
/ 26 декабря 2008

Есть отличная статья о масштабировании HTTP-серверов:

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

0 голосов
/ 17 октября 2008

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

0 голосов
/ 17 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...