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

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

Upload: ontico

Post on 16-Nov-2014

7.118 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

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

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

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

2

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

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

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

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

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

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

3

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

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

Сообщества

Мероприятия

Видео

Подарки

Помощь

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

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

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

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

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

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

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

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

4

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

Как устроен 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

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

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

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

6

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

От 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

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

8

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

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

Search processing

Even

t

Indexer service + DB

Sear

ch

Upd

ate

Query service Replication

Que

ry

ServicesGet Entity cache

Presentation

Cache

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

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

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

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

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

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

9

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

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

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

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

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

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

Get session for Schema

Execute queries

Reduce results

Schedule queries

Load results

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

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

Эффективность кэширования• Кэшируются только 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

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

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

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

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

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

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

13

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

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

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

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

14

Группы

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

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

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

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

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

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

Большие

группы

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

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

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

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

15

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

Спасибо!

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

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