Upload
tfmailru
View
5.753
Download
1
Embed Size (px)
DESCRIPTION
Почта@Mail.Ru и главная страница Mail.Ru — очень высоконагруженные сервисы. Суточная аудитория — 20 млн человек, количество хитов в день на динамику — более 500 млн. Я хочу рассказать вам о том, как мы выдерживаем такие нагрузки, посредством каких технологий, как мы к ним пришли и что получили в результате.
Citation preview
Как мы выдерживаем высокую нагрузку
Аудитория Почты и Главной страницы Mail.Ru
• 20 млн человек в день• Более 500 млн хитов в день на
динамические страницы
Инфраструктура
Сервера
Организация
Технологии
Аспекты проблемы нагрузки
Традиционные решения не работают
WEB
MySQL
= 50000 человек в день
LAMP
Примеры проблем нагрузки
• Хранение быстроменяющихся данных• Хранение и отдача счетчиков (чиселок)• Уведомление о новых письмах в почте• Проверка спама, доставленного в ящики; хранение
спама, не доставленного в ящики• Хранение больших файлов (files.mail.ru)• Установление большого количества сессий к MySQL
Хранение быстроменяющихся данных
Data WEB
10-100 KRPS
Хранение и отдача счетчиков (чиселок)
Data
WEB
Уведомление о новых письмах в почте
Data
WEB
Проверка спама, доставленного в ящики
Антиспам Хранилище
Хранение больших файлов (files.mail.ru)
ХранилищеБольшихфайлов
Установление большого количества сессий к MySQL
MySQL
WEB
WEB
WEB WEB
WEB
WEB
Хранение сессий, статистики антиспама, базы антирбутфорса
Сессии
БазаАнтибруфорса
Стат антиспама
?
Хранение сессий, статистики антиспама, базы антирбутфорса
MySQL
1KRPS
3KRPS
100KRPS
MySQLMySQLMySQLMySQLMySQL
Дороговизна администрирования
MySQLMySQL
MySQLMySQL
MySQLMySQL
Неравномерность загрузки
MySQL
MySQLMySQL
MySQL
MySQL
Сложность добавления новых шардов
MySQLMySQL
MySQLMySQL
MySQLMySQL
Общая дороговизна решения
MySQLMySQL
MySQLMySQL
MySQL
RAM
HDDHDD
HDDHDD
HDD
RAMRAMRAMRAM
Высокий хитрейт – не повод для шардинга!
20Gb 20Gb 20Gb20Gb20Gb
100Gb
Зачем нам оверхеды СУБД?
SQL Locks DB-engineThreadsDisk + cache
CPU
Хранение сессий, статистики антиспама, базы антирбутфорса
100KRPSKey-Value
storage
No SQLNo Locks
No ThreadsNo dbengine
No random disk access
Key-Value storage. Схема электрическая, принципиальная.
RAM
LOG SNAPSHOT
CLIENT
Хранение и отдача счетчиков на главной странице и в шапке
Хранение и отдача счетчиков на главной странице и в шапке
Хранилище
Серверсчетчиков
Вебсервер
Уведомление о новых письмах в почте
Уведомление о новых письмах в почте
Вебсервер
Хранилище
Вебсервер
Хранилище
Сервер изменений
Проверка и удаление спама, уже доставленного в ящики
Антиспам Хранилище Антиспам
Хранение спама, не доставленного в ящики
Антиспам
Хранилищеписем
Хранилищеспама
Хранение спама
Письмо 1
Письмо 2
Письмо 3
Письмо 4
Письмо 5
Письмо 6
Письмо 7
Письмо 8
Письмо 9
Cron
Хранение больших файлов (files.mail.ru)
User 1User 2User 3
User 4User 5User 6
File 1File 2File 3
File 4File 5File 6
Индекс
Соединения с MySQL
MySQL
WEB
WEB
WEB WEB
WEB
WEB
Соединения с MySQL
MySQL
ВРЕМЯ
RAM
CPU
WEB (PERL/PYTHON)
LOCALMySQL Proxy
MySQL
CONN CONN CONN
Соединения с MySQL
Соединения с MySQL
WEB
MySQLProxy
WEB
WEB
WEB
Как создавать высоконагруженные сервисы?
HTML/CSS/JS
nginx
Dynamic
Temporarydata
Criticaldynamic
Big files
Critical data
TarantoolRedis
nginxor
similar
Non critical dataProxy
MySQL
User files
Spread
Counters (чиселки)
In memory database
PerlPHP
Python
Apachenginx