Views Comments Previous Next Search

Как быстро найти то, что никто не терял

3911082
НаписалАлексей Гусев20 сентября 2010

Яйцо, курица — уже не важно

Как быстро найти то, что никто не терял — Интервью на Look At Me

Вечер пятницы. Яйцеголовый сидит у себя дома и немного грустит — никто не пригласил его на вечеринку.

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

Как быстро найти то, что никто не терял. Изображение № 1.

Он — увлекающаяся личность, поэтому вместо того, чтобы читать о проблеме, он обращает внимание на одну деталь —

Как быстро найти то, что никто не терял. Изображение № 2.

В 2008 году Яйцеголовый прочитал, что в Интернете больше триллиона уникальных страниц. Значит сейчас наверняка уже все 10 триллионов, наверное! 

Как в этом можно что-то найти за четверть секунды? 

Именно поэтому Яйцеголового не пригласили на вечеринку — вместо того, чтобы разобраться в себе, он решил разобраться в поиске.

Яйцо, курица — уже не важно

10 000 000 000 000 — насколько это много?

Вот у вас есть очень хороший компьютер и он в секунду может просмотреть миллион страниц (у вас такого нет, но допустим есть). Знаете, сколько времени ему понадобится, чтобы просканировать 10 триллионов страниц?

Почти 4 месяца. То есть, поисковая система работает намного быстрее, чем ваш воображаемый крутой компьютер.

В новогоднюю ночь спрашиваете, 1 мая результаты поиска ждут вас. Все самое свежее из интернета.

Надеюсь, Яйцеголовый наткнется на эту статью до того, как прочитает кучу скучных штук про spiders, crawlers, PageRank и все в таком духе.

Как это работает

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

Итак, первое что нам пришло в голову и что обрабатывает запросы по 4 месяца. Компьютерщики называют такие решения «решение в лоб».

Как быстро найти то, что никто не терял. Изображение № 3.


«Чтобы было быстрее», — думают компьютерщики, — «нам надо как-то сохранить весь Интернет на своем компьютере». Но перед ними встают две проблемы: первая очень серьезная, а вторая — так себе:

  1. Если скачивать весь интернет, то неизбежно нечаянно скачаешь детскую порнографию, а значит сервер могут конфисковать
  2. Нужно очень много места, в один компьютер весь интернет не поместится

Тогда компьютерщики надевают свои растянутые свитера, лохматят волосы, отращивают усы и идут на совещание. Где решают, что надо купить еще компьютеров.

Мало компьютеров — мало проблем

Не все проблемы можно решить количеством. Например, наняв 9 женщин вы не заставите их родить одного ребенка за 1 месяц.

С компьютерами полегче. Вот что придумывает главный компьютерщик по дороге на работу одним погожим апрельским утром:

  1. Разделить весь интернет на миллион частей
  2. Купить миллион компьютеров, чтобы каждый отвечал за свою часть, а о других ничего не знал
  3. Когда нам приходит запрос на поиск, передавать этот запрос миллиону наших компьютеров одновременно
  4. Обработать ответы от них можно очень быстро и показать результаты

Тогда это будет выглядеть так:

Как быстро найти то, что никто не терял. Изображение № 4.


Значит на запрос Яйцеголового можно ответить за 10 секунд**! Это не так уж быстро, но по крайней мере не надо ждать 4 месяца.

Это опять работает пресловутый принцип «разделяй и властвуй», которым пропитаны все растянутые свитеры в мире. Другими словами, главный компьютерщик придумал вот что:

Как быстро найти то, что никто не терял. Изображение № 5.

И таким образом компьютерщики создают распределенные системы.

Верните мои деньги! 10 секунд ОК, но обещали четверть секунды!

Дальнейшая оптимизация поисковой системы связана со всякими улучшениями. Не все из них интересные. Вот некоторые из них: нахождение и удаление дубликатов, локальный поиск, улучшение алгоритмов индексирования документов, кеширование результатов поиска. 

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

Но даже все, что я говорил до этого, не так просто. Как, например, разделить интернет на миллион частей? Он же не торт. 

Можно, например, чтобы один сервер искал по страницам с кошками, другой — с собаками, третий — с Леди Гагой. Но ведь интернет наполовину состоит из кошек и Леди Гаги, поэтому такое разбиение не подходит — все о кошках на один сервер не поместится.

Как быстро найти то, что никто не терял. Изображение № 6.
    — Веселый способ распределения интернета по серверам. Других преимуществ у него нет.

Или думаете скачивание интернета — простая операция? Вот скачаете вы главную страницу Look At Me. Так завтра на ней уже новые посты будут. Значит надо скачивать интернет постоянно!

Но все это не очень важно. Понимание принципа разделения и властвования — уже большое преимущество в борьбе с компьютерщиками.

Компьютерщики масштабируются, а вы?

Допустим, в семье компьютерщиков два ребенка. Когда мама и папа уезжают в отпуск, они отдают одного ребенка одной бабушке, а другого — другой. «Да, эта схема масштабируется», — говорят они, проходя паспортный контроль на другом континенте.

А вы масштабируетесь? Есть идеи, как разделять и властвовать?

Как быстро найти то, что никто не терял. Изображение № 7.

    * — изображение для поста Associated Press
    ** —
после первой минуты разговора без учета того факта, что мы скачали интернет — это на несколько порядков может увеличить скорость поиска
    *** — первой была курица

   See you!

Рассказать друзьям
39 комментариевпожаловаться

Комментарии

Подписаться
Комментарии загружаются