• ГлавнаяНовостиНовостиНовости, 201602Новости, 201602 → Как устроен Relap.io — сервис, который выдает 30 миллиардов рекомендаций в месяц

      Как устроен Relap.io — сервис, который выдает 30 миллиардов рекомендаций в месяц

      Мы давно ничего не писали в наш блог и возвращаемся с рассказом о нашем новом проекте: (relevant pages). Мы запустили рекомендательный B2B-сервис полтора года назад

      КиТ :: Будь в СЕТИ! KiT - Keep-inTouch :: RSS-лента

P.c{font-size:75%;text-align:right;}img{border:0;padding:1px;}table{display:table;border-spacing:10px;}td{display:table-cell;padding:10px;vertical-align:top;}/*Обратная связь и подписка - кнопки*/ .buttons{background:#e0ffff;color:#dc143c;font-weight:700;border:1.5px solid black;border-radius:4px;transition:0.4s;}.buttons:hover {background-color:#4CAF50;color:white;box-shadow:0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);cursor:pointer;}
Он облегчает жизнь редакции и читателям СМИ. В будние дни обслуживает 15 млн уников и выдаёт 30 миллиардов рекомендаций в месяц.

Сейчас крупнейшая рекомендательная платформа в Европе и Азии.

Зачем нужен

В зависимости от поведения пользователя мы подбираем статьи, которые будут ему интересны. Выглядит это как блок «Читать также» или «Вам будет интересно»:

Сейчас сервисом пользуются , , , , и другие медиа. Виджеты установлены на более чем 1000 сайтов. 50 из них — миллионники (1 млн и более уникальных посетителей в сутки).

начался с простенькой беты. Мы взяли рекомендательные алгоритмы Surfingbird и адаптировали их для сторонних площадок.

Из чего сделан

Каждую секунду на сервера от пользователей поступает 15 000 http-запросов. Из них:

10К статика: изображения для виджетов, стили, статический js. 5К динамика: сбор сигналов, формирующих обучающее множество и формирование блоков рекомендаций. Когда мы создавали архитектуру у нас было 2 требования:

она должна выдерживать высокие нагрузки; масштабироваться.

Бэкенд — это два сервера с большим количеством памяти и объёмными SSD в RAID1. На них стоит PostgreSQL свежей версии, на одном сервере — мастер, на втором — слейв.

Рабочие лошадки — сервера поскромнее. Они принимают запросы из внешнего мира. На двух из них стоят Nginx-ы, которые балансируются друг с другом просто по DNS. Они раскидывают запросы. Их ловят перловые FCGI-воркеры.

FCGI-приложение построено таким образом, что отказ PostgreSQL не приводит к мгновенному отказу всего сервиса, у нас есть примерно 10 минут на устранение фатальных неисправностей. Даже если автоматическое переключение на реплику не спасло ситуацию.

Эти же сервера выполняют и другие роли — на них крутится бОльшая часть очередей, выполняющих в оффлайне всё, что можно делать в оффлайне; инстансы memcached и Redis, крон-скрипты.

Особняком стоят сервера, которые формируют рекомендациями. Для всех, кроме команды математиков, это более-менее чёрная коробка. Туда FCGI и очереди кидают данные, а они в ответ вставляют в PostgreSQL свежие рекомендации, посчитанные по разным алгоритмам, для каждой активной ссылки в базе. Ключевые слова — Hadoop, Spark, Elasticsearch как сторадж, толстый слой Java.

Коду остаётся только забирать готовое, накладывать некоторое фильтрование. Его мы стараемся делать минимальным и максимум фильтровать на этапе генерации и сортировки.

Всё что можно обвешано кешами. Кеш PostgreSQL в памяти, дисковый кеш, мемкешед или redis, где он удобнее, несколько видов кеширования прямо внутри процесса.

Почему все так?

PostgreSQL — самая полнофункциональная open-source база данных. Предсказуемая, стабильная, популярная. Nginx — куда лучше выдерживает масштабирование нагрузки, чем Apache.

MySQL или Apache более популярны, но нам кажется, что выбирать их для новых проектов можно только на shared-хостинге, где больше ничего нет. Или если вы очень хорошо умеете их готовить и масштабировать.

Выбирать shared-хостинг для нового проекта можно, только если вы заранее знаете, что рост ему не грозит. Тогда технологии стоит выбирать уже по принципу «а людей с какими знаниями я найду дешевле и быстрее всего» — это, скорее всего, люди со знанием PHP, MySQL и Apache. Замкнутый мир проектов на shared-хостингах.

Hadoop взяли потому, что особого опыта ни с одним из подобных решений у команды не было. А это некий стандарт в обработке больших данных. Здесь мы просто шли за всеми.

Ещё нам было нужно отдельное хранилище данных для Hadoop-а — PostgreSQL не подходил. Для этого мы выбрали, как ни странно, Elasticsearch, получив заодно полнотекстовый поиск и возможность строить алгоритмы, его использующие. Впрочем, это оказалось неправильным решением. Он может быстро все индексировать и находить, но не отдавать большие объёмы данных.

В следующей серии расскажем, как мы решали эту проблему.

Где хостится

С ростом нагрузки перед нами вставала проблема выбора надёжного хостинг-провайдера. Сейчас мы хостимся на Servers.com. Они достаточно мощные, чтобы выдержать нагрузку 900 000 запросов в минуту. Это не пиковые нагрузки, а нормальное состояние в будние дни.

В прошлом году мы несколько раз меняли датацентр. Сначала был ДЦ Славянский. Там до сих пор хостится Surfingbird.ru.

Потом в марте 2015 переехали на Hetzner. Тогда мы выдавали 2К рекомендаций в секунду. При последнем переезде на Servers.com было 6К в секунду. Сейчас 15K.

Интеграция на сайт:

Как виджет

Коробочное решение. Пользователь ставит наш код в head страницы, на которой должен быть виджет. Выбирает тип виджета и собирает дизайн во встроенном конструкторе. Формирование рекомендаций и фронтенд полностью происходит на нашей стороне. Так к подключено большинство площадок. Например, Лайфхакер.

Через jsonp api

Площадка получает описание нашего api. Мы отдаём большой пакет рекомендаций, а площадка фильтрует их уже на своей стороне и подставляет в дизайн. Интеграция через JSONP API позволяет использовать кастомные элементы: историческое количество просмотров, лайков и любую другую информацию о ссылке. Таким способом к подключены, например, AdMe или COUB.

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

Apple и Google в очередной раз уличили в сборе данных без согласия пользователей

В ходе исследования Дуглас Лейт проанализировал трафик смартфонов в ходе первого запуска после сброса устройства до заводских настроек; при вставленной или вынутой SIM-карте; в режиме, когда смартфоном никто не пользуется; в режиме, когда пользовател...

Число безфайловых вредоносных атак выросло на 900%, а криптомайнеры возвращаются

Компания WatchGuard Technologies, мировой лидер в области сетевой безопасности и расследования инцидентов, многофакторной аутентификации (MFA), расширенной защиты конечных устройств и безопасного Wi-Fi, 30 марта опубликовала свой отчет по Интернет-бе...

Покупки из «Яндекс.Маркета» привезут за пару часов

«Яндекс.Маркет» и «Доставка Яндекс GO» запустили экспресс-доставку из партнёрских магазинов. Для быстрой доставки уже доступно около 20 тысяч наименований товаров — от iPhone до дрели. Курьеры-партнёры «Доставки» привезут их покупателю за 1–2 часа. К...

Исследование: рынок интернет-торговли между частными лицами вырос на 87% за полтора года

По данным исследования «Авито» и Data Insight, рынок торговли между частными лицами в интернете вырос на 87% за 1,5 года и превысил 1 трлн руб. в 2020 г. Количество сделок выросло на 70% и превысило 300 млн. Интересный тренд: увеличение доли продавцо...

Google поломался. Пользователи со всего мира сообщают о сбоях

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

[Популярные социальные сети][*Добавить сайт]


Группы: ВК|Fb|Tw|OK

Рубрики | Каталог | Новости | Контакты |
/*Выпадайка (простая) - для рубрик справа/внизу*/.advert ul, .content ul{list-style:none;}.rubcontent [type=email], .rubcontent [type=submit]{display:block;margin:1px auto;}.rubcontent{display:block;line-height:25px;border-radius:5px 10px 0 0;border:1px solid #542437;}.cd-accordion-menu li, .list_menu_compact li, .cd-accordion-menu_ya-share2 li{padding:0;margin-left:20px;}/*а вот собственно и само действие#go:checked ~ .menu_1{ display:block;}#go:checked ~ .list_menu_compact{ display:none;}.go:checked label span{ display:block;}#go_7:checked + .equiv_7 b1{color:red;}.go_8:checked + label ul{background: #fc0;}*/.hidden, .cd-accordion-menu ul, .hidden:checked + label .equiv{display:none;}.hidden:checked + label + ul, .hidden:checked + label .trigramma{display:inline;}/*Карта сайта - свернуть/развернуть: ВСЕ - пока не все работает*/#checkbox_menu_all:checked + label + .cd-accordion-menu li ul{display:inline;}#checkbox_menu_all:checked + label + .cd-accordion-menu{display:none;}#checkbox_menu_all:checked + label + .cd-accordion-menu + .cd-accordion-menu_ya-share2{display:none;}@media (min-width:801px){/*Моб.меню - скрыть*/ #mob_menu{display:none;}/*Новости - анонс*/ #phablet td{display:block;}}
ГлавнаяНовостиНовостиНовости, 201602Новости, 201602 → Как устроен Relap.io — сервис, который выдает 30 миллиардов рекомендаций в месяц