Отягощение highload
У нас есть проекты с огромным количеством данных (более 4 миллиардов записей в БД туров). Есть проекты с большим количеством обращений (сотни rps). Есть проекты с большим количеством картинок (3,5 миллиона). Есть проекты, которые не влезают на один сервер (20 бэкендов Tophotels).
Можно с уверенностью сказать, что с большей частью проблем масштабируемости и высокой нагрузки мы имели и имеем дело, и нашли решения.
Некоторые параметры highload
- База предложений TourIndex — это кластер из 27 PostgreSQL серверов. Это не считая сервера инфраструктуры обновления данных.
- AdvBroker — 8 бэкенда nginx-apache-php5, 8 серверов PostgreSQL, 500 GB оперативных данных.
- TopHotels — 2 фронтенда + 14 бэкендов nginx-apache-php5, GlusterFS (12 нод) под картинки, 4 memcached+pgbouncer и 4 сервера БД PostgreSQL
- TourClient - 2 nginx + 6 apache + 3 DB (только на обслуживание модулей) не считая сервиса поиска 4 бэкенда nginx-apache-php5, memcached.
Серверные технологии
- FreeBSD — мы умеем настраивать эту ОС. Возможно, не супертонко, но достаточно для того, чтобы держать нагрузку.
- Apache2 — сделать так, чтобы либо жило, либо падало, не тормозя и не раздражая - это наше кредо.
- nginx — проксирование, проксированное кэширование, кэширование по запросу, выдача статики, версионность css/js - это и многое другое позволяет детище великого русского программиста Игоря Сысоева, и мы пользуемся этим.
- php5 — правильная сборка, конечно же с APC и Xdebug там, где нужно. Не регулярное, но достаточно частое обновление до последних версий на продакшн серверах.
- memcached — php-сессии, статистика состояний сервисов реального времени.
- PostgreSQL — настройка для быстрой выдачи тысяч мелких запросов в секунду, настройка для одновременного обновления миллионов строчек данных и при этом без потери эффективности выдачи. Да, мы любим Синего слона!
- PgBouncer — как nginx для Apache2, так PgBouncer для postgres устанавливает ограничение на соединение, держит клиентов на себе, держит постоянно открытым достаточное количество соединений с сервером. Очень экономичен по потреблению памяти и процессора.
- MySql — умеем тюнинговать innodb, MyISAM, организация /tmp в память и много, чего ещё
Технологии разработки
- Собственный фреймворк: формы, шаблоны, таблицы, MVC, конфигурация, работа с БД, дебаггер — всё, что нужно для создания приложения.
- GIT, SVN: использование веток, выкладка на продакшн через специальный сервис, oncommit-триггеры. CVS мы также чуть-чуть используем в дань памяти отцам.
- Тестовый сервер: БД MySQL, Postgresql, вебсервер — всё для разработки с SSH доступом, но без возможностей ребута apache. =)
- Предпродашкшн сервер — часто(а нужно ещё чаще) синхронизируемые БД сервера, выделенный вэб-сервер, pgbouncer. Воспроизводят инфраструктуру продакшна.
- Готовые решения для отказоустойчивости: проверка доступности баз и сервисов.
- Технология синхронизации данных.
|