Upload
sade-mack
View
63
Download
2
Embed Size (px)
DESCRIPTION
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования. Александр Демидов руководитель направления арендных решений «1С-Битрикс». Традиционное устройство веб-продуктов. Веб-приложение. Кэширование диск / memcached / …. База данных. - PowerPoint PPT Presentation
Citation preview
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования
Александр Демидовруководитель направления арендных решений
«1С-Битрикс»
Веб-приложение
Кэшированиедиск / memcached / …
База данных
Традиционное устройствовеб-продуктов
Масштабирование
Основные задачи, которые решает веб-кластер:
Обеспечение высокой доступности сервиса (так называемые HA - High Availability или Failover кластеры)
Масштабирование веб-проекта в условиях возрастающей нагрузки (HP - High Performance кластеры)
Балансирование нагрузки, трафика, данных между несколькими серверами
Создание целостной резервной копии данных для MySQL
«1С-Битрикс: Веб-кластер» - это комбинация технологий:
Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
Репликация MySQL и балансирование нагрузки между серверами
Распределенный кеш данных (memcached)
Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
Кластеризация веб-сервера:
Синхронизация файловБалансирование нагрузки между серверами
Репликация и балансировка нагрузки MySQL
Веб-сервер
База данных MySQLMASTER
Веб-кластер
База данных MySQLSLAVE 1
База данных MySQLSLAVE N
База данных MySQLSLAVE …
SQL-балансировщик
Гибкая балансировка нагрузки SQL
Простота администрирования
Дешевое и быстрое неограниченное масштабирование
Онлайн бэкап
Не требуется доработка логики веб-приложения
Репликация и балансировка нагрузки MySQL
Высокая эффективность - за счет централизованного использования кэша веб-приложением
Надежность - за счет устойчивости подсистемы кешировния к выходу из строя отдельных компонентов
Неограниченная масштабируемость - за счет добавления новых memcached-серверов.
memcached1
memcached2
memcached3
Веб-кластер «1С-Битрикс»
40% 30%30%
Веб-сервер Веб-сервер Веб-сервер
Распределенный кеш данных (memcached)
База данных MySQL
Нода 1 «1С-Битрикс:Веб-кластер»
Очень высокая посещаемость
Балансировщик нагрузки
Нода 2 «1С-Битрикс:Веб-кластер»
Нода N «1С-Битрикс:Веб-кластер»…
Задача: масштабирование при росте нагрузки
Непрерывность сессий между веб-серверами
Пользовательская сессия должна быть "прозрачной" для всех серверов веб-кластера.
После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов.
И наоборот - окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу.
«Узкие» места
Веб-сервер 1
/var/www
Веб-сервер 2
?
Задача синхронизации файлов
Внешнее хранилище: как это выглядит
<img width="200" height="151" border="0"src="http://cs1.clodo.ru/v1/CLODO_7f71c0228dfd469ad68f425520bac415/upload-clodo/iblock/a202296a71b9f16ccb502d8ada9298a/karasik.jpg" />
БД
Веб-серверХранилище
Посетительhtml
*.png; *.jpeg ...
Сайт + внешнее хранилище
Как сделать правильно?
API хранилища для «прозрачной» работы с файламиAPI для разработчиков (не используем стандартные функции для работы с файлами)Избегаем «диких» файловПростое подключение хранилищПравила для выбора при работе с несколькими хранилищами«Прозрачность» для всех модулей системы
Как сделать правильно?
Таблица с данными обо всех подключенных хранилищахТаблица со списком файлов, и указанием, где они хранятся (можно сразу хранить дополнительную информацию)Не используем file_size, getimagesize и т.п. – сохраняем все данные при аплоадеОтлов «диких» файлов через обработку 404
Облачные хранилища
Использование нескольких хранилищ
Одновременно можно хранить разные файлы в разных «облачных хранилищах». Например, все файлы «весом» больше 100 Мб перемещать в «облако» Google Storage, а все видео - в Amazon S3.
«Узкие» места – база данных
Веб-сервер
База данных MySQLMASTER
«1С-Битрикс: Веб-кластер»
База данных MySQLSLAVE 1
База данных MySQLSLAVE N
База данных MySQLSLAVE …
SQL-балансировщик1С-Битрикс
Высокие требования к сети, связность серверов друг с другом
Балансировщик (клиентские запросы по HTTP)
Веб-сервер 1
memcached 1
Веб-сервер 2
memcached 1MySQLmaster
MySQLslave
Ручные операции для восстановления master’а MySQL
Балансировщик (клиентские запросы по HTTP)
Веб-сервер 1
memcached 1
Веб-сервер 2
memcached 1MySQLmaster
MySQLslave
Аварии на уровне целого датацентра
«Веб-кластер», ДЦ в России
БД
Веб-нода
«Веб-кластер», ДЦ в Германии
«Веб-кластер», ДЦ в США
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров.
Потеря связи между ДЦ может составлять часы.
Географический веб-кластер
Гео веб-кластер
Группы серверов в административном интерфейсе
У каждой группы свой MySQL master (указан в dbconn.php)
Мастеры MySQL объединены в кольцо (в минимальном варианте – 2 сервера)
Особенности настройки MySQL:auto_increment_incrementauto_increment_offset
Базы в разных датацентрах синхронны, при этом независимы друг от друга: потеря связности между датацентрами может составлять часы, данные синхронизируются после восстановления.Пользователь и все сотрудники этой компании работают в одном датацентре за счет управления балансировщиком.Сессии храним в базе, но не реплицируем между серверами из-за большого траффика и возможных «локов»:
SET sql_log_bin = 0 … или …replicate-wild-ignore-table = %.b_sec_session%
Используем master-master репликацию в MySQL
Все ноды заменяемы и не зависимы друг от друга, в случае аварии стартуем новые.
Два датацентра синхронизированы друг с другом и равноценно обслуживают клиентов. В случае аварии на уровне датацентра или плановых работ с базой, траффик прозрачно для клиентов переключается на рабочий датацентр.
НадежностьОдин из приоритетов – постоянная доступность сервиса, его отказоустойчивость.
Мониторинг: снаружи и изнутри
Что является критерием производительности?
«Монитор производительности» платформы «1С-Битрикс»
Опции платформы
«Монитор производительности» платформы «1С-Битрикс»
Качество разработки
«Монитор производительности» платформы «1С-Битрикс»
Альтернатива профессиональным инструментам
«Монитор производительности» платформы «1С-Битрикс»
Режим отладки
Режим отладки
Спасибо за внимание!Вопросы?
Александр Демидов
+7 (915) 201-1500
@demidov
http://www.1c-bitrix.ru