Поисковая система Одноклассники.ру (Андрей Шевчук)
DESCRIPTION
TRANSCRIPT
Поисковая система Одноклассников
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