УСМАНОВ И.Т., ЖИЛИН С.А., ПЕЛЕПЕЦ В.З. РАЗРАБОТКА СИСТЕМЫ УПРАВЛЕНИЯ СОДЕРЖИМЫМ ДЛЯ ВЫСОКОНАГРУЖЕННЫХ АВТОМАТИЗИРОВАННЫХ СИСТЕМ

Ключевые слова:


УСМАНОВ И.Т., ЖИЛИН С.А., ПЕЛЕПЕЦ В.З. РАЗРАБОТКА СИСТЕМЫ УПРАВЛЕНИЯ СОДЕРЖИМЫМ ДЛЯ ВЫСОКОНАГРУЖЕННЫХ АВТОМАТИЗИРОВАННЫХ СИСТЕМ


Библиографическая ссылка на статью:
// Современная техника и технологии. 2012. № 12 [Электронный ресурс]. URL: http://technology.snauka.ru/2012/12/1432 (дата обращения: 11.10.2017).

С целью упрощения разработки  высоконагруженных проектов была разработана специальная платформа для высоконагруженных автоматизированных систем в виде системы управления содержимым.
Система управления содержимым (содержимым/си эм эс) (англ. Content management system, CMS)  — информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления содержимым. Главной целью такой системы является возможность собирать в единое целое и объединять на основе ролей и задач все разнотипные источники знаний и информации, доступные как внутри организации, так и за ее пределами. А также возможность обеспечения взаимодействия сотрудников, рабочих групп и проектов с созданными ими базами знаний, информацией и данными так, чтобы их легко можно было найти, извлечь и повторно использовать привычным для пользователя образом.
В системе управления содержимым могут быть определены самые различные данные: документы, фильмы, фотографии, номера телефонов, научные данные и так далее. Такая система часто используется для хранения, управления, пересмотра и публикации документации.
При разработке данной системы были использованы различные подходы, методы и готовые программные решения способствующие повышению эффективности работы системы.
Для разработки управления содержимым был выбран язык php. Выбор обусловлен в первую очередь его популярность, количеством дополнительных расширений и библиотек. В качестве базы данных используется MySQL, но при желании можно использовать и другую базу данных, т.к. для работы с БД используется PDO.
PDO |представляет собой расширение для PHP, предоставляющее разработчику простой и универсальный интерфейс для доступа к различным базам данных.
PDO предлагает единые методы для работы с различными базами данных, хотя текст запросов может немного отличаться. Так как многие СУБД реализуют свой диалект SQL, который в той или иной мере поддерживает стандарты ANSI и ISO, то при использовании простых запросов можно добиться совместимости между различными языками. На практике это означает, что можно достаточно легко перейти на другую СУБД, при этом не меняя или частично изменяя код программы.
PDO не использует абстрактных слоёв для подключения к БД, наподобие ODBC, а использует для разных БД их «родные» драйверы, что позволяет добиться высокой производительности. В настоящее время для PDO существуют драйверы практически ко всем общеизвестным СУБД и интерфейсам. Впрочем, есть и драйвер для подключения к ODBC.
В результате использование PDO даёт возможность использования различных СУБД и при этом имеет высокую производительность, что является немаловажным фактором при разработке высоконагруженных проектов.
Также для ускорения поиска и выборки данных БД используется поисковая система Sphinx.
Для организации кэширования часто используемых данных используется memcached. Это позволяет снизить нагрузку на СУБД и файловую систему.

Расчёт аппаратной части для реализации высоконагруженного новостного портала на базе разработанной системы управления содержимым.
Максимальное число уникальных посетителей – 70000 человек.  Число просмотров на одного пользователя – 6. Количество одновременно находящихся пользователей на сайте – 60. Средний размер одной страницы с новостью с графическим наполнением (300 килобайт) – 400 килобайт. Количество страниц с новостями – 1000000. Количество зарегистрированных пользователей сайта – 5000. Размер учётной записи пользователя – 100 килобайт. Среднее количество комментариев на одну новостную страницу – 100.  Средний размер записи комментария – 1 килобайт. Количество наиболее посещаемых страниц – 100. Максимальное количество рассылаемых почтовых сообщений в день – 15000. Средний размер одного почтового сообщения – 100 килобайт.
Выбор серверного программного обеспечения.
На сегодняшний день наиболее популярными, производительными и безопасными серверными операционными системами являются системы семейства Unix [6], поэтому в качестве операционной системы выбрана CentOS. Данная система выбрана ввиду существования успешного её использования при реализации высоконагруженных проектов. К тому же данная система является бесплатно распространяемой.
В качестве веб-сервера предполагается использовать связку Apache и Nginx. Такое сочетание даёт наибольшую производительность и позволит в будущем масштабировать нагрузку с помощью конфигурирования Nginx.
Сервер для рассылки электронных почтовых сообщений – Postfix. Данный выбор в первую очередь основан на стабильности данного сервера и поддержке платформы Unix.
Для хранения данных выбрана СУБД MySQL 5.1 Cluster, данная СУБД предоставляет  репликацию, партиционирование, шардинг и размещение данных в кластере, что при увеличении нагрузки позволит распределить нагрузку и построить безопасную отказоустойчивую систему.
Для ускорения текстового поиска необходимо использовать систему полнотекстового поиска Sphinx. Использование Sphinx даст существенный прирост производительности при осуществлении поиска, но для его работы понадобиться дополнительное дисковое пространство для хранения индексов. А для увеличения скорости доступа к часто обращаемым новостным страницам необходимо использование кэширующего сервера memcached. Помимо увеличения скорости генерации страниц, это позволит снизить нагрузку на СУБД.
Также для ускорения скорости генерации страниц  необходимо использовать специализированный ускоритель, который путём кэширования байт-кода позволит увеличить скорость выполнения программного кода системы.
Расчёт необходимых параметров аппаратной части.
Размер необходимого канала связи без учёта необходимости рассылки почтовых сообщений составит: 60*400+100*1=24100 килобайт/c=189 мегабит/c. Для рассылки почтовых сообщений понадобиться расширить канал связи на 1 мегабит/с, с учётом этого необходимая пропускная способность канала связи составит 190 мегабит/с.
Размер необходимого дискового пространства для хранения данных в СУБД – 1000000*400+5000*100+100000*100*1+15000*100=502000000 килобайт=479 гигабайт. При условии использования системы полнотекстового поиска Sphinx, количество необходимого дискового пространства   увеличится в зависимости от используемых индексов. В случае индексирования текстового наполнения новостей дополнительно понадобиться не более 200 гигабайт дискового пространства. Также понадобиться дисковое пространство для установки серверного и дополнительного программного обеспечения – 20 гигабайт.
Размер оперативной памяти, постоянно потребляемый программным обеспечением сервера: 512 мегабайт.
Объём оперативной памяти необходимый для генерации одной страницы – 8 мегабайт. Общий объём оперативной памяти необходимый для генерации страниц – 8*60=480 мегабайт. Количество оперативной памяти для кэширующего сервера memcached – 100*8=800 мегабайт.
Общий размер необходимой оперативной памяти – 512+480+800=1792 мегабайт=2 гигабайта.
Для обработки такого количества данных достаточным будет использование процессора с тактовой частотой не менее 1 гигагерц.
Таким образом, рекомендуемая конфигурация аппаратной части для реализации высоконагруженного новостного портала на базе разработанной системы управления содержимым, с учётом предполагаемого роста нагрузки:
пропускная способность канала связи – 200 мегабит/с, тактовая частота процессора – 2 гигагерца, количество ядер процессора – 1 и более, объём дискового пространства – 1 терабайт, объём дискового пространства для резервного копирования данных – 1 терабайт, объём оперативной памяти – 4 гигабайта.
Технические особенности системы
Разработанная система имеет несколько технических особенностей. Основная особенность заключается в том, что при разработке архитектура системы строилась таким образом, чтобы предоставить максимальную универсальность, гибкость, функциональность и простоту эксплуатации. Также при разработке системы была поставлена задача построить решение, которое могло бы предоставить наибольшие функциональные возможности при наименьших финансово-временных затратах на модификацию системы. Большинство проблем по увеличению функциональных возможностей решается настройкой файлов шаблонов системы и различных конфигурационных файлов.
Для использования разработанной системы управления содержимым в высоконагруженных проектах были реализованы такие подходы как: вертикальная, функциональная и горизонтальная масштабируемость, изолированность компонентов системы.
При разработке системы был учтен отрицательный эффект при использовании преждевременной оптимизации, в связи с этим была построена наиболее гибкая и примитивная система конфигурирования. Это позволяет с развитием проекта, увеличивать производительность узких мест с помощью изменения конфигурационных файлов (настройка кэширования или шардинга).
Использование в разработанной системе подходов для реализации высоконагруженных систем не предоставляет ограничений при реализации систем с меньшей нагрузкой.
3.2.1 Вертикальная масштабируемость
При построении системы путём тестирования программного кода и поиска узких мест, разработки различных архитектурных решений было достигнуто значительное увеличение производительности.
Неоднократно был произведён профайлинг и рефакторинг программного кода системы. Для увеличения производительности в системе применяются различные технологии кэширования(memcached, кэширование в файлы, кэширование на стороне клиента) и система поиска Sphinx.
Кэширование запросов к СУБД с помощью memcached приводит к снижению нагрузки и количества запросов к СУБД, а следовательно и увеличению производительности системы.
Кэширование различных крупных блоков данных в файлы также даёт прирост производительности.
По умолчанию в разработанной системе в качестве шаблонизатора  используется Native PHP, что значительно ускоряет обработку шаблонов. Также в случае необходимости шаблонизацию можно и вовсе отключить.
3.2.2 Горизонтальная масштабируемость
Вертикальная масштабируемость реализована в виде возможности использования нескольких серверов БД, разделения таблиц.
А благодаря реализованной системе мультисайтинга имеется возможность построить распределённую систему, разделив функциональные возможности по нескольким серверам.
Так как данная система по умолчанию использует в качестве СУБД MySQL с InnoDB решаются проблемы целостности данных(за счёт использования транзцакции) и вертикальной масштабируемости БД (поддержка репликации, партиционирования и кластеризации).
3.2.3 Изолированность компонентов системы
Одним из немаловажных подходов при построении высоконагруженных автоматизированных систем является изолированность компонентов системы. Данный подход предоставляет возможность модификации одного компонента системы, не затрагивая остальные компоненты системы. Это позволяет снизить финансово-временные затраты в случае необходимости модификации системы.

Экономическая целесообразность
Помимо упрощения процесса построения высоконагруженных автоматизированных систем использование разработанной системы управления содержимым позволяет существенно снизить и финансово-временные затраты в несколько раз. На российском рынке в настоящее время стоимость разработки высоконагруженного проекта начинается с 3000000 рублей и занимает не менее 3 месяцев.
Использование данной системы в качестве готового коммерческого программного продукта при правильной маркетинговой политике может также приносить существенную прибыль. В этом случае существует несколько направлений извлечения прибыли:
* прямые продажи программного продукта;
* продажа специальных модулей и плагинов;
* продажа годовых лицензий на работу с системой;
* платная техническая поддержка и обновления.
В зависимости от выбранных направлений извлечения прибыли должна варьироваться и ценовая политика. Например, если основная прибыль предполагается за счёт прямых продаж программного продукта, то стоимость программного продукта может включать в себя:
* лицензию на год;
* стоимость включённых модулей и плагинов;
* стоимость годового технического обслуживания.
На рынке стоимость подобных решений для высоконагруженных проектов в среднем находится в диапазоне 150000-500000 рублей.

Краткое руководство пользователя
Установка
Для установки и работы системы необходима следующая конфигурация сервера:
* PHP 5.2+;
* Apache;
* MySQL 5+;
* Memcached;
* Sphinx.
Для установки системы необходимо распаковать архив на сервере в корневую директорию сайта.
Набрать в адресной строке адрес в следующем виде http://адрес_сайта/install. В загрузившейся странице ввести в поля формы необходимые настройки и нажать кнопку далее, в случае успешной установки будет выведено соответствующее сообщение. В случае возникновения ошибки необходимо проверить вводимые данные и конфигурацию сервера на который устанавливается система.
Авторизация
Для авторизации необходимо перейти на страницы вида http://адрес_сайта/admin(или http://адрес_сайта/user/login), в появившейся форме ввести данные указанные при установке и нажать на кнопку войти. Вид пользовательского интерфейса формы авторизации представлен на
Администрирование
Для того, чтобы перейти к разделу администрирования системы необходимо после авторизации перейти по адресу вида http://адрес_сайта/admin. В данном разделе доступны следующие возможности:
* Просмотр статистики;
* Управление меню;
* Управление пользователями;
* Модерация, добавление, редактирование, удаление содержимого;
* Управление модулями;
* Управление текстовыми блоками;
* Файловый менеджер.
Вывод. В разработанной системе были применены различные методы и подходы, используемые при реализации высоконагруженных автоматизированных систем. Разработанная система применима для реализации проектов различной нагрузки и функциональной сложности.



Все статьи автора «Смирнов Александр Васильевич»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: