Хранение больших файлов (files.mail.ru)

advertisement
Как мы выдерживаем высокую нагрузку
Аудитория Почты и Главной страницы
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
Download