Как стать автором
Обновить

Как устроен поиск Яндекс.Маркета и что будет, если упадёт один из серверов

Время на прочтение11 мин
Количество просмотров17K
Всего голосов 32: ↑31 и ↓1+30
Комментарии13

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

НЛО прилетело и опубликовало эту надпись здесь
Присоединяюсь с аналогичным, запрашиваешь например «Переходник SATA m.2», получаешь некую выдачу, похожую на релевантную, делаешь сортировку по цене. Все. В выдаче полная каша.
Вообще перестал пользоваться Вашим сервисом даже избегаю я.маркет по причине:
1. В выдачу запроса попадает много хлама, такое ощущение что тебя ниже плинтуса нагнули. К примеру наберите в маркете «хонор 20» и причем здесь самсунг, айфон, реалме и т.п.? Я, не запрашивал эту шнягу. Люди по мою сторону экрана не такие тупые как вы представляете там у себя, максимум опечатка в двух символах но не в 5 и тем-более не в 7 символах. Нам нужна точная выборка.
2. Агрессивность, даже из за этого прошлось сменить браузер.
Интересно, когда первая страница повторяется многократно — это от падения сервиса или так и задумано? Что в их «Недвижимости», что в «Маркете» пару раз напарывался (в основном в мобильном).
И в старых ИЕ они умудряются сожрать страницей 2 гиг. Что такого можно наворотить в простом списке товаров? Впрочем, они даже телепрограмму умудряются сделать тормозящей (это просто табличка, на собеседовании фронтэндщика за час такое сваять можно как тестовое, а они свои проводят как будто марсоход будут строить).
>первая страница повторяется многократно
Неоднократно сталкивался с тем, что поисковая выдача (цены на товар) повторяется многократно (визуально — листается бесконечно, периодически повторяясь). Обращался в ТП, ничего не добился — попросили воспроизвести, при том что я приложил конкретные условия поиска, и описал сразу, что делал.
то, что хочет именно пользователь

Ответ: никогда! Кто платит сервису деньги? Продавцы. Если всегда выдавать самое выгодное предложение, в сервисе останется только один продавец, и зачем тогда нужен сервис?
Или вы думаете, что в aliexpress и google play поиск тоже ненарочно испорчен?
Хм. Вы хотите слишком многого? Впрочем, я тоже. Совсем недавно искал DMT D3E.

DMT Брусок алмазный Credit Card Sized Extra-Fine (1200 mesh, 9 micron), размер: 8,3 x 5,1 x 0,1 см DMT/D3E


При том, что я ищу это в определенной категории, при том, что это сочетание дает уникальный результат (ровно один).

Как думаете, на каком месте этот результат в выдаче? Правильно, не на первом ((( Где-то пятый, может десятый.

Сколько всего правильных ответов например на 5 страницах выдачи? Ответ — два, второй набор, включающий этот брусок, будет на 3 странице.

Что будет, если ввести DMT/D3E, как в правильном ответе? Ничего хорошего, правильный ответ переместится еще дальше от начала.

Что будет, если ввести «DMT/D3E»? Правильный ответ будет первым, но будет еще два неправильных.
Каждый кластер содержит восемь поисковых серверов и один сниппетный.


Интересно, и что же происходит, если «падает» сниппетный сервер?

Один сервер содержит информацию только по одному шарду. Поэтому, чтобы совершить поиск по полному индексу, надо искать на восьми серверах, содержащих разные шарды.


А содержимое восьми шардов одинаковое во всех кластерах или возможны другие варианты?

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


В каком смысле «отойти от кластерной архитектуры»? А что будет взамен? Звучит как мегапрорыв :)
Интересно, и что же происходит, если «падает» сниппетный сервер?

Если падает сниппетный, то поведение аналогично. Другие соседи по кластеру узнают о падении через запрос /status. И в свою очередь тоже перестают отвечать. Кластер закрывается.

А содержимое восьми шардов одинаковое во всех кластерах или возможны другие варианты?

В штатном режиме везде одинаковые. Но бывают другие ситуации:
1) Обновление идет пачками по несколько кластеров. То есть на период обновления могут отличаться.
2) Если сервер лежал, потом включился, там оказался старый шард. Но такой кластер не откроется пользователям.

В каком смысле «отойти от кластерной архитектуры»? А что будет взамен? Звучит как мегапрорыв :)

Иммется ввиду избавиться от сущности «кластер», в которой 8+1 сервер с жесткой связью.
Будет отдельный сервис со сниппетами, а поисковые серверы не будут связаны с другими поисковыми серверами.
Хуже поиска в маркете — только поиск в Алиэкспрессе.
Иногда просто непонятно, как можно выдавать такую похабщину????
я конечно понимаю, что ваша цель — это не помочь покупателю, а привлечь побольше продавцов, но как-то неприятно быть кроликом, которого разводят.
С недавних пор бросил попытки побороть левиафана, товары ищу обычным поиском яндекса. Тоже времени уходит немало, но всё же эффективнее, чем в маркете.
>привлечь побольше продавцов
А что, можно их привлечь неправильным поиском?
Спасибо за интересную статью!

  1. По какому протоколу общаются ваши сервисы? Это HTTP?
  2. Хватает ли возможностей HAProxy? Не возникала ли необходимость писать что-то свое?
  3. Используете ли вы service discovery системы типа consul/zookeeper?
По какому протоколу общаются ваши сервисы? Это HTTP?

Да, HTTP. Есть планы перехода на gRPC.

Хватает ли возможностей HAProxy? Не возникала ли необходимость писать что-то свое?

Пока полностью хватает

Используете ли вы service discovery системы типа consul/zookeeper?

Zookeeper есть, но используется не для SD.
SD не используем, пока смотрим в его сторону.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий