Александр Демидов руководитель направления арендных...

Preview:

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С-Битрикс»

Режим отладки

Режим отладки

Спасибо за внимание!Вопросы?

Александр Демидов

demidov@1c-bitrix.ru

+7 (915) 201-1500

@demidov

http://www.1c-bitrix.ru

Recommended