Где живут Ваши объявления / Тюрин Михаил (Avito)

Preview:

Citation preview

Avito Где живут Ваши объявления?

Тюрин Михаил Москва, 2015

Всем привет!

«Цыплят по осени считают»

— народная мудрость

* я должен ответить на вопрос про «БОЛЬ»!

** у Авито крутая зона — ждем Вас там с вопросами ЛЮБЫМИ

Всем привет!«There are only two hard things in Computer Science: cache invalidation and naming things»

(«There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors»)

«There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery»

http://martinfowler.com/bliki/TwoHardThings.html

О чем речь• Автор и команда делали всю эту красоту

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

• Так где же живут эти ваши объявления и на кой зачем нам всё это надо?

Первая архитектура

все улыбаются :)

avito.ru

• крупнейшая доска объявлений

• много много объявлений • вся аудитория • рост! 6 лет — постоянный бурный рост

График роста: 2009 —> 2016

• лавинный рост фич и проектов • компания: 10 —> 1000+ • наш департамент: 5 — 150 —>

250 • сервера: 6 — 300 —> 450 • $$$ большие фин. цифры в новостях

График роста

График роста

Сайт на PHP2016 год:

• топ 10 сайт: 250M pv/day • Мобайл шифт: и почти

+100% к трафику

под нами падает CDN

Сайт на PHP«Архитектура — важнейшие решения об организации программной системы»

«Архитектура системы — организация системы: — элементы — взаимоотношения — принципы => проектирование и эволюцию»

— ВикипедиЯ

Архитектура (afair)

Совокупность воспроизводимых приемов разработки, опирающихся на обобщенные паттерны и инженерный подход

Еще цифры• 15 Кrps к php-фронту • 30 Krps далее к поиску • 4 — 7 Кtps к базам / 1 Кtps w • pqg: 1К inserts/sec • 50~100+MB w io • 150+MB r io • 500 Mbit сеть

Еще размеры• базы: 2 — 10TB • сфинксы: 10 — 300GB • картинки: 100++ TB • редис: 100+ node ~800GB • мемкеш (+локальный): N шардов ~TB

• vertica: несколько десятков TB (остальное в hadoop)

Эволюция• сервер-сайд / api / сервисы • прокси везде • поисковая подсистема • очереди • базы и спец. хранилища • сервера приложений • сопряжение с DWH • HA, восстановления и архив

Основные моменты• транзакции и консистентность • кеширование • резервирование и репликация • денормализация и репликация • прокси-мултиплексирование • шардинг/ре-шардинг • очереди и «распределенная консистентность» (в том числе сервисы и микро-сервисы)

• архив и восстановление • !!! гладкий мониторинг

Гладкий график нормального человека

Уже НЕ очень хороший график

Вернемся к объявлениям• memcached / redis

• postgres • sphinx • картинки на nginx и дисках • собственный ETL (postgres) => DWH Vertica • очереди на обработку: postgres (и pgq); [redis,]

rabbitmq • логи и «стримы»: fluentd => mongodb; postgres (и

pgq) • шарденные база (postgres plproxy) • архив (postgres) • архив (postgres)

Как PHP кладет и достает

Как PHP кладет и достает

Картинка про БД

Очередь модерацииselect i.item_id, i.ver_num, i.user_id, …, — content i.afraud_mark — за T минут должна появится отметка from items_to_moderate_q i where not i.processed and i.refresh_txtime < now() - interval ‘__T__ min’ and i.item_id % __m__ = __n__ — n-ому модератору

Индексация: 10 мин

DWH streams

XRPC

Тонкие моменты• Пулы соединений и латенси • Кеши и бекенды • Очереди и дедлоки • Аварии • Утечки • Мониторинг и ночной сон • «Сеть» и восстановления • Балансировка сети • swapoff

Спасибо за внимание• теперь у вас много вопросов, я надеюсь

• команда должна иметь наработанные архитектурные приемы под поступающие задачи

• проверенные в Авито инструменты и подходы — вам в помощь!

Avito.ru

Миша mtyurin@avito.ru

ну и ждем на стенде целый день

http://hh.ru/employer/84585https://www.avito.ru/company/job

Recommended