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

Post on 27-Jun-2015

5.753 views 1 download

description

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

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

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

Аудитория Почты и Главной страницы 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

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

anikin@corp.mail.ru

СПАСИБО!