понедельник, 18 января 2010 г.

Hotmail: немного о цифрах и архитектуре

Оригинальная статья находится по адресу: http://windowsteamblog.com/blogs/windowslive/archive/2009/12/22/a-peek-behind-the-scenes-at-hotmail.aspx. Здесь я привожу только выдержки из статьи.

Цифры
  1. 1,3 млрд. почтовых ящиков.
  2. 350 млн. человек в месяц активно пользуются сервисом.
  3. 3 млрд. сообщений в день, из которых 1 млрд. отфильтровывается как спам.
  4. Скорость роста хранилищ - 2 Петабайта/месяц.
  5. На сегодняшний день это свыше 155 Петабайт. 70% с основном, это письма с фотографиями.
  6. Это самый большой SQL Server 2008 в мире (мониторинг и управление многими тысячами SQL-серверов).
Архитектура
  • Сервис Hotmail организован в логические "масштабируемые единицы" или кластера:
  • Сервера, управляющие входящей и исходящей почтой.
  • Спам-фильтры.
  • Хранилища данных.
  • Службы мониторинга.
  • Инфраструктура для конфигурирования и автоматических обновлений.
На одном кластере "живут" миллионы пользователей (их число зависит от того, насколько устаревшее оборудование используется) и включает:
  • Frontend-сервера. Проверяют почту на вирусы, "отдают" пользователям почту через web-интерфейс, POP3, DeltaSync.
  • Backend-сервера. SQL и файловое хранилище, спам фильтры, мониторинги, агенты каталогов и сервера, хранящие информацию о том, на каком сервере чья почта хранится.
  • Используются также программно-аппаратные балансировщики нагрузки.
Меры для обеспечения надежности, в общем-то, стандартные. Например, избыточность:используются массивы хранилищ на SQL Server'е. Данные синхронизируются постоянно между серверами. Если один сервер "падает", то за считанные секунды включается перенаправление запросов на другой сервер. Данные хранятся в 4 (четырех) копиях.
 
PS: Из всего описания мне интересно было узнать, что в таком масштабном высоконагруженном сервисе используется SQL Server, а также то, что данные хранятся в 4 копиях (интересно, почему именно в четырех?). А в остальном, это общее описание показывает стандартный для таких проектов подход к архитектуре высоконагруженных приложений.