Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Avito
Где живут Ваши
объявления?
Тюрин Михаил
Москва, 2015
Где живут Ваши объявления / Тюрин Михаил (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
О чем речь
• Автор и команда делали всю эту
красоту
• Автор в курсе широкого круга
вопросов, может сделать замечания
и дать ценные комментарии
• Так где же живут эти ваши
объявления и на кой зачем нам всё
это надо?
Первая архитектура
все улыбаются :)
avito.ru
• крупнейшая доска
объявлений
• много много объявлений
• вся аудитория
• рост! 6 лет —
постоянный бурный рост
График роста: 2009 —> 2016
• лавинный рост фич и проектов
• компания: 10 —> 1000+
• наш департамент: 5 — 150 —>
250
• сервера: 6 — 300 —> 450
• $$$ большие фин. цифры в
новостях
График роста
График роста
Сайт на PHP
2016 год:
• топ 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/84585
https://www.avito.ru/company/job

More Related Content

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