УДК 664.143
Ландарь А.А., Семенов Г.Н., Станкевич А.М.
ИСПОЛЬЗОВАНИЕ ПЛАТФОРМЫ БИТРИКС ДЛЯ СОЗДАНИЯ ВЫСОКОНАГРУЖЕННЫХ ВЕБ -ПРИЛОЖЕНИЙ
Ландарь Александр Александрович, студент 4 курса бакалавриата факультета цифровых технологий и химического инжиниринга Российский химико-технологический университет им. Д.И. Менделеева, alexandrlandar33@gmail.com
Семенов Геннадий Николаевич, к.т.н., доцент Российский химико-технологический университет им. Д.И. Менделеева, Москва, Россия, 125480, Москва, ул. Героев Панфиловцев, д. 20
Станкевич Александр Матвеевич, ведущий программист компании WEB-GOLDEN, Москва, Россия
Предлагается использование технологии Битрикс для создания высоконагруженных веб-приложений. Рассматривается технология «Композитный сайт». Статья углубляется в структуру Bitrix, демонстрируя ее возможности обеспечения стабильной работы веб-приложения.
Ключевые слова: Битрикс, веб-приложение, композитный сайт, высоконагруженное приложение, HTML, JavaScript
USING THE BITRIX CMS PLATFORM TO CREATE HIGH-LOAD WEB APPLICATIONS
Landar A.A., Semenov G.N., Stankevich A.M.*
D. Mendeleev University of Chemical Technology of Russia, Moscow, Russia *WEB-GOLDEN company, Moscow, Russia
We suggest utilizing Bitrix technology to create high-load web applications. The "Composite site" technology is considered. The article covers the Bitrix structure, demonstrating. Its capabilities to ensure stable operation of the web application. Keywords: Bitrix, web application, composite site, highload-application, HTML, JavaScript
Введение
Высоконагруженное бизнес-приложение - это система, которая постоянно масштабируется и хорошо справляется с текущими нагрузками. Главные качества таких систем растут параллельно с потребностями большого и малого бизнеса. Во-первых, это системы с обширной аудиторией клиентов. Отсюда следует такое важное качество системы, как то, что это распределительная система. Вследствие огромного количества запросов сервера выходят из строя, а поэтому от их количества зависит восстанавливаемость системы после сбоя. Во вторых это интерактивная система с позитивной динамикой. И последнее важное качество системы -это множество ресурсов. Для интерактивности необходимы свободные, в нужном количестве, ресурсы. Стремительный рост этих систем вызывает жесткий контроль ресурсов.
Все, что связано с доступом к базе данных трудно сделать универсальным. Для стабильной функциональности системы, необходимо четко представлять, с какой конкретно базой данных эта система будет взаимодействовать. При реализации проекта использовать все преимущества этой базы данных, исходя из параметров объема данных и частоты поступаемых обращений.
Необходимо понимать, что для придания гибкости высоконагруженной системе потребуется очень важные свойства:
- Оптимальное время отклика. Это одно из достоинств высоконагруженных бизнес-приложений. Пользователь общается с системой через запрос, и ответ на него должен приходить спустя приемлемый интервал
времени. Вряд ли пользователь станет взаимодействовать с программой, которая будет производить необходимое вычисление слишком долгий промежуток времени.
- Масштабируемость. Какое количество людей смогут одновременно пользоваться ресурсом; какое количество данных способна вместить база до того момента, когда она перестанет справляться с нагрузкой. Высоконагруженный проект должен быть масштабируемым в обязательном порядке. Технологии Битрикс позволяет проводить горизонтальное
масштабирование системы, благодаря возможности подключать дополнительные сервера или вертикальное, подключив cdn (contact delivery network) обеспечивая оптимизацию сети.
Эти системы очень важно и необходимо масштабировать постоянно. Проделывать эту работу необходимо для бизнес-приложения [1]. Высоконагруженными системами пользуются CALL-центры, биржевые и финансовые организации, банки, компании с полным циклом. Для работы с высоконагруженными системами требуется повышенная внимательность. Чтобы задачи бизнеса выполнялись успешно необходимо подобрать точные параметры. Для снижения нагрузки машинный код, нагружающий сервер множеством функций, нужно оптимизировать.
Подход Битрикса к построению архитектуры проектов сервисный. То-есть приложение разделяется на отдельные наборы компонентов, взаимодействующие между собой. Разработка приложений, благодаря решению использовать
сервисный подход, значительно эффективнее, чем у альтернативных подходов к построению архитектуры.
О технологии «Композит»
Технология «Композитный сайт» обеспечивает кеширование страниц на стороне сервера. Благодаря композитному режиму страницы загружаются у пользователя значительно быстрее, чем без включенной технологии. При использовании Bitrix Composite страницы сайта при посещении пользователя сохраняются, и уже последующие пользователи загружают сохраненную версию страницы уже с подключенными скриптами, стилями каскадных таблиц и контентом, что значительно ускоряет процесс загрузки и формирования блоков.
Основная суть технологии «Композитный сайт» состоит в том, что в матрицах компонентов, из которых создаётся динамическая страница, выделяются специальные зоны, в которых находится динамический контент. Во время обращения пользователя к странице, система создаёт кеш статической части страницы, в которую внедрен код, написанный на языке программирования JS (JavaScript), для обращения к серверу за необходимыми пользователю данными. Во время повторного обращения того же, или некоторого другого пользователя, система отдаёт созданный файл кеша, а потом еще досылает динамичный контент.
Первый пользователь, попавший на страницу, столкнется со следующими действиями CMS (Content Management System) Битрикс:
- сначала система проверит наличие прав у пользователя на получение страницы от сервера, далее система проверит подключена ли страница к системе композитного кеша, и наконец, наличие собственно файла кеша;
- подключение файлов шаблона сайта и рабочей области с выполнением php (personal home page) скриптов компонентов, внедренных в них, с учётом возможностей пользователя и других приемлемых условий формирования страницы (расчёт корзины для конкретного пользователя, вывод лучших товаров из каталога в топ, как в нашем случае);
- система обращается к базе данных, выполняет действия, определённые конкретными компонентами (подборка данных, их сортирование, обращение к файлам cms и вебсервера и другие);
- cms выполняет формирование html (hypertext markup language) кода для передачи на браузер и собственно передачу кода браузеру пользователя [2].
Пользователь получает страницу за 750 миллисекунд. Это стандартная скорость получения страницы пользователем большинства сайтов. Вебсервер продолжает работу в фоновом режиме. И в конце выполнения страницы:
- заменяет код динамических зон на заглушки, которые программист определяет специальной разметкой;
- добавляет JS загрузчик;
- высчитывает контрольную сумму страницы;
- сохраняет на свой жёсткий диск HTML-код страницы, сформированный специально для первого пользователя;
- браузер пользователя посылает запрос на вебсервер;
- система отслеживает наличие прав у пользователя на получение страницы, принадлежность страницы к системе композитного кеша, а также обладание собственным файлом кеша, при совпадении всех условий, выполняются параллельные действия;
- сохранённый на диске html-код страницы отправляется веб-сервером пользователю;
- собирает динамическую часть страницы, отбрасывая статическую часть;
- собирает некоторые дополнительные данные;
- json (javascript object notation) отправляется загрузчику;
- обновляет страницу в композитном кеше, если сумма не совпала.
- загрузчик расставляет контент и выполняет js код [3].
Пользователь получает сохранённую страницу за 15 миллисекунд, при этом непосредственно само отображение страницы занимает 2 миллисекунды. Затем загружаются стили, картинки и в результате страница полностью отображается за 290 миллисекунд. Актуальные данные приходят к пользователю через 550 миллисекунд. Эти действия происходят в фоновом режиме.
Для использования данной технологии необходимо понять какой выбрать режим (автоматический или ручной) и воспользоваться кнопкой включения на нужной закладке. Активизация одного из режимов делает неактивной кнопку включения другого режима. Для смены режима необходимо сначала выключить ранее работавший режим. Перед включением любого из режимов следует очистить кеш компонентов.
Основным различием режимов является тот факт, что:
- в режиме «композита» можно выполнять глобальные настройки "голосования" компонентов, выбор типа содержания заглушки динамической зоны. В режиме «автоматического композита» управление этими параметрами выполняется на уровне самих компонентов;
- в режиме «автоматического композита» добавление новых страниц на сайте автоматически подключает их к технологии. В режиме «композита» каждую новую страницу нужно настроить на работу в данном режиме.
Композитный кеш в Битриксе можно отдавать через PHP или веб-сервер nginx. В случае с РНР дополнительные настройки не нужны, так как все
сделает сам продукт, во втором же случае потребуется дополнительная настройка сервера nginx. Настройки сервера nginx производятся по аналогии с настройками сервера в виртуальной машине BitrixVM.
Структура Bitrix
Все ядро системы находится в папке «Bitrix» от корня сайта. В этой папке содержатся основные модули, компоненты, скрипты, настройки, соединения с базой данных, а также шаблоны компонентов, шаблоны сайтов. В папке «Администраторы» представлены
административные скрипты, отвечающие за администрирование. Папка «Компонент» содержит компоненты. Модули - это папка с модулем, в котором хранятся настройки и административные скрипты для управления модулем. В папке php_интерфейсы находятся файлы для соединения с базой данных и файл init.php, отвечающий за использование обработчиков сайта. В папке «Templates» находятся шаблоны компонентов и сайта в общем виде.
БД (база данных) хранит все данные системы, ее настройки, пользователей. В ядре содержатся функции по управлению базой данных. Модули - это набор скриптов, позволяющих управлять базой данных. К самым главным модулям относят модули инфоблоков. Компоненты - это часть системы, в которой могут сочетаться функции из разных модулей. Компоненты реализуют логику решения поставленной задачи. Вывод информации, это тот внешний вид, на котором будет выдаваться информация на внешнюю часть сайта [4]. Программные компоненты ядра отделены от пользовательских файлов, что позволяет избежать изменения ядра.
Кредитный калькулятор
С помощью технологии Битрикс был реализован кредитный онлайн калькулятор. Его структура состоит из множества модулей (моделей данных), главными из которых являются модуля расчета, просмотра истории и модуль поиска контента (используется для поиска и сохранения актуальных ставок кредита в автоматическом режиме).
Кредитный калькулятор прост в обращении, подойдет любому пользователю. В программах по кредиту есть возможность задать процентные ставки, а также изменения ставок в зависимости от условий, схемы расчета платежей. Кредитный калькулятор рассчитывает суммы ежемесячного платежа,
выплаты по процентам. Технологии Битрикс позволяют обслуживать более 5000 пользователей сайта одновременно (рис.1), без потери в скорости отклика. Технология «Композит» успешно внедрена и используется.
Рис. 1. Результаты теста производительности многопоточных и веб-кластерных систем
Кредитный калькулятор успешно адаптируется под потребности сайта. Выделены максимально возможное количество одновременных обращений к серверу (хитов) и максимально возможное количество запросов на получение уникальных страниц.
Выводы
Разработано на основе технологии Битрикс высокоэффективное веб-приложение кредитного калькулятора. Это значительно облегчит жизнь рядовых пользователей, избавит их от утомительного похода по кредитным учреждениям, сэкономит время и деньги
Список литературы
1. Архитектура высоконагруженных приложений [Электронный ресурс]: http://hawkhouse.ru/blog/chem-standartnaya-arhitektura-otlichaetsya-ot-arhitektury-vysokonagruzhennyh-prilozhenij/ (Дата обращения 09.05.2020).
2. О технологии композитный сайт и ее настройке [Электронный ресурс]: https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=39 (Дата обращения 07.05.2020).
3. Как сделать композитный сайт и его настройке [Электронный ресурс] : https://dev. 1c-bitrix.ru/learning/course/?COURSE_ID=39&LESSON_I D=4887&LESSON_PATH=3910.4887 (Дата обращения 11.05.2020).
4. Курс Разработчик Bitrix Framework: Структура файлов [Электронный ресурс]: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&L ESSON_ID=2287&LESSON_PATH=3913.4608.2287 (Дата обращения 18.05.2020).