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


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

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

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


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

19 89

19 ответов:

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

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

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

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

Это слишком много, чтобы положить его в один ответ. http://en.wikipedia.org/wiki/Google_platform

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

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

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

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

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

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

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

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

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

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

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

все знают, что это так они используют голубей, конечно!

Ах да, это и Mapreduce.

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

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

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

Они имеют географически расположенные фермы серверов.

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

  1. Parellelize запросы (например, разбить один запрос на меньшие наборы)
  2. асинхронные (сделать как можно более асинхронным, например, не будет блокировать запрос пользователя)
  3. / cache (дисковый ввод-вывод медленный, храните как можно больше в памяти)
  4. предварительно вычислить (Do как можно больше работы перед рукой, не ждите, пока пользователь попросит данные / обработку)
  5. забота о вашем front-end HTML (см. Yslow и друзей)

вы можете найти главная страница исследования google некоторые указатели на исследовательские работы, написанные некоторыми из парней google. Вы должны начать с объяснения файловая система google и алгоритм map/reduce чтобы попытаться понять, что происходит за страницами google.

эта ссылка также очень информативна за кулисами запроса google

оборудование.

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

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

Хенрир, вероятно, прав.

Map Reduce не играет роли для самого поиска, а используется только для индексации. Проверьте это видео интервью с картой уменьшить изобретателей.

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

http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html

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

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

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

  1. многоступенчатый, хранения данных, обработки и поиска

  2. эффективное распределение (100 из 1000 машин) вышеуказанных задач

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

  4. хорошая структура для получения результатов

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