Спасибо за внимание!
Вопросы?
Архитектура высоконагруженных
интернет-проектов
Репликация
Резервное
копирование
Запись
Чтение
Slave
Репликация
Master
Slave
Репликация
Чтение и запись
Slave
Master/Slave
Главное: куда-нибудь подальше
то есть обновление или обнуление кэша при изменение данных в СУБД
и регулярно!!!
Master/Slave
Инвалидация!
хорошо работает только для чтения
Master
синхронная vs асинхронная
Плюс не забывать о безопасности
Master
Репликация
Master
целостность
производительность
Master/Master
Кэширование
Данные
squid, varnish
Готовый HTML
Переменные внутри кода
Объекты
Запросы к СУБД
Файловая система
memcached
SQL vs NoSQL
Разбиение данных
Оно же:
- партиционирование
- partitioning
- шардинг
- sharding
По-простому hash%N
По кругу
Все равно
никто не использует
JOIN
С маршрутизатором
то есть пресловутую реляционность
Программная
DNS
F5
OSI
CARP
L1 Физический уровень
L2 Канальный уровень
L3 Сетевой уровень
L4 Транспортный уровень
L5 Сеансовый уровень
L6 Уровень представления
L7 Уровень приложения
Клиентская
оптимизация
Аппаратная
Балансировка
нагрузки
Основные приемы
1. CSS в <head />
2. JavaScript перед </body>
3. Селекторы работают справа на лево
4. Минификация (JSmin, CSStidy, YUI)
5. Бесконечный Expires + GET параметры
6. Отдельный домен для статики без cookies
7. Оптимизация размера изображений
8. Удаление пробелов и комментариев из HTML
9. CSS Sprites
10. data:URI + MHTML
И многие, многие другие...
Инструменты
YSlow! от Yahoo
Page Speed от Google
Примеры крупных
проектов
http://www.insight-it.ru/highload
- 1358% рост аудитории за 2009г.
- 175 млн. зарегистрированных пользователей
- 460 тыс. регистраций в день
- 50 -> 140 -> 177 млн. твитов в день
- Рекорд: 6939 твитов в секунду
- 25% трафика на сайт, остальное - API
- 6 миллиардов запросов к API в день
- 40 миллионов активных пользователей
- 11 млрд. запросов в день
- 200 млн. личных сообщений в день
- Видеопоток достигает 160Гбит/с
- Более 10 тыс. серверов
- Каждый день из строя выходит 10 жестких дисков
- 500 млн. активных пользователей
- 200 млрд. просмотров страниц в месяц
- 4 триллиона действий попадает в новостные ленты каждый день
- 20 миллиардов фотографий в 4 разрешений
- Десятки тысяч серверов, десятки гигабит трафика
- Linux
- Apache + mod_wsgi
- Python + Django
- memcached
- PostgreSQL
- HAProxy
- Slony
- heartbeat
- Windows и openSUSE
- Java, немного C/C++
- GWT
- Apache Tomcat
- JBoss
- LVS
- Microsoft SQL Server
- BerkleyDB
- Apache Lucene
- Apache + mod_proxy
- Unicorn
- Ruby + Ruby on Rails
- Scala
- FlockDB + MySQL
- memcached
- Kestrel
- Cassandra
- Scribe
- Hadoop, HBase и Pig
- Debian Linux
- nginx
- Apache + mod_php
- PHP + XCache
- memcached
- MySQL
- Собственная СУБД на С
- node.js
- ffmpeg
- xfs
- Linux
- PHP c HipHop
- memcached
- MySQL
- Thrift
- Scribe
- Hadoop, Hive, HBase
- До 17 тыс. запрсоов в секунду
- 250 млн. уник. посетителей в день
- 500 тыс. сайтов
- 15млн. зарегистрированных пользователей
- 75 млн. комментариев
- До 2.8 млн. пользователей онлайн в часы пик
- 7.5 млрд. запросов в день (до 150 тыс. в секунду)
- 2400 серверов и СХД
- Сетевой трафик до 32Гбит/с
Варианты
Комплексное решение
highload@insight-it.ru
- кластеризация
- балансировка нагрузки
- отказоустойчивость
- отсутствие ограничений по технологиям
- тюнинг производительности
- мониторинг и реанимация
- резервное копирование
- консультации по техническим вопросам
Масштабирование
Размещение
Волшебный алгоритм
вертикальная
vs
горизонтальная
- Обнаружить самое слабое место в системе
- Принять меры по его устранению
- Перейти к следующему самому слабому месту
Если бы надо было сократить презентацию до 1 слайда, то это был бы этот
Интернет
Из чего состоит мониторинг?
Статика
http://www.insight-it.ru
1. Сбор данных
2. Получение метрик
3. Построение графиков
3. Уведомление о ЧП
4. Реакция
Кэш
Сайт
СУБД
Сайт
Кэш
Почта
СУБД
Почта
Статика
Интернет
Мониторинг
Статика
Сайт
Балансировщик
нагрузки
Кэш
Сайт
СУБД
Почта
Кэш
Сайт
СУБД
Кэш
Почта
Чтение
СУБД
Запись
http://bit.ly/highload