35
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования Александр Демидов руководитель направления арендных решений «1С-Битрикс»

Александр Демидов руководитель направления арендных решений «1С-Битрикс»

Embed Size (px)

DESCRIPTION

Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования. Александр Демидов руководитель направления арендных решений «1С-Битрикс». Традиционное устройство веб-продуктов. Веб-приложение. Кэширование диск / memcached / …. База данных. - PowerPoint PPT Presentation

Citation preview

Page 1: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования

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

«1С-Битрикс»

Page 2: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Веб-приложение

Кэшированиедиск / memcached / …

База данных

Традиционное устройствовеб-продуктов

Page 3: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Масштабирование

Page 4: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Основные задачи, которые решает веб-кластер:

Обеспечение высокой доступности сервиса (так называемые HA - High Availability или Failover кластеры)

Масштабирование веб-проекта в условиях возрастающей нагрузки (HP - High Performance кластеры)

Балансирование нагрузки, трафика, данных между несколькими серверами

Создание целостной резервной копии данных для MySQL

Page 5: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

«1С-Битрикс: Веб-кластер» - это комбинация технологий:

Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)

Репликация MySQL и балансирование нагрузки между серверами

Распределенный кеш данных (memcached)

Непрерывность сессий между веб-серверами (хранение сессий в базе данных)

Кластеризация веб-сервера:

Синхронизация файловБалансирование нагрузки между серверами

Page 6: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Репликация и балансировка нагрузки MySQL

Веб-сервер

База данных MySQLMASTER

Веб-кластер

База данных MySQLSLAVE 1

База данных MySQLSLAVE N

База данных MySQLSLAVE …

SQL-балансировщик

Page 7: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Гибкая балансировка нагрузки SQL

Простота администрирования

Дешевое и быстрое неограниченное масштабирование

Онлайн бэкап

Не требуется доработка логики веб-приложения

Репликация и балансировка нагрузки MySQL

Page 8: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Высокая эффективность - за счет централизованного использования кэша веб-приложением

Надежность - за счет устойчивости подсистемы кешировния к выходу из строя отдельных компонентов

Неограниченная масштабируемость - за счет добавления новых memcached-серверов.

memcached1

memcached2

memcached3

Веб-кластер «1С-Битрикс»

40% 30%30%

Веб-сервер Веб-сервер Веб-сервер

Распределенный кеш данных (memcached)

Page 9: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

База данных MySQL

Нода 1 «1С-Битрикс:Веб-кластер»

Очень высокая посещаемость

Балансировщик нагрузки

Нода 2 «1С-Битрикс:Веб-кластер»

Нода N «1С-Битрикс:Веб-кластер»…

Задача: масштабирование при росте нагрузки

Page 10: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Непрерывность сессий между веб-серверами

Пользовательская сессия должна быть "прозрачной" для всех серверов веб-кластера.

После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов.

И наоборот - окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу.

Page 11: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

«Узкие» места

Page 12: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Веб-сервер 1

/var/www

Веб-сервер 2

?

Задача синхронизации файлов

Page 13: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Внешнее хранилище: как это выглядит

<img width="200" height="151" border="0"src="http://cs1.clodo.ru/v1/CLODO_7f71c0228dfd469ad68f425520bac415/upload-clodo/iblock/a202296a71b9f16ccb502d8ada9298a/karasik.jpg" />

БД

Веб-серверХранилище

Посетительhtml

*.png; *.jpeg ...

Page 14: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Сайт + внешнее хранилище

Page 15: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Как сделать правильно?

API хранилища для «прозрачной» работы с файламиAPI для разработчиков (не используем стандартные функции для работы с файлами)Избегаем «диких» файловПростое подключение хранилищПравила для выбора при работе с несколькими хранилищами«Прозрачность» для всех модулей системы

Page 16: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Как сделать правильно?

Таблица с данными обо всех подключенных хранилищахТаблица со списком файлов, и указанием, где они хранятся (можно сразу хранить дополнительную информацию)Не используем file_size, getimagesize и т.п. – сохраняем все данные при аплоадеОтлов «диких» файлов через обработку 404

Page 17: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Облачные хранилища

Page 18: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Использование нескольких хранилищ

Одновременно можно хранить разные файлы в разных «облачных хранилищах». Например, все файлы «весом» больше 100 Мб перемещать в «облако» Google Storage, а все видео - в Amazon S3.

Page 19: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

«Узкие» места – база данных

Page 20: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Веб-сервер

База данных MySQLMASTER

«1С-Битрикс: Веб-кластер»

База данных MySQLSLAVE 1

База данных MySQLSLAVE N

База данных MySQLSLAVE …

SQL-балансировщик1С-Битрикс

Высокие требования к сети, связность серверов друг с другом

Page 21: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Балансировщик (клиентские запросы по HTTP)

Веб-сервер 1

memcached 1

Веб-сервер 2

memcached 1MySQLmaster

MySQLslave

Ручные операции для восстановления master’а MySQL

Page 22: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»
Page 23: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Балансировщик (клиентские запросы по HTTP)

Веб-сервер 1

memcached 1

Веб-сервер 2

memcached 1MySQLmaster

MySQLslave

Аварии на уровне целого датацентра

Page 24: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

«Веб-кластер», ДЦ в России

БД

Веб-нода

«Веб-кластер», ДЦ в Германии

«Веб-кластер», ДЦ в США

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров.

Потеря связи между ДЦ может составлять часы.

Географический веб-кластер

Page 25: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Гео веб-кластер

Группы серверов в административном интерфейсе

У каждой группы свой MySQL master (указан в dbconn.php)

Мастеры MySQL объединены в кольцо (в минимальном варианте – 2 сервера)

Page 26: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Особенности настройки MySQL:auto_increment_incrementauto_increment_offset

Базы в разных датацентрах синхронны, при этом независимы друг от друга: потеря связности между датацентрами может составлять часы, данные синхронизируются после восстановления.Пользователь и все сотрудники этой компании работают в одном датацентре за счет управления балансировщиком.Сессии храним в базе, но не реплицируем между серверами из-за большого траффика и возможных «локов»:

SET sql_log_bin = 0 … или …replicate-wild-ignore-table = %.b_sec_session%

Используем master-master репликацию в MySQL

Page 27: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Все ноды заменяемы и не зависимы друг от друга, в случае аварии стартуем новые.

Два датацентра синхронизированы друг с другом и равноценно обслуживают клиентов. В случае аварии на уровне датацентра или плановых работ с базой, траффик прозрачно для клиентов переключается на рабочий датацентр.

НадежностьОдин из приоритетов – постоянная доступность сервиса, его отказоустойчивость.

Page 28: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Мониторинг: снаружи и изнутри

Page 29: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Что является критерием производительности?

«Монитор производительности» платформы «1С-Битрикс»

Page 30: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Опции платформы

«Монитор производительности» платформы «1С-Битрикс»

Page 31: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Качество разработки

«Монитор производительности» платформы «1С-Битрикс»

Page 32: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

Альтернатива профессиональным инструментам

«Монитор производительности» платформы «1С-Битрикс»

Page 33: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

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

Page 34: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

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

Page 35: Александр  Демидов руководитель направления арендных решений «1С-Битрикс»

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

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

[email protected]

+7 (915) 201-1500

@demidov

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