Войти Регистрация
System design

27. Подсказки в поисковой строке Яндекса

Сложная

Пройдите шаги: уточните требования, оцените нагрузку, выберите решения, нарисуйте схему.

Человек набирает «как оформ», и под строкой появляются «как оформить загранпаспорт», «как оформить самозанятость» и ещё восемь вариантов. Подсказка опоздала больше чем на 100 мс — человек уже набрал следующую букву.

Для расчёта: 300 млн поисковых запросов в день, на каждый клиент отправляет в среднем 8 запросов подсказок (с паузой 50 мс между нажатиями), вечером нагрузка вдвое выше средней.

Словарь — 50 млн самых частых запросов за 30 дней. Когда случается новость (перекрыли мост, вышел сериал), новый запрос должен попасть в подсказки за 5 минут.

В работе: Подсказки срабатывают на каждую букву в поисковой строке и экономят человеку половину набора.

Как проверяем Шаги с вариантами и расчётами проверяем автоматически: число засчитано, если оно в пределах допуска от эталона. Схему вы оцениваете сами по чек-листу. Зачёт — схема набрала 60 % чек-листа и верны 70 % остальных пунктов. Ответ один на подход: после него показываем разбор.
префиксный индексtop-kрепликациясвежестькэш

Источник: Яндекс: как проходит секция дизайна систем для бэкенда (статья на Хабре); сценарий наш. Условие пересказано своими словами.

  1. Уточнить требования — Что выяснить до схемы?
  2. Оценить нагрузку
  3. Индекс — Как отвечать на префикс за единицы миллисекунд?
  4. Свежие запросы — Как добавить в подсказки запрос, который стал частым 3 минуты назад?
  5. Схема — Опишите офлайн-сборку индекса, свежий слой и путь запроса подсказок.