Как мы выдерживаем высокую нагрузку Аудитория Почты и Главной страницы Mail.Ru • 20 млн человек в день • Более 500 млн хитов в день на динамические страницы Аспекты проблемы нагрузки Инфраструктура Организация Сервера Технологии Традиционные решения не работают WEB LAMP MySQL = 50000 человек в день Примеры проблем нагрузки • • • • Хранение быстроменяющихся данных Хранение и отдача счетчиков (чиселок) Уведомление о новых письмах в почте Проверка спама, доставленного в ящики; хранение спама, не доставленного в ящики • Хранение больших файлов (files.mail.ru) • Установление большого количества сессий к MySQL Хранение быстроменяющихся данных Data WEB 10-100 KRPS Хранение и отдача счетчиков (чиселок) WEB Data Уведомление о новых письмах в почте WEB Data Проверка спама, доставленного в ящики Антиспам Хранилищ е Хранение больших файлов (files.mail.ru) Хранилище Больших файлов Установление большого количества сессий к MySQL WEB WEB WEB WEB MySQL WEB WEB Хранение сессий, статистики антиспама, базы антирбутфорса Сессии ? База Антибруфорса Стат антиспама Хранение сессий, статистики антиспама, базы антирбутфорса 1KRPS MySQL 3KRPS 100KRPS MySQL MySQL MySQL MySQL MySQL Дороговизна администрирования MySQL MySQL MySQL MySQL MySQL MySQL Неравномерность загрузки MySQL MySQL MySQL MySQL MySQL Сложность добавления новых шардов MySQL MySQL MySQL MySQL MySQL MySQL Общая дороговизна решения RAM RAM RAM RAM RAM MySQL MySQL MySQL MySQL MySQL HDD HDD HDD HDD HDD Высокий хитрейт – не повод для шардинга! 100Gb 20Gb 20Gb 20Gb 20Gb 20Gb Зачем нам оверхеды СУБД? SQL Locks Threads CPU Disk + cache DB-engine Хранение сессий, статистики антиспама, базы антирбутфорса KeyValue 100KRPS storage No SQL No Locks No Threads No dbengine No random disk access Key-Value storage. Схема электрическая, принципиальная. CLIENT RAM LOG SNAPSHOT Хранение и отдача счетчиков на главной странице и в шапке Хранение и отдача счетчиков на главной странице и в шапке Сервер счетчиков Хранилище Веб сервер Уведомление о новых письмах в почте Уведомление о новых письмах в почте Веб сервер Веб сервер Сервер изменений Хранилище Хранилище Проверка и удаление спама, уже доставленного в ящики Антиспам Хранилище Антиспам Хранение спама, не доставленного в ящики Хранилище спама Антиспам Хранилище писем Хранение спама Письмо 1 Письмо 4 Письмо 7 Письмо 2 Письмо 5 Письмо 8 Письмо 3 Письмо 6 Письмо 9 Cron Хранение больших файлов (files.mail.ru) File 1 File 2 File 3 User 1 User 2 User 3 Индекс User 4 User 5 User 6 File 4 File 5 File 6 Соединения с MySQL WEB WEB WEB WEB MySQL WEB WEB Соединения с MySQL В Р Е М Я CP U MySQL RAM Соединения с MySQL LOCAL MySQL Proxy WEB (PERL/PYTHON) CONN CONN MySQL CONN Соединения с MySQL WEB WEB MySQL Proxy WEB WEB Как создавать высоконагруженные сервисы? nginx HTML/CSS/JS nginx or Critical similar dynamic Big Temporaryfiles data Dynamic In memory database Counters (чиселки) Perl PHP Apache nginx Python Tarantool Redis Critical data MySQL Spread User files Proxy Non critical data СПАСИБО! Денис Аникин Технический руководитель Почты@Mail.Ru anikin@corp.mail.ru