Как Google может быть так быстро?

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

Каждый раз, когда я что-то ищу (один из нескольких раз в день), он всегда поражает меня тем, как они служат результатам почти или менее чем в 1 секунду. Какую конфигурацию и алгоритмы они могли бы выполнить, выполнив это?

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


Вот некоторые из замечательных ответов и указателей:

Ответ 2

Задержка уничтожается при доступе к диску. Поэтому разумно полагать, что все данные, используемые для ответа на запросы, хранятся в памяти. Это подразумевает тысячи серверов, каждый из которых реплицирует один из многих осколков. Поэтому критический путь для поиска вряд ли ударит по любой из своих флагманских технологий распределенных систем GFS, MapReduce или BigTable. Они будут использоваться для обработки результатов искателя грубо.

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

Таким образом, возможная архитектура довольно проста: серверы переднего плана обрабатывают запрос, нормализуя его (возможно, удаляя стоп-слова и т.д.), а затем распределяя его по любому подмножеству реплик, которому принадлежит эта часть пространства запросов (альтернативная архитектура для разделения данных вверх по веб-страницам, так что для каждого запроса необходимо связать один из каждого набора реплик). Вероятно, многие, много реплик, и самые быстрые ответы. Каждая реплика имеет запросы преобразования индексов (или отдельные термины запроса) в документы, которые они могут использовать для быстрого поиска результатов в памяти. Если разные результаты возвращаются из разных источников, интерфейсный сервер может оценивать их по мере того, как он выплевывает html.

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

Ответ 4

Одним из фактов, которые мне посчастливилось найти, является то, что Google фактически управляется биоинформатикой (кей, я считаю это забавным, потому что я биоиндустрия... thingy). Позвольте мне объяснить.

Биоинформатика на раннем этапе имела очень сложную задачу для поиска небольших текстов в гигантских струнах. Для нас "гигантская струна" - это, конечно, ДНК. Часто не одна ДНК, а база данных нескольких ДНК разных видов/индивидуумов. Маленькие тексты представляют собой белки или их генетический аналог, ген. Большая часть первой работы вычислительных биологов была ограничена, чтобы найти гомологии между генами. Это делается для того, чтобы установить функцию вновь обнаруженных генов, отметив сходство с уже известными генами.

Теперь эти последовательности ДНК действительно очень большие и (потерять!) поиск должен выполняться чрезвычайно эффективно. Таким образом, большая часть современной теории поиска строк была разработана в контексте вычислительной биологии.

Однако, довольно давно, обычный текстовый поиск был исчерпан. Необходим новый подход, который позволил бы искать большие строки в сублинейном времени, то есть не рассматривая каждый отдельный символ. Было обнаружено, что это можно решить, предварительно обработав большую строку и создав над ней специальную структуру данных индекса. Было предложено много разных таких структур данных. У каждого есть свои сильные и слабые стороны, но есть тот, который особенно примечателен тем, что позволяет искать в постоянное время. Теперь, по порядку, в котором работает Google, это не является строго истинным, потому что необходимо учитывать балансировку нагрузки между серверами, предварительную обработку и некоторые другие сложные вещи.

Но по сути, так называемый индекс q-gram позволяет искать в постоянное время. Единственный недостаток: структура данных становится смехотворно большой. По сути, чтобы обеспечить поиск строк с точностью до q символов (отсюда и название), для этого требуется таблица, которая имеет одно поле для каждой возможной комбинации из q букв (то есть q S где S - размер алфавита, скажем, 36 (= 26 + 10)). Кроме того, должно быть одно поле для каждой позиции букв в строке, которая была проиндексирована (или в случае google для каждого веб-сайта).

Чтобы уменьшить размер шрифта, Google, вероятно, будет использовать несколько индексов (на самом деле они предлагают такие услуги, как коррекция правописания). Самые верхние не будут работать на уровне персонажа, а на уровне слов. Это уменьшает q, но делает S бесконечно большим, поэтому им придется использовать таблицы хеширования и столкновений, чтобы справиться с бесконечным количеством разных слов.

На следующем уровне эти хешированные слова будут указывать на другие структуры данных индекса, которые, в свою очередь, будут содержать хеш-символы, указывающие на веб-сайты.

Короче говоря, эти структуры данных индекса q-грамм являются, пожалуй, самой центральной частью алгоритма поиска Google. К сожалению, нет хороших нетехнических документов, объясняющих, как работают показатели q-gram. Единственная публикация, которую я знаю, которая содержит описание того, как работает такой индекс,... alas, бакалаврская диссертация.

Ответ 5

Они реализовали хорошие, распределенные, алгоритмы, работающие на огромном количестве аппаратного обеспечения.

Ответ 6

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

Ответ 8

У них в значительной степени есть локальная копия Интернета, кэшированная на тысячах компьютеров в пользовательских файловых системах.

Ответ 9

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

Они используют высоко оптимизированные механизмы хранения для задач, которые они выполняют.

У них есть географически расположенные фермы серверов.

Ответ 10

Попытка обобщенного списка (не зависящего от того, что у вас есть доступ к внутренним инструментам Google):

  • Запросить Parellelize (например, разбить один запрос на более мелкие наборы)
  • Async (сделать как можно больше асинхронности, например, не будет блокировать запрос пользователя)
  • Память/cache (дисковый ввод-вывод работает медленно, как можно больше в памяти)
  • Предварительно вычислить (сделайте как можно больше работы перед рукой, не ждите, когда пользователь запросит данные/обработку)
  • Обратите внимание на свой внешний интерфейс HTML (см. Yslow и друзей)

Ответ 13

Аппаратные средства.

Много и много аппаратного обеспечения. Они используют массивные кластеры товарных ПК в качестве своей фермы серверов.

Ответ 14

TraumaPony - это правильно. Тонны серверов и интеллектуальная архитектура для балансировки нагрузки/кэширования и voila вы можете запустить запрос менее чем за 1 секунду. В сети было много статей, описывающих архитектуру служб google. Я уверен, что вы можете найти их через Google:)

Ответ 17

И алгоритмы, которые могут использовать эту аппаратную мощность. Например, mapreduce.

Ответ 18

Если вас интересует более подробная информация о работе кластера google, я предлагаю эту реализацию с открытым исходным кодом для HDFS.

Он основан на Mapreduce в google.

Ответ 19

  • Многоэтапное хранение, обработка и извлечение данных

  • ЭФФЕКТИВНОЕ РАСПРЕДЕЛЕНИЕ (100 из 1000 машин) вышеуказанных задач

  • Хорошая структура для хранения необработанных данных и обработанных результатов

  • Хорошая структура для извлечения результатов

Как именно все это делается, суммируются всеми ссылками, которые у вас есть в сводке вопросов