13 декабря 2010 в 19:21

Инфраструктура Blekko: 800 серверов, свой краулер и модули Perl

Новый поисковик Blekko начал работу полтора месяца назад и вполне естественно привлёк к себе пристальное внимание экспертов. Не только благодаря инновационному интерфейсу и слэштегам, но и в принципе, всё-таки в наше время запуск нового поисковика общего профиля — большая редкость. Мало кто осмелится тягаться с Google. Кроме всего прочего, это требует немалых финансовых вливаний.

Давайте посмотрим, что представляет из себя инфраструктура Blekko, о которой в подробностях рассказали CEO Ричард Скрента и CTO Грег Линдал.

Дата-центр Blekko насчитывает около 800 серверов, каждый с 64 ГБ RAM и восемью SATA-дисками по терабайту. Система резервирования RAID не используется совсем, потому что RAID-контроллеры сильно снижают производительность (с 800 МБ/с для восьми дисков до 300-350 МБ/с).

Чтобы избежать потери данных, разработчики используют полностью децентрализованную архитектуру и ряд необычных трюков.

Во-первых, они разработали «поисковые модули», которые одновременно сочетают в себе и функции краулинга, и анализа, и поисковой выдачи. За счёт этого в их кластере из 800 серверов сохраняется полная децентрализация. Все серверы равны между собой, нет выделенных специализированных кластеров, например, для краулинга.

Серверы в децентрализованной сети обмениваются данными, так что в каждый момент времени копия информационных блоков содержится на трёх машинах. Как только диск или сервер выходит из строя, остальные серверы сразу это замечают и начинают процесс «лечения», то есть дополнительной репликации данных с потерянной системы. Такой подход, по словам Скренты, эффективнее, чем RAID.

Если диск выходит из строя, то инженер идёт в дата-центр и меняет его. С количеством дисков около 6400 дежурным админам, наверное, не приходится много спать.

Серверы индексируют 200 млн веб-страниц в день, а всего в индексе уже 3 млрд документов. Частота обновления составляет от нескольких минут для главных страниц популярных новостных сайтов до 14 дней. Этот параметр наглядно демонстрируется в поисковой выдаче: по слэштегу /date видно, какие страницы индексировались последними и сколько секунд назад.



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

С технической точки зрения, им удалось сделать такую реализацию MapReduce, которая работает маленькими итерациями и обеспечивает мгновенное отображение каждой итерации. Это можно посмотреть, если рефрешить SEO-страничку, которая прилагается к каждому поисковому результату.



Секрет успеха такого неординарного решения — Perl. Разработчики говорят, что они чрезвычайно довольны своим выбором, в библиотеке CPAN есть модули на любой вкус, а на каждой машине установлено более 200 модулей. На серверах стоит CentOS и поскольку они все одинаковы, то можно использовать идентичный дистрибутив.
+40
272
15
alizar 1838,8 G+

Комментарии (24)

+4
prairie_dog, #
Если они сделают социальный поисковик с хештегами (уже есть), с лентой(анализ поисковых запросов юзера и выдача ему новых страниц, аля лента в твитере), то может и прокатит. Ну и для сеошников примочки, что бы пиарили…
0
Blackside, #
800 серверов — не слишком ли много для начала ?)
0
ChemAli, #
А сколько надо?
+4
Masterkey, #
а механизмы релевантности?

blekko.com/ws/http:%2F%2Fhabrahabr.ru%2F+/urlseo
frequent words: vogue (6) mercurial (6) peertopeer (5) apache (5) kinect (5) javascript (4)

вот такие мы
0
proxor, #
Ну так последние топики посмотрите. Всё верно — куча статей про плеер из журнала Vogue, переводы про Mercurial, новости про торренты, выход ASF из комитета Java, необычные применения Kinect, ну и регулярные топики про javascript.
+2
TravisBickle, #
Эх… хочу туда на работу…
0
niksite, #
Ага, админом. Как в известном анекдоте.
–11
niksite, #
> Новый поисковик Blekko начал работу полтора месяца назад и вполне естественно привлёк к себе пристальное
> внимание экспертов. Не только благодаря инновационному интерфейсу и слэштегам, но и в принципе

Ой, какой приторный текст. Это вы стебетесь так, или на полном серьёзе таким языком говорите?

> Секрет успеха такого неординарного решения — Perl

Довольно странный выбор. Сейчас всё больше на python каком пишут, а на perl разве что дописывают то, что десяток-другой лет назад создавалось.

BTW, удачи вам. Пусть гугл не слишком расслабляется.
+2
dom1n1k, #
Будем надеяться, что их ждет больший успех, нежели cuil.com.
Который был довольно многообещающий и амбициозный поначалу.
+5
Q2W, #
Perl рулит
0
scam, #
В CPAN достаточное количество тормозных модулей. Надеюсь они не юзают LWP для crawling'a :)
+2
BigD, #
Гм. Хороший RAID ускоряет работу HDD. О чем это они?
0
NARKOZ, #
Напомню, что vkontakte также не использует RAID
+1
aazon, #
Напомню что на вопрос а где вы храните информацию, Дуров ответил: «на жестких дисках»
0
NARKOZ, #
RAID не используется, proof
0
errno, #
Может имели в виду, что не используют RAID с избыточностью (1, 5 и тд). Например, обединяют диски в тома средствами LVM, но все равно не понятно зачем CPU грузить.
0
naim, #
Интересно что они юзают для краулинга.Наверняка AnyEvent или что-то более низкоуровневое на базе EV
0
Qk4l, #
Серверы в децентрализованной сети обмениваются данными, так что в каждый момент времени копия информационных блоков содержится на трёх машинах. Как только диск или сервер выходит из строя, остальные серверы сразу это замечают и начинают процесс «лечения», то есть дополнительной репликации данных с потерянной системы


На базе чего это реализовано?
+1
Qk4l, #
Серверы в децентрализованной сети обмениваются данными, так что в каждый момент времени копия информационных блоков содержится на трёх машинах. Как только диск или сервер выходит из строя, остальные серверы сразу это замечают и начинают процесс «лечения», то есть дополнительной репликации данных с потерянной системы.


На базе чего это реализовано?
НЛО прилетело и опубликовало эту надпись здесь
+3
VCoder, #
Меня действительно удивило это:

The real shocker was the strftime() C function's bad behavior. They were tracking down an intermittent performance problem and discovered that it would sometimes access up to 50 files from disk, shoving a stick in the spokes of any application that relied on fast response times thanks to the unexpected disk seeks this causes. It turns out that the function will load information from locale files to help with its formatting job, and even worse it will periodically recheck the files to see if they've changed. This may not sound like much, but for a programmer it's as unexpected as discovering your grandmother moonlighting as a nightclub bouncer.

В вольном переводе это означает, что Сишная функция strftime() обращается к файлам (до 50 файлов!) для выполнения преобразования.
Более того, данная функция периодически проверяет не изменились ли эти файлы.
0
seriyPS, #
Ну видимо настройки локали просматривает всякие. Не знаю, доступ к часам тоже через файл в *nix происходит?
0
seriyPS, #
а, черт, там так и написано. Но вообще странно почему аж 50 файлов…
0
Shtirlits, #
интересно, хот в одном поисковике будет когда нибудь реализован полноценный поиск по регулярным выражениям?? у этих перл, могли бы для эксперимента прикрутить…

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