17
Архитектура новой почты Рамблера Андрей Шетухин

архитектура новой почты рамблера

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: архитектура новой почты рамблера

Архитектура новойпочты Рамблера

Андрей Шетухин

Page 2: архитектура новой почты рамблера

Rambler Mail сегодня• 240 тысяч новых регистраций в день• 66 миллионов пользователей• 20 миллионов “живых” ящиков• 192 миллиона контактов в адресной книге• 16 миллионов писем в день

Page 3: архитектура новой почты рамблера

Rambler Mail сегодня• Мобильная и Wap версии• Автосборщик почты• Неограниченное количество почтовых доменов• 16 видов оформления на любой вкус• Умная адресная книга• Иконки сервисов

Page 4: архитектура новой почты рамблера

Программное обеспечение• FreeBSD 6, 7

• MySQL 4.1

• nginx 0.7.X + patches

• Apache 1.3 + mod_perl + PerlXS + C++

• memcached

• Postfix + Dovecot + patches

• Rspamd + Clamav

Page 5: архитектура новой почты рамблера

MySQL• Master-slave репликация

• “Дерево” slave серверов

• Разнесение данных по серверам и таблицам

• Денормализация данных

• Только необходимые индексы в таблице

Page 6: архитектура новой почты рамблера

“Дерево” slave серверов

Page 7: архитектура новой почты рамблера

ПартиционированиеCluster F

Users_0_0

Users_f_f

Users_e_2

Cluster 1

Users_0_0

Users_f_f

Users_e_2

Cluster 0

Users_0_0

Users_f_f

Users_e_2

MD5(“[email protected]”) =9f1….. f e2

Page 8: архитектура новой почты рамблера

Apache + mod_perl• OO Perl – хорошо или плохо?

• ORM – зло, которое следует избегать

• SQL Proxy – решение проблем с нагрузкой БД

• Прозрачное кэширование данных

• Быстрый шаблонизатор – CTPP

• Почему не FastCGI?

Page 9: архитектура новой почты рамблера

OO Perl• Увеличение скорости разработки

• Сепарация сущностей

• Более прозрачный код в большом проекте

• Медленнее скорость работы

• Выше требования к памяти

• Нужны квалифицированные разработчики

Page 10: архитектура новой почты рамблера

ORM• Полный цикл разработки с ORM – дороже

• Простые вещи с ORM делаются просто, сложные – не делаются вовсе

• Много памяти, много кода, много черной магии

• Сложность оптимизации запросов и вообще любой отладки

• ORM – это дорогой вариант sprintf

Page 11: архитектура новой почты рамблера

SQL Proxy• Много входящих подключений, мало исходящих

• Универсальный интерфейс - JSON

• Простота использования

• Поддержка Oracle, PostgreSQL, MySQL

Page 12: архитектура новой почты рамблера

Кэширование• Memcached

• Драйвер -> Кэш -> Интерфейс

• Кэшировать объекты или нет?

Page 13: архитектура новой почты рамблера

Драйвер - Кэш - ИнтерфейсI/O

MySQL masterdatabase

R/W

MySQL slavedatabase

W/O

R/O

Rambler::Mail::AddrBook

Rambler::MailAddrBookStorage

Memcached

mod_perlRambler::Mail::AddrBookWorker

I/O

Rambler::Id::Session

Page 14: архитектура новой почты рамблера

Шаблонизатор• CTPP 2.5.X

• Встроенные функции на все случаи жизни

• Самый быстрый шаблонизатор для Perl

• Интерфейсы для С, С++, PHP, Perl и Python

• Простота верстки

• Моментальная выкатка шаблонов

Page 15: архитектура новой почты рамблера

Тесты

http://ctpp.havoc.ru/template_benchmarks.html

Page 16: архитектура новой почты рамблера

Postfix + Dovecot• MX = Mail eXchanger

• Milter API <-> ClamAv + RspamD

• Patches, patches, patches…

• Dovecot

• Хранение писем: Mailbox

Page 17: архитектура новой почты рамблера

Вопросы?