как продавать трафик | полезные скрипты | технические вопросы
вопросы хостинга | продвижение сайтов | поисковые системы
Автор: Александр Азаров
Источник: Вебпланета, 05.12.2005
Нынче стало модно сравнивать Google с «Матрицей» и «Скайнетом». Некоторых журналистов от таких мыслей берет озноб: «Google строит Суперкомпьютер будущего!»
Они же недоумевают: «В настоящее время в распоряжении компании не менее 100 000 компьютеров. Очень сложно представить не только то, сколько физически могут занимать эти серверы, но и каким образом персоналу удается их обслуживать».
Действительно, когда задумываешься над тем, как работают поисковые системы, голова идёт кругом. Обычный компьютер с Windows на борту трудится несколько минут, чтобы найти файл на своем 200 Gb диске. Google ищет по всему интернету и отвечает на любой запрос за секунду. Как? Постараемся разобраться, попутно ответив и на вопросы, заданные нашими любознательными коллегами.
Сколько серверов обеспечивают работу Google, знают только инсайдеры компании. Может быть, рубеж в 100 000 машин уже взят, может быть, нет. В любом случае, счет идёт на десятки тысяч компьютеров и парк их постоянно эволюционирует.
Прежде всего, разберёмся, зачем такая прорва машин, почему нельзя было ограничиться небольшим количеством новейших суперкомпьютеров? Наверняка, их было бы легче обслуживать, чем тысячи серверов. Однако, создатели Гугла научились не доверять технике, потому что в числе первых приоритетов у них всегда были безопасность и стабильность — вещи, с компьютерами мало совместимые. Компьютеры отказывают, а суперкомпьютеры — тем более. Когда у вас ломается десять машин из десяти тысяч — не беда, в крайнем случае, вы можете выбросить их и поставить новые. Когда у вас ломается суперкомпьютер — это уже ощутимо; его так просто не заменишь, нужно чинить, а значит, связываться с нестандартным железом.
Альтернатива суперкомпьютерам — кластерная архитектура, при которой большое количество стандартных серверов используются для параллельного решения задач. Для глобальной поисковой машины такое решение подходит идеально.
Участвующие в кластере компьютеры разделены на несколько функциональных типов, которые мы подробно рассмотрим далее. Физически же это самые простые серверы, зачастую дешевле и медленнее тех, на которых крутятся сайты средней руки. Обычным проектам незачем делать кластер, поэтому, когда их вычислительные потребности превышают возможности сервера, у администраторов часто нет альтернативы апгрейду, установке дополнительного процессора или
Таким образом, конфигурация
Компьютеры постоянно докупаются, поэтому в Google работают целые поколения машин различного «года рождения». Однако разница в возрасте в цифровом мире не может превышать 2–3 лет, иначе серверы не уживутся в рамках кластера
Все компьютеры Google собирает специально для себя. Они устанавливаются в стойки, каждая из которых вмещает от 40 до 80 серверов (по 40 юнитов с каждой стороны стойки). При такой плотности размещения вопросы питания и охлаждения становятся критичными. Обычному серверу требуется около 100W, при стандартном КПД блоков питания в 75% получается, что на вход нужно подавать 120–130W. Серверная стойка занимает около 2.3 m2, следовательно, на каждый квадратный метр требуется 4500W. При использовании более мощных машин плотность достигает 8000 W/m2. При этом стандартная плотность, которая предлагается коммерческими датацентрами — от 700 до 1800 W/m2. Поэтому не только серверы, стойки, но и сами датацентры Гуглу приходится подстраивать под себя.
Стоимость альтернативных систем охлаждения и серверов с пониженным энергопотреблением слишком высока. Стойка 10kW потребляет около 10 MWh в месяц. При цене в 15 центов за kW/h (половина идёт на собственно оплату энергии, другая на поддержку систем бесперебойного питания и распределения мощностей) получается, что одна стойка обходится в $1500/месяц. Использование нетрадиционных решений на хардверном уровне, по подсчётам специалистов компании, будет обходиться не менее чем в $5000/месяц за счёт амортизации дорогостоящего оборудования.
Географически кластеры находятся в разных частях планеты, что позволяет не бояться ни природных катаклизмов, ни массовых отключений электричества. Русские пользователи наверняка помнят, как Яндекс полностью отключился
На своих серверах Google использует модифицированное ядро Linux и всё программное обеспечение пишет самостоятельно.
Когда пользователь вводит запрос в Google, браузер обращается к
Вкратце разберемся, что собой представляет индекс, главное богатство поисковых машин.
Он не содержит информацию в явном виде: прежде чем «проиндексироваться», страница проходит через ряд преобразователей. Определяется, какие слова встречаются в документе, с какой частотностью, на каких позициях, с какой гарнитурой и так далее. Эти данные формируют так называемый
Прямой индекс содержит идентификаторы документов (docID), каждому из которых соответствует список идентификаторов слов (wordID). При поиске же используется инвертированный индекс. В нём, наоборот, каждому wordID соответствует
Параллельно с индексом Гугл хранит кеш, полные текстовые копии страниц, каждой из которых соответствует docID из индекса. Они лежат на архивных серверах (document servers).
Итак, пройдя через аппаратный распределитель нагрузки, запрос попадает на один из
Помимо основных этапов есть и другие, которые появились позже: отбор контекстной рекламы и проверка правописания запроса. Эти задачи решаются соответствующими серверами. Алгоритм спеллчека, кстати, является примером самообучения системы, потому что основан не на словарях, а на опыте обработки запросов.
Главное препятствие, которое возникает при
Кластер состоит из одного
Все файлы разделены на блоки (chunks) фиксированной величины. Поскольку Гуглу приходится иметь дело с огромными массивами информации, используется беспрецедентно большой размер — 64Mb. Всем блокам присваиваются уникальные
Поскольку мастер один, нельзя загружать его большим объемом трафика, иначе в системе появится узкое место. Поток данных никогда не проходит через мастер, вместо этого клиенты запрашивают у него адреса нужных
Клиент, зная, что все файлы делятся на куски по 64Mb, преобразует нужный ему диапазон байт в индекс блока (chunk index) и отправляет его вместе с именем файла мастеру, а в ответ получает идентификатор и названия
После этого клиент отправляет ближайшему
Теперь рассмотрим, как происходит запись новой информации, это позволит нам понять и механизм репликации.
Как уже упоминалось, каждый блок в рамках кластера хранится одновременно на трёх
1. Клиент обращается к мастеру с запросом о том, какой
2. Мастер передаёт информацию о главном и двух подчинённых
3. Клиент передаёт данные трём
4. Когда все
5. Главный сервер отправляет своим подчинённым запрос на запись.
6. Подчинённые серверы рапортуют об успешной записи.
7. Главный север сообщает клиенту о завершении операции.
Ошибки на любом из шагов отслеживаются, действия с 3 по 7 могут повторяться несколько раз, прежде чем весь процесс будет запущен заново. Если, например, один из подчинённых серверов не смог полностью записать нужную информацию в блок, он будет повторять попытки. Допустим, одна из попыток окажется успешной после перезагрузки сервера (перезагрузка всегда совершается принудительно простым уничтожением процесса, поэтому занимает несколько секунд). В результате повторной записи файл блока окажется больше, чем два его собрата. Таким образом, Гугл не может гарантировать побайтную точность всех копий, но это и не требуется — главное, чтобы вся информация была успешно записана, а адреса переданы клиенту и
Теперь рассмотрим механизм, который позволяет мастеру быть в курсе всего происходящего.
Каждый
Если
Другой случай ререпликации — профилактический, в целях более точной балансировки нагрузки. Когда к кластеру подключают партию серверов, их нельзя наводнять новыми файлами, иначе образуется так называемый hot spot, место с неоправданно высокой нагрузкой. Поэтому мастер копирует часть уже заполненных блоков, освобождая диски старых серверов.
Каждый блок в системе имеет свою версию (chunk version), которая обновляется после любого успешного изменения. Если
Удаление файлов осуществляется не мгновенно. Сначала файл исчезает из индекса мастера и переименовывается. Если через три дня он не возвращается в индекс, то во время очередной проверки мастер дает команду на удаление. Такой подход имеет несколько преимуществ. Поскольку «уборка мусора» проходит систематически, не возникнет проблем в случае потери единичного запроса на удаление. Кроме того, все действия совершаются во время регулярных сеансов связи мастера с
Для Google отказ оборудования является нормой, а не исключением. Серверы и компоненты выходят из строя каждый день. Механизм репликации позволяет сохранить информацию в целостности: блок нельзя восстановить только в том невероятном случае, когда в течение нескольких минут кластер безвозвратно теряет три независимых сервера. В любом случае, опасности подвергается лишь малая доля информации. Гораздо более опасна потеря
Всё, что происходит в рамках кластера, записывается в лог, который имеет несколько копий, как и вся остальная информация системы. Никакие изменения не становятся публичными до тех пор, пока мастер не удостоверится в успешной репликации лога.
В кластере существуют так называемые «тени»
При отказе
Ссылки по теме: видеозаписи лекций «Как устроен Гугл» в МФТИ и МИЭМ, 6 и 7 марта 2007 года.
как продавать трафик | полезные скрипты | технические вопросы
вопросы хостинга | продвижение сайтов | поисковые системы
