![]() |
|||||||||||||||||
Ресурсы, накопленные за годы существования СУБД часто оказываются невостребованы из-за проблем обеспечения широкого доступа к ним через Web. Сервер являются технологической основой разработки информационных систем в компании Интернета, призван облегчить эту задачу путем реализации функций универсального шлюза для выхода во Всемирную паутину. Основная цель разработки — реализация интеллектуального алгоритма обработки запросов и распределения вычислительных ресурсов, обеспечивающего управление качеством сервиса, а не только его предоставление как такового. В статье рассмотрены основные принципы внутренней организации сервера, особенности его реализации и использования для удержания показателей качества (например, времени ответа) в некоторых заданных пределах.
Большинство существующих на сегодняшний день технологий не предусматривают реализацию подобных саморегулирующихся систем и тем более не позволяют сформулировать требования в терминах показателей качества, например: «время ответа системы X не должно превышать 1 секунды, а вероятность отказа системы Y обязана быть на более 3%». Универсальный сервер предоставляет разработчикам подобный интерфейс управления системой в целом. Эта возможность обеспечена использованием в оригинальных алгоритмов, основанных на методах теории массового обслуживания и позволяющих в реальном времени оценивать и корректировать показатели качества сервиса. В задачи управляющего модуля входят обеспечение запуска и остановки сервера, распределение ресурсов компьютера между модулями, сбор и визуализация статистики. Приемник обеспечивает получение запроса от клиента и передачу его одному из сервисов. Задача сервиса — принять клиентский запрос от приемника, обработать и либо сообщить клиенту о завершении обработки (успешном или ошибочном), либо передать частично обработанный запрос другому сервису. Все сервисы имеют одинаковую структуру, различия между ними заключаются лишь в логике функционирования обработчиков. Сервис состоит из управляющего модуля, набора равноправных обработчиков и единой для всех обработчиков очереди. Запрос попадает в очередь, после чего, если имеется свободный в данное время обработчик, то запрос поступает к нему, если же свободного обработчика нет, то запрос находится в очереди до тех пор, пока не освободится один из обработчиков или управляющий модуль не примет решения о необходимости увеличения числа обработчиков. После завершения обработки запрос либо покидает систему, либо передается для дальнейшего обслуживания другому сервису. Если посмотреть на универсальный сервер с точки зрения архитектуры клиент-сервер, то мы увидим, что это несколько серверных компонентов, объединенных единым блоком управления. Подобная схема реализации универсального сервера имеет целый ряд достоинств. Во-первых, она хорошо подходит для реализации на объектно-ориентированном языке программирования, что, в свою очередь, ведет к существенному снижению трудозатрат на расширение функциональности сервера. Фактически, для добавления нового сервиса необходимо лишь создать модуль обработчика, вся остальная инфраструктура уже существует и едина для всех сервисов. Второе достоинство в том, что распределение ресурсов компьютера между сервисами происходит на уровне модуля управления сервера, что позволяет реализовать более гибкую схему распределения, чем в случае, когда сервисы — это независимые процессы и распределение ресурсов происходит на уровне операционной системы. Кроме того, благодаря наличию связей между сервисами внутри сервера, значительно снижается накладной расход на обработку комплексных запросов, то есть таких запросов, в обработке которых участвуют два или более сервисов. Обмен данными между клиентом и сервером происходит по протоколу TCP/IP — началом сеанса работы можно считать организацию нового TCP/IP соединения между клиентом и приемником сервера. Задача приемника в этом случае — просто принять соединение и, не производя никаких действий, передать его на обработку специально выделенному сервису-диспетчеру. Заметим, что диспетчер выделен лишь с точки зрения логики его работы, в остальном — это такой же сервис, как и все остальные. В задачи диспетчера входят (в порядке исполнения). 1. Безусловная проверка возможности соединения (допустимо ли вообще соединение с IP адреса клиента). 2. Получение заголовка запроса (кто осуществил соединение и к какому сервису требуется обращение, при необходимости — авторизация клиента). 3. Условная проверка возможности соединения (имеет ли доступ этот клиент к запрашиваемому сервису). 4. Вычисление приоритета запроса, исходя из внутренних правил и пожеланий клиента. 5. Постановка запроса в очередь на обслуживание требуемым сервисом в соответствии с вычисленным приоритетом. Задача сервиса в данной конфигурации — извлечь из очереди запрос клиента, обработать его, возвратить клиенту результат и либо завершить обработку запроса, либо передать его (поставить в очередь) на дальнейшую обработку другому сервису. Настройка сервера на конкретные задачи производится с помощью конфигурационного файла, состоящего из трех основных секций: |
|||||||||||||||||
-------------------------------
------------------------------- ------------------------------- -------------------------------
|
------------------------------- ------------------------------- ------------------------------- -------------------------------
|
||||||||||||||||
|
|||||||||||||||||