![Page 1: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/1.jpg)
![Page 2: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/2.jpg)
Как мы выдерживаем высокую нагрузку
![Page 3: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/3.jpg)
Аудитория Почты и Главной страницы Mail.Ru
• 20 млн человек в день• Более 500 млн хитов в день на
динамические страницы
![Page 4: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/4.jpg)
Инфраструктура
Сервера
Организация
Технологии
Аспекты проблемы нагрузки
![Page 5: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/5.jpg)
Традиционные решения не работают
WEB
MySQL
= 50000 человек в день
LAMP
![Page 6: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/6.jpg)
Примеры проблем нагрузки
• Хранение быстроменяющихся данных• Хранение и отдача счетчиков (чиселок)• Уведомление о новых письмах в почте• Проверка спама, доставленного в ящики; хранение
спама, не доставленного в ящики• Хранение больших файлов (files.mail.ru)• Установление большого количества сессий к MySQL
![Page 7: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/7.jpg)
Хранение быстроменяющихся данных
Data WEB
10-100 KRPS
![Page 8: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/8.jpg)
Хранение и отдача счетчиков (чиселок)
Data
WEB
![Page 9: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/9.jpg)
Уведомление о новых письмах в почте
Data
WEB
![Page 10: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/10.jpg)
Проверка спама, доставленного в ящики
Антиспам Хранилище
![Page 11: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/11.jpg)
Хранение больших файлов (files.mail.ru)
ХранилищеБольшихфайлов
![Page 12: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/12.jpg)
Установление большого количества сессий к MySQL
MySQL
WEB
WEB
WEB WEB
WEB
WEB
![Page 13: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/13.jpg)
Хранение сессий, статистики антиспама, базы антирбутфорса
Сессии
БазаАнтибруфорса
Стат антиспама
?
![Page 14: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/14.jpg)
Хранение сессий, статистики антиспама, базы антирбутфорса
MySQL
1KRPS
3KRPS
100KRPS
MySQLMySQLMySQLMySQLMySQL
![Page 15: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/15.jpg)
Дороговизна администрирования
MySQLMySQL
MySQLMySQL
MySQLMySQL
![Page 16: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/16.jpg)
Неравномерность загрузки
MySQL
MySQLMySQL
MySQL
MySQL
![Page 17: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/17.jpg)
Сложность добавления новых шардов
MySQLMySQL
MySQLMySQL
MySQLMySQL
![Page 18: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/18.jpg)
Общая дороговизна решения
MySQLMySQL
MySQLMySQL
MySQL
RAM
HDDHDD
HDDHDD
HDD
RAMRAMRAMRAM
![Page 19: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/19.jpg)
Высокий хитрейт – не повод для шардинга!
20Gb 20Gb 20Gb20Gb20Gb
100Gb
![Page 20: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/20.jpg)
Зачем нам оверхеды СУБД?
SQL Locks DB-engineThreadsDisk + cache
CPU
![Page 21: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/21.jpg)
Хранение сессий, статистики антиспама, базы антирбутфорса
100KRPSKey-Value
storage
No SQLNo Locks
No ThreadsNo dbengine
No random disk access
![Page 22: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/22.jpg)
Key-Value storage. Схема электрическая, принципиальная.
RAM
LOG SNAPSHOT
CLIENT
![Page 23: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/23.jpg)
Хранение и отдача счетчиков на главной странице и в шапке
![Page 24: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/24.jpg)
Хранение и отдача счетчиков на главной странице и в шапке
Хранилище
Серверсчетчиков
Вебсервер
![Page 25: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/25.jpg)
Уведомление о новых письмах в почте
![Page 26: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/26.jpg)
Уведомление о новых письмах в почте
Вебсервер
Хранилище
Вебсервер
Хранилище
Сервер изменений
![Page 27: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/27.jpg)
Проверка и удаление спама, уже доставленного в ящики
Антиспам Хранилище Антиспам
![Page 28: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/28.jpg)
Хранение спама, не доставленного в ящики
Антиспам
Хранилищеписем
Хранилищеспама
![Page 29: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/29.jpg)
Хранение спама
Письмо 1
Письмо 2
Письмо 3
Письмо 4
Письмо 5
Письмо 6
Письмо 7
Письмо 8
Письмо 9
Cron
![Page 30: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/30.jpg)
Хранение больших файлов (files.mail.ru)
User 1User 2User 3
User 4User 5User 6
File 1File 2File 3
File 4File 5File 6
Индекс
![Page 31: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/31.jpg)
Соединения с MySQL
MySQL
WEB
WEB
WEB WEB
WEB
WEB
![Page 32: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/32.jpg)
Соединения с MySQL
MySQL
ВРЕМЯ
RAM
CPU
![Page 33: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/33.jpg)
WEB (PERL/PYTHON)
LOCALMySQL Proxy
MySQL
CONN CONN CONN
Соединения с MySQL
![Page 34: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/34.jpg)
Соединения с MySQL
WEB
MySQLProxy
WEB
WEB
WEB
![Page 35: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки](https://reader035.vdocuments.site/reader035/viewer/2022062514/558e92c11a28ab46108b45a4/html5/thumbnails/35.jpg)
Как создавать высоконагруженные сервисы?
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