Серверы с гибридной архитектурой

Попытка объединить сильные стороны моделей с управлением по событиям и с управлением но процессам привела к создапию серверов с гибридпой архитектурой. Например, модель с управлением по процессам может быть переработана таким образом, чтобы каждый процесс мог обслуживать более одного запроса одновременно. Фактически каждый процесс при этом становится сервером с управлением по событиям, который попеременно переключается между небольшим количеством запросов в паборе. Тем самым сокращается число процессов и снижаются затраты на совместное использование информации несколькими запросами, направляемыми одному процессу. Однако такой подход сохраняет ряд недостатков, присущих подходам с управлением по событиям и с управлением по процессам. Подобно серверам с управлением по событиям, такой подход может привести к тому, что задержка в при обработке одного запроса может привести к задержкам в обслуживании других запросов. Ограничение числа запросов, ассоциированных с каждым процессом, уменьшает вероятность возпикповения подобных проблем. Как и серверы с управлением по процессам, гибридный сервер несет дополнительные затраты при переключении между процессами и совместном использовании данных несколькими процессами. Тем не менее, обслуживание нескольких запросов в одном процессе сокращает количество процессов и дает возможность совместного использования ресурсов внутри процесса.

Второй подход позволяет избежать затрат на переключение между процессами. Некоторые операционные системы позволяют процессу иметь множество независимых программных потоков’. Каждый программный поток выполняется в адресном пространстве породившего его процесса. Многопоточпый Web-сервер может создать программный поток для каждого запроса. Сервер будет иметь один нроцесс, подобно серверу с управлением но событиям, с множеством различных программных потоков, подобно серверу с управлением по процессам. В отличие от сервера с управлением но событиям, многопоточному процессу не нужно координировать переключения между программными потоками явным образом. Когда один программный поток выиолпяет блокирующий системный вызов, в том же процессе могут выполняться другие программные потоки. Затраты на переключение между программными потоками существенно меньше, чем на переключение между процессами, поскольку программные потоки в процессе совместно используют адресное пространство процесса. Это дает возможность программным потокам совместно использовать и информацию о запросах. Например, программные потоки могут иметь совместный достун к часто используемым ресурсам и заголовкам HTTP-ответов. Тем не менее, программные потоки должны использовать средства синхронизации для совместного доступа к данным. Разработка программного обеспечения для многопоточного сервера обычно является сложной задачей. Программные потоки, выполняющиеся в одном процессе, не защищены друг от друга; без тщательной координации один программный поток может испортить данные, необходимые другому программному потоку. Кроме того, отсутствие поддержки программной многопоточности в некоторых операционных системах затрудняет разработку многопоточного сервера, который мог бы выполняться на различных платформах.

Третий нодход объединяет явные преимущества моделей с унравлепием по событиям и с управлением по процессам в гибридной схеме [PDZ99J. Подход с управлением по событиям хорошо использовать для обработки запросов, которые не потребляют значительных ресурсов процессора и дисковой подсистемы. Многие Web-запросы порождают короткие сообщения-ответы, не требующих доступа к дисковой памяти. Допустим, клиент запросил несуществующий ресурс. Распознав, что URL не соответствует какому-либо файлу или сцепарию на сайте, сервер отвечает коротким сообщением об ошибке. Кроме того, на сервере в оперативной памяти может быть кэшировано множество часто используемых Web-ответов, что дает возможность избежать обращения к дисковой памяти. Эго предполагает гибридную архитектуру сервера, которая по умолчанию применяет подход с управлением по событиям. Сервер имеет главный процесс с управлением по событиям, который обслуживает начальные этапы обработки каждого запроса. Если запрос требует значительных вычислений (например, если сервер должен активизировать сценарий) или доступа к дисковой памяти (например, при обработке запросов, требующих извлечения файлов с диска), то главный процесс передает выполнение операции, требующий много времени, вспомогательному процессу. Процесс с управлением по событиям может передать ответ клиенту, используя неблокирующие системные вызовы.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100