
718 Глава
11,
Распределенные системы документов
При контроле доступа клиента сервер проверяет, известен ли на самом деле
клиент серверу и имеет ли он какие-либо права доступа. Так, в ходе этой фазы
мы можем определить, принадлежит ли этот клиент к определенной группе поль-
зователей.
В ходе контроля доступа запроса проверяется, имеет ли клиент право на ра-
боту с документом, указанным в запросе.
На следующей фазе производится определение типа MIME документа. Опре-
делить тип документа можно разными способами, например по расширениям
файлов или с помощью специального файла, содержащего тип MIME документа.
Любая дополнительная обработка запроса, которая не выполнена в других
фазах, выполняется в общей фазе обработки. В качестве примера задач, обычно
решаемых в ходе этой фазы, можно выделить проверку синтаксиса возвращае-
мых ссылок
ИЛР1
построение профиля пользователя.
Наконец, ответ пересылается пользователю. И снова сделать это можно раз-
ными способами, в зависимости от того, что было запрошено и как был создан
ответ.
Последняя фаза включает в себя протоколирование всех действий, совершен-
ных в ходе обработки запроса. Полученные журналы можно впоследствии ис-
пользовать в самых разных целях.
Для выполнения этих фаз модуль ядра поддерживает список зарегистриро-
ванных обработчиков каждой фазы. Он выбирает обработчик и вызывает его.
Обработчик может отклонить запрос, обработать его или сообщить об ошибке.
Если обработчик отклоняет запрос, это означает, что он не в состоянии его обра-
ботать и модуль ядра должен выбрать другой обработчик, зарегистрированный
для выполнения этой фазы. Если запрос может быть обработан, он обычно обра-
батывается и начинается следующая фаза обработки. Если обработчиком возвра-
щается сообщение об ошибке, обработка запроса прекращается и клиенту возвра-
щается сообщение об ошибке.
Какие модули войдут в состав сервера Apache на самом деле, определяется во
время конфигурирования. Самый простой сценарий предполагает, что модуль
ядра выполняет всю обработку запросов, и в этом случае сервер «сжимается» до
уровня простого web-сервера, который способен обрабатывать только HTML-
документы. Для одновременного выполнения нескольких запросов модуль ядра
обычно запускает для каждого из входящих сообщений новый процесс. Макси-
мальное число процессов также задается параметром конфигурации. Детали
конфигурирования и программирования сервера Apache можно найти в
[257].
Кластеры серверов
Структура Web, имеющая архитектуру клиент-сервер, порождает серьезную проб-
лему, состоящую в том, что web-сервер легко можно перегрузить. Практическое ре-
шение этой проблемы, различным образом реализуемое, состоит в том, чтобы ре-
плицировать сервер и получить вместо одного сервера кластер рабочих станций,
а для перенаправления запросов клиентов к одной из реплик использовать внеш-
ний интерфейс
[150].
Этот принцип иллюстрирует
рис.
11.9 и представляет собой
пример горизонтального распределения, о котором мы говорили в главе 1.