42
Как Badoo модерирует 1 миллиард фотографий в год Андрей Гоменюк

Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

  • Upload
    ontico

  • View
    3.506

  • Download
    14

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Как Badoo модерирует 1 миллиард фотографий в год

Андрей Гоменюк

Page 2: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Badoo – это:• Социальная сеть для знакомства с новыми людьми

• В Top-200 Alexa с 2007 года

• 160+ миллионов пользователей

• 3+ миллиона новых фотографий и видео ежедневно

• 40+ тысяч запросов к бэкэндам

• PHP, MySQL, C(++), Linux, nginx, PHP-fpm, memcache

Page 3: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Зачем?

• Хотим видеть только лица в поиске

• Хотим минимизировать жалобы пользователей и запросы полиции

• Пользователи стесняются загружать свои фотографии

Page 4: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Page 5: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Page 6: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Как?

Page 7: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Какая-то железяка

Page 8: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Ан нет...

Page 9: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Немного статистики

• 2 датацентра

• 200+ серверов с фотографиями

• 200+ серверов с пользовательскими данными

• 150+ новых фотографий в пике в секунду, 3+ миллиона в сутки

• 120+ модераторов онлайн в пике

• Время модерации фотографии: 1-2 минуты

Page 10: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Требования

• Скорость модерации: хотим не больше 1 минуты

• Качество модерации: хотим не больше 1 ошибки на 1000 фотографий (99.9%)

• Стоимость модерации: не хотим делать лишнюю работу

Page 11: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Этапы

• Сортировка: присвоение каждой фотографии категории, определяющей её содержание (эротика, дети, разное и т.д.) – для всех фотографий

• Кадрирование: выделение лица на фотографии – только для фотографий, показываемых в поиске

• Проверка качества: автоматическая + ручная

Page 12: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Схематично

Page 13: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Доставка фото в модерацию

Page 14: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Доставка фото в модерацию

• У нас шардинг

• Хотим транзакционность

• Хотим меньше зависимостей между компонентами

Page 15: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Решение

• Своя очередь сообщений на MySQL

• Каждому БД серверу - по очереди

• Все данные сливаются в несколько потоков на центральную БД на локальном ДЦ

• Не нарушается целостность данных

Page 16: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Но у нас два ДЦ

• Модерация происходит в одном ДЦ

• Очередь умеет доставлять события между ДЦ

• После обработки посылаем событие обратно

• Минус: «американские» фотографии доходят медленнее

Page 17: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Решение

• Появился быстрый канал: можем использовать мастер-мастер репликацию

• Практически нет задержек для «американских» фотографий

• Есть нюансы с запросами

• Время на доставку события: 20с

Page 18: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Сортировка

Page 19: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Особенности

• Не хотим каждый раз дёргать информацию о каждой фотографии/пользователе

• Храним все нужные данные для отображения фото локально (в модерации)

• Подписаны на 10+ различных событий об удалении пользователя/альбома/фото, перемещении, смены приватности и т.д.

Page 20: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Проблема №1

• Записей больше, чем чтений: нет смысла кэшировать

• Записей очень много: если всё в одной таблице, то начинаются тормоза при вставках, обновлениях, удалениях

• Много индексов для разных случаев: приоритеты, даты, модераторы, типы, статусы и т.д.

Page 21: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Решение

• Один источник записей - одна таблица

• Нет проблем со вставками

• Нет проблем с deadlock’ами

Page 22: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Простой случай

Page 23: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Проблема №2

• Удалился пользователь/альбом/фото

• Проблемы с сетью

• Проблемы с фото-сервером

Page 24: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Решение: пропуски

Page 25: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Проблема №3

• Разом пришло очень много фотографий

• Модераторы разом перестали работать

• Изменились требования и нужно перепроверить старые фото

Page 26: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Решение: отложенные

Page 27: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Автоматическая проверка

• Подготавливаем массив «правильных» фотографий

• Подмешиваем модераторам

• Сравниваем результат

• Быстро находим «читеров»

• Но это не позволяет держать общее качество на высоте

Page 28: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Ручная проверка

• Режим: доверяй, но проверяй

• На одном экране выводим 50 фотографий с одним статусом

• Группируем фотографии по полу

• Одним нажатием фотография отправляется на повторную модерацию

• Один модератор проверяет до 10000 фотографий в час

Page 29: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Ручная проверка

Page 30: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Интерфейс

Page 31: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Интерфейс• Простота: ничего лишнего

• Подсказки от нас: лицо, пол анкеты

• Решение применяется несколькими кнопками

• Дополнительная статистика (скорость канала, тайминги загрузок и принятия решения, автоматический пропуск фотографий, которые не смогли загрузить)

• Чтобы не создавать лишнюю нагрузку на сервер, отправляем результаты пачками, но не слишком большими

Page 32: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Применение решения

Page 33: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Применение решения

• После модерации нужен физический доступ к фотографии: переместить/удалить/обрезать

• События о модерации должен обрабатывать тот фото-сервер, где находится фотография

• После получения события о модерации, перекладываем его в отдельную очередь на применение (с данными о фото-сервере)

• Время на применение решения: 30с

Page 34: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Общая схема

Page 35: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Доверяй, но измеряй

Page 36: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Что измеряем

• Скорость доставки событий

• Скорость модерации

• Размер каждой очереди

• Стандартные показатели (Pinba)

Page 37: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Модераторы тоже люди

• Работают в удобное для себя время (день по Москве)

• Делают то, за что больше платят

• Если записей мало - ждут, пока накопится и проверяют пачкой

Page 38: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Для нас важна скорость

• Увеличенный тариф за работу в ночное время

• Очередь кадрирования автоматически закрывается, если много фото в сортировке

• Если модератор не проявляет активности - отключаем его

• Повышенный приоритет для «важных» фото - достаются самым активным

• Средняя скорость принятия решения - 10с для приоритетных фото, 30 секунд для обычных

Page 39: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Автоматическая модерация

• Сложные правила - даже люди иногда путаются

• Правила могут меняться

• Низкая скорость анализа

• В любом случае нужна ручная перепроверка

Page 40: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Знаменитости

• Пользователи любят загружать чужие фото

• Модераторы не знают всех знаменитостей...

Page 41: Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

Мы знаем, но рассказать не можем. Пока...