Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,277 views

Published on

Авито с 2010 года — с момента запуска на широкую аудиторию — прошел уже немалый путь, успев собрать более 600 миллионов объявлений со всех уголков страны, и став при этом крупнейшим классифайдом в Европе.

В докладе будет дан обзор архитектуры ядра системы с ретроспективой, перечислены основные компоненты обработки объявлений, приведены оценки параметров функционирования от "продуктовых" "количество объявлений за единицу времени" до количества запросов на разные уровни стека (веб, базы, поиск, очереди) и степени утилизации железа.

Будут также продемонстрированы примеры реализаций классических паттернов веба: кэш, прокси, денормализация и репликация, шардинг, очереди и удаленный вызов процедур — подходы, уже более 5 лет лежащие в основе нашей архитектуры. При этом будут приведены неочевидные, на взгляд автора, особенности внедрения данных подходов.

Доклад должен заинтересовать соотнесением масштабов и ключевых слов.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Avito Где живут Ваши объявления? Тюрин Михаил Москва, 2015
  2. 2. Всем привет! «Цыплят по осени считают» — народная мудрость * я должен ответить на вопрос про «БОЛЬ»! ** у Авито крутая зона — ждем Вас там с вопросами ЛЮБЫМИ
  3. 3. Всем привет! «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
  4. 4. О чем речь • Автор и команда делали всю эту красоту • Автор в курсе широкого круга вопросов, может сделать замечания и дать ценные комментарии • Так где же живут эти ваши объявления и на кой зачем нам всё это надо?
  5. 5. Первая архитектура все улыбаются :)
  6. 6. avito.ru • крупнейшая доска объявлений • много много объявлений • вся аудитория • рост! 6 лет — постоянный бурный рост
  7. 7. График роста: 2009 —> 2016 • лавинный рост фич и проектов • компания: 10 —> 1000+ • наш департамент: 5 — 150 —> 250 • сервера: 6 — 300 —> 450 • $$$ большие фин. цифры в новостях
  8. 8. График роста
  9. 9. График роста
  10. 10. Сайт на PHP 2016 год: • топ 10 сайт: 250M pv/day • Мобайл шифт: и почти +100% к трафику под нами падает CDN
  11. 11. Сайт на PHP «Архитектура — важнейшие решения об организации программной системы» «Архитектура системы — организация системы: — элементы — взаимоотношения — принципы => проектирование и эволюцию» — ВикипедиЯ
  12. 12. Архитектура (afair) Совокупность воспроизводимых приемов разработки, опирающихся на обобщенные паттерны и инженерный подход
  13. 13. Еще цифры • 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 сеть
  14. 14. Еще размеры • базы: 2 — 10TB • сфинксы: 10 — 300GB • картинки: 100++ TB • редис: 100+ node ~800GB • мемкеш (+локальный): N шардов ~TB • vertica: несколько десятков TB (остальное в hadoop)
  15. 15. Эволюция • сервер-сайд / api / сервисы • прокси везде • поисковая подсистема • очереди • базы и спец. хранилища • сервера приложений • сопряжение с DWH • HA, восстановления и архив
  16. 16. Основные моменты • транзакции и консистентность • кеширование • резервирование и репликация • денормализация и репликация • прокси-мултиплексирование • шардинг/ре-шардинг • очереди и «распределенная консистентность» (в том числе сервисы и микро-сервисы) • архив и восстановление • !!! гладкий мониторинг
  17. 17. Гладкий график нормального человека
  18. 18. Уже НЕ очень хороший график
  19. 19. Вернемся к объявлениям • memcached / redis • postgres • sphinx • картинки на nginx и дисках • собственный ETL (postgres) => DWH Vertica • очереди на обработку: postgres (и pgq); [redis,] rabbitmq • логи и «стримы»: fluentd => mongodb; postgres (и pgq) • шарденные база (postgres plproxy) • архив (postgres) • архив (postgres)
  20. 20. Как PHP кладет и достает
  21. 21. Как PHP кладет и достает
  22. 22. Картинка про БД
  23. 23. Очередь модерации 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-ому модератору
  24. 24. Индексация: 10 мин
  25. 25. DWH streams
  26. 26. XRPC
  27. 27. Тонкие моменты • Пулы соединений и латенси • Кеши и бекенды • Очереди и дедлоки • Аварии • Утечки • Мониторинг и ночной сон • «Сеть» и восстановления • Балансировка сети • swapoff
  28. 28. Спасибо за внимание • теперь у вас много вопросов, я надеюсь • команда должна иметь наработанные архитектурные приемы под поступающие задачи • проверенные в Авито инструменты и подходы — вам в помощь!
  29. 29. Avito.ru Миша mtyurin@avito.ru ну и ждем на стенде целый день http://hh.ru/employer/84585 https://www.avito.ru/company/job

×