Пётр Портнов
Компания: Ozon
Поисковый движок O2 в Ozon — сложная распределенная система, построенная на основе Apache Lucene. Базовый поиск O2 обслуживает операции с десятками миллионов документов с почти 14 тысячами разреженных полей при тысячах RPS.
С одной стороны, производительность и отказоустойчивость движка достигается сложной архитектурой системы — физической репликацией, шардированием, использованием CDN. С другой стороны — обработка тысяч запросов с необходимым временем ответа и пропускной способностью не была бы доступна без более низкоуровневых и точечно локализованных (микро)оптимизаций, специфических для сервиса базового поиска (а зачастую и для Java-рантайма), и которые не так часто встречаются в мейнстримной Java-разработке.
Поговорим про несколько необычных подходов к оптимизации работы базового поиска и историях, связанных с этим.
Ключевые темы:
ByteBuffer
vs VarHandle
и туплы без аллокаций.Objects#requireNonNull(..)
.Также расскажу, как мы следим за производительностью и проводим перформанс-исследования.
Компания: Ozon
Компания: Ozon