Десятки миллионов пользователей просматривают Avito и публикуют почти миллион новых объявлений ежедневно. Сокращение времени появления новых объявлений в поиске - одна из важных задач сервиса. Команда поиска Avito провела в этом направлении ряд оптимизаций, значительно уменьшив время индексации, и, в качестве следующего шага, рассматривала вариант c Delta-индексами, но в результате оказалось возможным реализовать Real Time-индексы. Таким образом мы обеспечили техническую возможность практически мгновенного попадания новых объявлений в поиск в условиях высоких нагрузок по чтению (до 17000 rps) и обновлению (до 1000 rps).
Решить эту и ряд других задач нам удалось после перехода на новую версию системы полнотекстового поиска SphinxSearch, появившуюся в этом году. Мы давно и успешно используем Sphinx для решения различных задач, связанных с поиском, но необходимый нам функционал был полностью доступен только в альфа-версии Sphinx 3.0. После ряда экспериментов и общения с командой разработчиков инструмента, мы решили опробовать альфа-версию в бою, чтобы быстрее получить необходимые нам улучшения, а заодно помочь довести Sphinx до стабильной версии.
В докладе мы подробно расскажем:
- чего не хватало в предыдущей версии Sphinx, какие фичи версии 3.0 были наиболее интересны нам;
- каким образом мы организовали инфраструктуру, чтобы плавно перейти на новую версию Sphinx незаметно для остальной команды, не нарушив работу сервиса, как устроены отдельные подсистемы, как они совершенствовались в ходе работы;
- с какими проблемами мы столкнулись в процессе и как их решили;
- как тестировали, фиксили баги и писали репорты, взаимодействовали с командой разработчиков Sphinx.
Кроме того, мы на реальных цифрах покажем, каким образом улучшения повлияли на производительность.