Нетипичные подходы к перфу в поисковом движке Ozon

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Поисковый движок O2 в Ozon — сложная распределенная система, построенная на основе Apache Lucene. Базовый поиск O2 обслуживает операции с десятками миллионов документов с почти 14 тысячами разреженных полей при тысячах RPS.

С одной стороны, производительность и отказоустойчивость движка достигается сложной архитектурой системы — физической репликацией, шардированием, использованием CDN. С другой стороны — обработка тысяч запросов с необходимым временем ответа и пропускной способностью не была бы доступна без более низкоуровневых и точечно локализованных (микро)оптимизаций, специфических для сервиса базового поиска (а зачастую и для Java-рантайма), и которые не так часто встречаются в мейнстримной Java-разработке.

Поговорили про несколько необычных подходов к оптимизации работы базового поиска и историях, связанных с этим.

Ключевые темы:

— Использование кодогенерации для уменьшения виртуальных вызовов на горячих путях исполнения поисковых запросов.

— Борьба с аллокациями, ByteBuffer vs VarHandle и туплы без аллокаций.

— Уменьшение индирекций и лишних прыжков по памяти.

— Как уронили перф правильным использованием Objects#requireNonNull(..).

Также спикер рассказал, как следят за производительностью и проводят перформанс-исследования.


Источник: vk.com

Комментарии: