Поисковая система Одноклассники.ру (Андрей Шевчук)

Post on 16-Nov-2014

7.123 views 4 download

description

 

Transcript of Поисковая система Одноклассники.ру (Андрей Шевчук)

Поисковая система Одноклассников

2

Одноклассники в цифрах• Что у нас есть:

– 185 млн аккаунтов;– 7 млн групп;– .....

• 5.5 млн пользователей онлайн;• В секунду:

– 250 000 страниц, 260 000 фото, 150 Гбит;– 8 000 сообщений и комментариев;– 3 000 поисковых запросов.

Задачи поисковой системы

3

Пользователи

Музыка Группы

Сообщества

Мероприятия

Видео

Подарки

Помощь

ГородаИнтересы

Пользователи групп

Выбор нового решения

• У нас уже работал поиск пользователей на MS SQL, что упростило определение технических требований.

• Нужен был OpenSource-проект, написанный на Java.

• Тестировали Solr, но он нас совсем не устроил.• Используя Solr, провели необходимые

эксперименты с Lucene.• Прототип на Lucene превзошел ожидания.

4

Как устроен Lucene?

5

The bright blue butterfly hangs on the breeze

It’s best to forget the great sky and to retire from every wind

Under blue sky, in bright sunlight, one need not search around

Term DocId

blue 1,2

bright 1,2

butterfly 1

breeze 1

hangs 1

need 2

search 2

sky 2

Term DocId

best 1

forget 1

great 1

retire 1

sky 1

wind 1

DocId Values

1 333, Author A

2 777, Author C

DocId Values

1 555, Author C

Toke

nize

rs &

Filt

ers

& In

dexW

riter

Inde

x Re

ader

& S

earc

her &

Que

ry p

arse

r

Что мы реализовали в Lucene за 3 года:

• собственную репликацию;• хранение индексов в памяти;• выполнение поиска на индексах;• загрузку хранимых полей;• новые виды запросов.

6

От MS SQL к Lucene• На Indexer хранится база с данными для индекса.• Indexer готовит индекс и рассылает изменения.• Query-сервера исполняют запросы на индексе.

7

Search processing

Even

t

Indexer service + DB

Sear

ch

Upd

ate

Query service Replication

Que

ry

ServicesGet Entity cache

Presentation

Cache

8

Эксплуатация первой версии• Если вам что-то не нравится при нагрузочном

тестировании, лучше найдите причину• Если что-то нужно, сделайте это регулярным

Search processing

Even

t

Indexer service + DB

Sear

ch

Upd

ate

Query service Replication

Que

ry

ServicesGet Entity cache

Presentation

Cache

Мгновенный поиск и социальный граф• Одновременный поиск по трём

большим индексам.• Временные персональные

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

• Первые выдачи из тулбара полностью идут из персонального индекса.

• Во многих разделах сайта есть подсказки по друзьям, работающие на персональном индексе.

9

Семеро одного не ждут

• В персональный индекс дольше всего собираются группы и сообщества.

• Быстрее всего собираются друзья и друзья друзей.

• Дольше всего идет поиск по пользователям.

• Быстрее всего – по сообществам.

Get session for Schema

Execute queries

Reduce results

Schedule queries

Load results

waitAll ()waitFor (queries complete)waitAtLeast (result items)

Эффективность кэширования• Кэшируются только 5% запросов.• Попадание в кэш доходит до 60%.• На топ 1000 запросов приходится < 2%.

11

Search processing

Even

t

Indexer service + DB

Sear

ch

Upd

ate

Query service Replication

Que

ry

ServicesGet

Presentation

Cache Get ServicesEntity cache

12

Кэширование и нагрузкаCache Cache

Service Service Service*2 *2 *2

Service 0-19 Service 20-39 Service 40-59 Service 60-79 Service 80-99

37

Разделять или совмещать?

• Пока систем и опыта мало, лучше разделять:+ системы не влияют друг на друга;+ проще тестировать и выкладывать.

• Когда однотипных систем становится много, лучше начать их объединение:+ проще следить за работой;+ везде одна версия и настройки;- каждый раз нужно тестировать все;- сложнее решать возникающие проблемы.

13

Поиск пользователей группы

• Пользователи и состав групп находятся в разных сервисах.• Размеры групп варируются от нескольких человек до

миллионов.• Для заиндексированых групп применяются обновления.• Маленькие группы «забываются» через час.

14

Группы

Пользователи

Поисковая система

Основная память

Внешняя память

Сервисы портала

Маленькие группы

Большие

группы

Поиск пользователей онлайн• В первой версии искали в индексе пользователей

+ легко запустить;+ надежно работает;– медленно работает;– сложная логика.

• Сейчас ищем по отдельному индексу, в котором только пользователи онлайн+ быстро работает;+ простая логика;– более 200.000 изменений в минуту;– система зависит от индексирующего сервера.

15

Спасибо!

Алексей ШевчукРазработчик поисковых системОдноклассники

Работа у нас: http://v.ok.ru