1 / 35

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

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

sade-mack
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Традиционное устройство веб-продуктов Веб-приложение Кэширование диск / memcached / … База данных

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

  4. Основные задачи, которые решает веб-кластер: • Обеспечение высокой доступности сервиса (так называемые HA - High Availability или Failover кластеры) • Масштабирование веб-проекта в условиях возрастающей нагрузки (HP - High Performance кластеры) • Балансирование нагрузки, трафика, данных между несколькими серверами • Создание целостной резервной копии данных для MySQL

  5. «1С-Битрикс: Веб-кластер» - это комбинация технологий: Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL) Репликация MySQL и балансирование нагрузки между серверами Распределенный кешданных (memcached) Непрерывность сессий между веб-серверами (хранение сессий в базе данных) Кластеризация веб-сервера: Синхронизация файлов Балансирование нагрузки между серверами

  6. Репликация и балансировка нагрузки MySQL Веб-сервер Веб-кластер SQL-балансировщик База данных MySQLSLAVE 1 База данных MySQLSLAVE … База данных MySQLSLAVE N База данных MySQLMASTER

  7. Репликация и балансировка нагрузки MySQL Гибкая балансировка нагрузки SQL Простота администрирования Дешевое и быстрое неограниченное масштабирование Онлайн бэкап Не требуется доработка логики веб-приложения

  8. Распределенный кеш данных (memcached) memcached 1 memcached 2 memcached 3 Высокая эффективность - за счет централизованного использования кэша веб-приложением Надежность - за счет устойчивости подсистемы кешировнияк выходу из строя отдельных компонентов Неограниченная масштабируемость - за счет добавления новых memcached-серверов. 30% 40% 30% Веб-кластер «1С-Битрикс» Веб-сервер Веб-сервер Веб-сервер

  9. Задача: масштабирование при росте нагрузки Очень высокая посещаемость Балансировщик нагрузки Нода 1 «1С-Битрикс:Веб-кластер» Нода 2«1С-Битрикс:Веб-кластер» … НодаN«1С-Битрикс:Веб-кластер» База данных MySQL

  10. Непрерывность сессий между веб-серверами Пользовательская сессия должна быть "прозрачной" для всех серверов веб-кластера. После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов. И наоборот - окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу.

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

  12. Задачасинхронизации файлов Веб-сервер 1 Веб-сервер 2 ? /var/www

  13. Внешнее хранилище: как это выглядит <imgwidth="200"height="151"border="0" src="http://cs1.clodo.ru/v1/ CLODO_7f71c0228dfd469ad68f425520bac415/ upload-clodo/iblock/ a202296a71b9f16ccb502d8ada9298a/karasik.jpg"/> html Посетитель *.png; *.jpeg ... Хранилище Веб-сервер БД

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

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

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

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

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

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

  20. Высокие требования к сети, связность серверов друг с другом Веб-сервер «1С-Битрикс: Веб-кластер» SQL-балансировщик1С-Битрикс База данных MySQLSLAVE 1 База данных MySQLSLAVE … База данных MySQLSLAVE N База данных MySQLMASTER

  21. Ручные операции для восстановления master’а MySQL Балансировщик (клиентские запросы по HTTP) Веб-сервер 1 Веб-сервер 2 memcached 1 MySQL master MySQL slave memcached 1

  22. Аварии на уровне целого датацентра Балансировщик (клиентские запросы по HTTP) Веб-сервер 1 Веб-сервер 2 memcached 1 MySQL master MySQL slave memcached 1

  23. Географический веб-кластер Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров. Потеря связи между ДЦ может составлять часы. «Веб-кластер», ДЦ в России «Веб-кластер», ДЦ в США Веб-нода Веб-нода Веб-нода Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш Кэш Кэш Кэш «Веб-кластер», ДЦ в Германии БД БД БД БД БД БД Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш БД БД БД

  24. Гео веб-кластер Группы серверов в административном интерфейсе У каждой группы свой MySQL master (указан в dbconn.php) МастерыMySQL объединены в кольцо (в минимальном варианте – 2 сервера)

  25. Используем master-master репликацию в MySQL • Особенности настройки MySQL: • auto_increment_increment • auto_increment_offset • Базы в разных датацентрах синхронны, при этом независимы друг от друга: потеря связности между датацентрами может составлять часы, данные синхронизируются после восстановления. • Пользователь и все сотрудники этой компании работают в одном датацентреза счет управления балансировщиком. • Сессии храним в базе, но не реплицируем между серверами из-за большого траффикаи возможных «локов»: • SET sql_log_bin = 0 … или … • replicate-wild-ignore-table = %.b_sec_session%

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

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

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

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

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

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

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

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

  34. Спасибо за внимание! Вопросы? Александр Демидов demidov@1c-bitrix.ru +7 (915) 201-1500 @demidov http://www.1c-bitrix.ru

More Related