36

Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Embed Size (px)

DESCRIPTION

Почта@Mail.Ru и главная страница Mail.Ru — очень высоконагруженные сервисы. Суточная аудитория — 20 млн человек, количество хитов в день на динамику — более 500 млн. Я хочу рассказать вам о том, как мы выдерживаем такие нагрузки, посредством каких технологий, как мы к ним пришли и что получили в результате.

Citation preview

Page 1: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Page 2: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Как мы выдерживаем высокую нагрузку

Page 3: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Аудитория Почты и Главной страницы Mail.Ru

• 20 млн человек в день• Более 500 млн хитов в день на

динамические страницы

Page 4: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Инфраструктура

Сервера

Организация

Технологии

Аспекты проблемы нагрузки

Page 5: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Традиционные решения не работают

WEB

MySQL

= 50000 человек в день

LAMP

Page 6: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Примеры проблем нагрузки

• Хранение быстроменяющихся данных• Хранение и отдача счетчиков (чиселок)• Уведомление о новых письмах в почте• Проверка спама, доставленного в ящики; хранение

спама, не доставленного в ящики• Хранение больших файлов (files.mail.ru)• Установление большого количества сессий к MySQL

Page 7: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение быстроменяющихся данных

Data WEB

10-100 KRPS

Page 8: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение и отдача счетчиков (чиселок)

Data

WEB

Page 9: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Уведомление о новых письмах в почте

Data

WEB

Page 10: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Проверка спама, доставленного в ящики

Антиспам Хранилище

Page 11: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

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

ХранилищеБольшихфайлов

Page 12: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Установление большого количества сессий к MySQL

MySQL

WEB

WEB

WEB WEB

WEB

WEB

Page 13: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение сессий, статистики антиспама, базы антирбутфорса

Сессии

БазаАнтибруфорса

Стат антиспама

?

Page 14: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение сессий, статистики антиспама, базы антирбутфорса

MySQL

1KRPS

3KRPS

100KRPS

MySQLMySQLMySQLMySQLMySQL

Page 15: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Дороговизна администрирования

MySQLMySQL

MySQLMySQL

MySQLMySQL

Page 16: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Неравномерность загрузки

MySQL

MySQLMySQL

MySQL

MySQL

Page 17: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Сложность добавления новых шардов

MySQLMySQL

MySQLMySQL

MySQLMySQL

Page 18: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Общая дороговизна решения

MySQLMySQL

MySQLMySQL

MySQL

RAM

HDDHDD

HDDHDD

HDD

RAMRAMRAMRAM

Page 19: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Высокий хитрейт – не повод для шардинга!

20Gb 20Gb 20Gb20Gb20Gb

100Gb

Page 20: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Зачем нам оверхеды СУБД?

SQL Locks DB-engineThreadsDisk + cache

CPU

Page 21: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение сессий, статистики антиспама, базы антирбутфорса

100KRPSKey-Value

storage

No SQLNo Locks

No ThreadsNo dbengine

No random disk access

Page 22: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Key-Value storage. Схема электрическая, принципиальная.

RAM

LOG SNAPSHOT

CLIENT

Page 23: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение и отдача счетчиков на главной странице и в шапке

Page 24: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение и отдача счетчиков на главной странице и в шапке

Хранилище

Серверсчетчиков

Вебсервер

Page 25: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Уведомление о новых письмах в почте

Page 26: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Уведомление о новых письмах в почте

Вебсервер

Хранилище

Вебсервер

Хранилище

Сервер изменений

Page 27: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Проверка и удаление спама, уже доставленного в ящики

Антиспам Хранилище Антиспам

Page 28: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение спама, не доставленного в ящики

Антиспам

Хранилищеписем

Хранилищеспама

Page 29: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Хранение спама

Письмо 1

Письмо 2

Письмо 3

Письмо 4

Письмо 5

Письмо 6

Письмо 7

Письмо 8

Письмо 9

Cron

Page 30: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

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

User 1User 2User 3

User 4User 5User 6

File 1File 2File 3

File 4File 5File 6

Индекс

Page 31: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Соединения с MySQL

MySQL

WEB

WEB

WEB WEB

WEB

WEB

Page 32: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Соединения с MySQL

MySQL

ВРЕМЯ

RAM

CPU

Page 33: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

WEB (PERL/PYTHON)

LOCALMySQL Proxy

MySQL

CONN CONN CONN

Соединения с MySQL

Page 34: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Соединения с MySQL

WEB

MySQLProxy

WEB

WEB

WEB

Page 35: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Как создавать высоконагруженные сервисы?

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

Page 36: Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки

Денис АникинТехнический руководитель Почты@Mail.Ru

[email protected]

СПАСИБО!