Вернуться в библиотеку

РАЗРАБОТКА ВЫСОКОНАГРУЖЕННОГО ВЕБ - ПРИЛОЖЕНИЯ

Автор: Плотников Д.Ю., Малёваный Е.Ф., Аноприенко А.Я.
Источник: Информационные управляющие системы и компьютерный мониторинг (ИУС и КМ 2012) / Материалы III международной научно-технической конференции студентов, аспирантов и молодых ученых. — Донецк, ДонНТУ — 2012, с. 431-435

Аннотация

В статье исследуется вопрос использования различных современных технологий для построения приложения, ориентированного на работу в Интернет. Поскольку в наше время Интернет становится неотъемлемой частью жизни всё большего количества людей, исследование новых технологий и опыт программирования с помощью этих средств является актуальным.

Постановка задач исследования

В данной работе задачей является анализ современных средств программирования для высоконагруженных систем и построение с помощью них веб-приложения.

Решение задачи и результаты исследований

В наше время каждый день большое количество людей использует интернет. Новые технологии приходят в жизнь всё большего количества людей. Разработка веб-приложений является сейчас актуальной. В докладе мы сделаем краткий обзор современных технологий а также проекта, который был реализован и помощью этих средств.
PHP (Personal Home Page Tool) — Инструменты для создания персональных веб- страниц, скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов. Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом.[1] Проект распространяется под собственной лицензией, несовместимой с GNU GPL.
В области программирования для сети Интернет PHP — один из популярных скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP.
Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений[8]. Основные из них:
- автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
- взаимодействие с большим количеством различных систем управления базами данных (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO);
- автоматизированная отправка HTTP-заголовков;
- работа с HTTP-авторизацией;
- работа с cookies и сессиями;
- работа с локальными и удалёнными файлами, сокетами;
- обработка файлов, загружаемых на сервер;
- работа с XForms;

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемся на данных поисковых систем, в апреле 2011 года PHP находился на 5 месте среди языков программирования.[2] К крупнейшим сайтам, использующим PHP, относятся Facebook, ВКонтакте, Wikipedia и др. Входит в LAMP — распространённый набор программного обеспечения для создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).
Вторым средством является базы данных MySQL.
MySQL — свободная система управления базами данных (СУБД). MySQL является собственностью компании Oracle Corporation, получившей её вместе с поглощённой Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Некоторые возможности, актуальные на сегодняшний день[3]:
- Сегментирование — возможность разбить одну большую таблицу на несколько частей, размещенных в разных файловых системах, основываясь на определенной пользователем функции. При определенных условиях это может дать серьёзное увеличение производительности и, кроме того, облегчает масштабирование таблиц. Изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003.
- Построчная репликация (англ. row-based replication), при которой в бинарный лог будет записываться только информация о реально измененных строках таблицы вместо оригинального (и, возможно, медленного) текста запроса. Построчную репликацию можно использовать только для определенных типов sql-запросов, в терминах MySQL — смешанная репликация (англ. mixed replication).
- Встроенный планировщик периодически запускаемых работ. По синтаксису добавление задачи похоже на добавление триггера к таблице, по идеологии — на crontab.
- Дополнительный набор функций для обработки XML, реализация поддержки XPath.
- Новые средства диагностики проблем и утилиты для анализа производительности. Расширены возможности по управлению содержимым лог-файлов, логи теперь могут быть сохранены и в таблицах general_log и slow_log. Утилита mysqlslap позволяет провести нагрузочное тестирование БД с записью времени реакции на каждый запрос.
- Для упрощения операции обновления подготовлена утилита mysql_upgrade, которая выполнит проверку всех существующих таблиц на предмет совместимости с новой версией, и при необходимости выполнит надлежащие корректировки.
- MySQL Cluster отныне выпущен как отдельный продукт, базирующийся на MySQL 5.1 и хранилище NDBCLUSTER.
- Значительные изменения в работе MySQL Cluster, такие, как, например, возможность хранения табличных данных на диске. Возврат к использованию встроенной библиотеки libmysqld, отсутствовавшей в MySQL 5.0.
- API для плагинов, которое позволяет загружать сторонние модули, расширяющие функциональность (например, полнотекстовый поиск), без перезапуска сервера.
- Реализация парсера полнотекстового поиска в виде plug-in.
- Новый тип таблиц Maria (устойчивый к сбоям клон MyISAM).

С использованием этих технологий и хостинга на серверах nginx и apache было создано приложения «Спортивный дневник». Располагается оно по адресу http://sportdiary.net/ . На рисунке 1 мы видим скриншот главной страницы сайта.
Идея спортивного дневника заключается в том, что пользователь регистрируется на сайте, заполнив специальную форму, далее вводит свои упражнения в окно, которое изображено на рисунке 2. Все упражнения пользователя добавляются в список, которой изображен на рисунке 3. Нажав на упражнение, мы можем вводить данные за любой день и видеть их в виде графика. На рисунке 4 изображен график выполнения упражнения «Отжимания». Все пользователи могут просматривать статистику друг друга.
Для тестирования высокой нагрузки была размещена реклама на таких порталах как Яндекс, Вконтакте и Мамба. На сервере имеется модуль AWStats который по логам сервера собирает данные и предоставляет их в виде графиков и таблиц.

Главная страница
Рисунок 1 – Главная страница

Добавление упражнения
Рисунок 2 – Добавление упражнения

Просмотр упражнения
Рисунок 3 – Просмотр упражнения

Статистика посещения
Рисунок 4 – Статистика посещения

Выводы

В ходе разработки был создан проект «Спортивный дневник» с использованием современных технологий, который прошел тестирование большим количеством пользователей. На сегодняшний день их было 3969 и нагрузка на сервер в этом случае не превышает допутсимой.

Список литературы

1. Дмитрий Котеров, Алексей Костарев PHP. В подлиннике. — Спб.: «БХВ- Петербург», 2005. — С. 1120. — ISBN 5-94157-245-Х

2. Костарев А. Ф. PHP 5. — Спб.: «БХВ-Петербург», 2008. — С. 1104. — ISBN 978-5-9775-0315-0

3. MySQL. Руководство администратора = MySQL. Administrator's Guide. — М.: Издательский дом «Вильямс», 2005. — С. 624. — ISBN 5-8459-0805-1