РАЗДЕЛЫ
Архив
|
Архитектура Google≡ Архив | архивная статья | 05.12.2005 15:17 Нынче стало модно сравнивать Google с «Матрицей» и «Скайнетом». Некоторых журналистов от таких мыслей берет озноб: «Google строит Суперкомпьютер будущего!» Они же недоумевают: «В настоящее время в распоряжении компании не менее 100000 компьютеров. Очень сложно представить не только то, сколько физически могут занимать эти серверы, но и каким образом персоналу удается их обслуживать». Действительно, когда задумываешься над тем, как работают поисковые системы, голова идет кругом. Обычный компьютер с Windows на борту трудится несколько минут, чтобы найти файл на своем 200Gb диске. 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 и все программное обеспечение пишет самостоятельно. ![]() (схема 1, обработка запроса) Когда пользователь вводит запрос в Google, браузер обращается к Но прежде чем это сделать, вкратце разберемся, что собой представляет индекс, главное богатство поисковых машин. Он не содержит информацию в явном виде: прежде чем «проиндексироваться», страница проходит через ряд преобразователей. Определяется, какие слова встречаются в документе, с какой частотностью, на каких позициях, с какой гарнитурой и так далее. Эти данные формируют так называемый Прямой индекс содержит идентификаторы документов (docID), каждому из которых соответствует список идентификаторов слов (wordID). При поиске же используется инвертированный индекс. В нем, наоборот, каждому wordID соответствует Параллельно с индексом Гугл хранит кеш, полные текстовые копии страниц, каждой из которых соответствует docID из индекса. Они лежат на архивных серверах (document servers). Итак, пройдя через аппаратный распределитель нагрузки, запрос попадает на один из Помимо основных этапов есть и другие, которые появились позже: отбор контекстной рекламы и проверка правописания запроса. Эти задачи решаются соответствующими серверами. Алгоритм спеллчека, кстати, является примером самообучения системы, потому что основан не на словарях, а на опыте обработки запросов. Главное препятствие, которое возникает при Кластер состоит из одного Все файлы разделены на блоки (chunks) фиксированной величины. Поскольку Гуглу приходится иметь дело с огромными массивами информации, используется беспрецедентно большой размер — 64Mb. Всем блокам присваиваются уникальные ![]() (схема 2, чтение информации) Поскольку мастер один, нельзя, загружать его большим объемом трафика, иначе в системе появится узкое место. Как можно видеть на схеме, поток данных никогда не проходит через мастер, вместо этого клиенты запрашивают у него адреса нужных Весь процесс на примере простейшей операции чтения показан на схеме 2. Клиент, зная, что все файлы делятся на куски по 64Mb, преобразует нужный ему диапазон байт во индекс блока (chunk index) и отправляет его вместе с именем файла мастеру, а в ответ получает идентификатор и названия После этого клиент отправляет ближайшему Теперь рассмотрим, как происходит запись новой информации (схема 3), это позволит нам понять и механизм репликации. Как уже упоминалось, каждый блок в рамках кластера хранится одновременно на трех ![]() (схема 3, запись информации) 1. Клиент обращается к мастеру с запросом о том, какой Ошибки на любом из шагов отслеживаются, действия с 3 по 7 могут повторяться несколько раз, прежде чем весь процесс будет запущен заново. Если, например, один из подчиненных серверов не смог полностью записать нужную информацию в блок, он будет повторять попытки. Допустим, одна из попыток окажется успешной после перезагрузки сервера (перезагрузка всегда совершается принудительно простым уничтожением процесса, поэтому занимает несколько секунд). В результате повторной записи файл блока окажется больше, чем два его собрата. Таким образом, Гугл не может гарантировать побайтную точность всех копий, но это и не требуется — главное, чтобы вся информация была успешно записана, а адреса переданы клиенту и Теперь рассмотрим механизм, который позволяет мастеру быть в курсе всего происходящего. Каждый Если Другой случай Каждый блок в системе имеет свою версию (chunk version), которая обновляется после любого успешного изменения. Если Удаление файлов осуществляется не мгновенно. Сначала файл исчезает из индекса мастера и переименовывается. Если через три дня он не возвращается в индекс, то во время очередной проверки мастер дает команду на удаление. Такой подход имеет несколько преимуществ. Поскольку «уборка мусора» проходит систематически, не возникнет проблем в случае потери единичного запроса на удаление. Кроме того, все действия совершаются во время регулярных сеансов связи мастера с Для Google отказ оборудования является нормой, а не исключением. Серверы и компоненты выходят из строя каждый день. Механизм репликации позволяет сохранить информацию в целостности: блок нельзя восстановить только в том невероятном случае, когда в течение нескольких минут кластер безвозвратно теряет три независимых сервера. В любом случае, опасности подвергается лишь малая доля информации. Гораздо более опасна потеря Все, что происходит в рамках кластера, записывается в лог, который имеет несколько копий, как и вся остальная информация системы. Никакие изменения не становятся публичными до тех пор, пока мастер не удостоверится в успешной репликации лога. В кластере существуют так называемые «тени» При отказе комментарии(36) разделы: Архив Материалы по теме
Другие |
Последние комментарии
Гость про Суд велел "Твиттеру" сдать сторонников WikiLeaks (12)
Гость про Книгоиздатели начали судиться с торрентами (2)
l_e_x_a про "ВКонтакте" принудительно протестирует пользователей (35)
andrey_kadetov про Google назвал Facebook "ловушкой без выхода" (6)
volv про День папуасского робошахтёра (14)
l_e_x_a про Русские кликботы признаны самыми активными (11)
все комментарии looli спрашивает: Земля вампиров смотреть онлайн в HD качестве looli спрашивает: Зеленый Фонарь смотреть онлайн в HD качестве looli спрашивает: Защитник смотреть онлайн в HD качестве looli спрашивает: Запретная зона смотреть онлайн в HD качестве looli спрашивает: Закон доблести смотреть онлайн в HD качестве looli спрашивает: Вышибала смотреть онлайн в HD качестве looli спрашивает: Встречный ветер смотреть онлайн в HD качестве looli спрашивает: Все любят китов смотреть онлайн в HD качестве |
Copyright © 2001-2020 «Вебпланета». При перепечатке ссылка на «Вебпланету» обязательна.