30
Avito Где живут Ваши объявления? Тюрин Михаил Москва, 2015

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

  • Upload
    ontico

  • View
    1.086

  • Download
    7

Embed Size (px)

Citation preview

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

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

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

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

Всем привет!

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

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

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

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

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

Всем привет!«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

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

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

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

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

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

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

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

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

avito.ru

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

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

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

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

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

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

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

График роста

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

График роста

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

Сайт на PHP2016 год:

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

+100% к трафику

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

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

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

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

— ВикипедиЯ

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

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

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

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

Еще цифры• 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 сеть

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Очередь модерации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-ому модератору

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

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

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

DWH streams

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

XRPC

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

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

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

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

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

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

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

Avito.ru

Миша [email protected]

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

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