Обновления данных в поиске за секунды. Быстробновляемые атрибуты в поисковом движке Ozon

Архитектуры и масштабируемость

Java
Поисковые системы
Базы данных / другое
Отказоустойчивость
Распределенные системы
Архитектура данных, потоки данных, версионирование
Надёжность продакшена
Поддерживаемый код
Совместное планирование и разработка
Оптимизация
Хранилища
Обработка данных
Типовые ошибки

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Обычно от поисковых движков не требуется частое (и быстрое) обновление, но в современных e-Commerce-системах это не так: остатки на складах и цена могут меняться очень быстро. Ozon расскажет, как они доработали для этого своё решение на базе Apache Lucene.

Целевая аудитория

Разработчики поисковых движков и систем. Разработчики и архитекторы высоконагруженных систем. Джависты. Борцы за перф. Любопытные разработчики.

Тезисы

Поисковый движок в Ozon — сложная распределённая система, построенная на основе Apache Lucene. Наше решение позволяет эффективно обрабатывать более десятка тысяч разреженных полей в поисковом индексе, осуществляя поиск по миллионам документов при тысячах RPS.

Обычно атрибуты документов обновляются редко (название, описание, категории товара), вследствие чего моментальность доставки таких обновлений до поискового движка не является обязательной. Однако есть и такие свойства (количество на складах, цена), обновления в которых происходят довольно часто и для которых важно как можно быстрее отражать эти изменения при обработке новых запросов. Для реализации этой возможности мы разработали своё собственное «быстрое хранилище».

В этом докладе будет рассказано о том, что потребовалось от системы, поддерживающей быстро обновляемые поля; с какими сложностями мы столкнулись на пути разработки решения, одновременно эффективного, отказоустойчивого и совместимого с Lucene; к какой архитектуре пришли; а также какие планы у нас есть по развитию этой технологии.

Старший разработчик базового поиска в Ozon, занимается созданием новых технических фич в движке, а также тулингом для коллег по команде. Автор анализатора поискового индекса и продвинутого парсера запросов, разработчик быстрого хранилища полей в поисковом индексе.

Основные языки: Java, Rust.

Фанат опенсорса, контрибьютил в ряд проектов, включая Lucene и OpenJDK. Топит за строгую типизацию и максимальную статическую верифицируемость кода.

В свободное время занимается проектами, среди которых биндинги для Flipper Zero и альтернативная модульная реализация игрового сервера.

Ранее работал в геймдеве, занимался созданием игровых серверов и инфраструктуры вокруг них.

Ozon

Ozon — ведущий e-com России. В их IT-команде уже 5 000 специалистов, которые создают продукты для миллионов людей по всей стране и за рубежом. Ozon Tech разрабатывает собственные решения, контрибьютит в Open Source и использует современный стек: Go, C#, Kotlin, Swift TypeScript, Vue.js, Kubernetes и Kafka. Продолжают расти, чтобы повышать доступность сервисов и быть ещё ближе к пользователям.

Видео

Другие доклады секции

Архитектуры и масштабируемость