Перечень разновидностей серверов
В настоящей главе был представлен целый ряд реализаций мультисервисных и мультипротокольных серверов. Сводные данные об этих реализациях приведены в табл. 15.2. Из всех разновидностей мультисервисных проектов наиболее широкое распространение получили суперсерверы (и серверы, основанные на использовании транспортного протокола с установлением логического соединения). Где же продажа детской одежды оптом а?
Таблица 15.2. Широко распространенные разновидности серверов, рассматриваемые в этой главе
| Тип | Описание |
| Последовательный | Применяется редко. Односервисный мультипротокольный. Мультисервисный однопротокольный |
| Параллельный, (обычно) с одним потоком выполнения | Применяется очень широко. Односервисный мультипротокольный. Мультисервисный однопротокольный. Мультисервисный мультипротокольный |
| Параллельный, с несколькими процессами или потоками | Обычно мультисервисный однопротокольный |
| Параллельный, с вызовом на выполнение отдельных программ | Известен под названием суперсервера. Обычно мультисервисный мультипротокольный, имеющий файл конфигурации |
15.14. Резюме
При проектировании сервера программист может выбирать любую из множества возможных версий. Хотя большинство серверов предоставляет доступ только к одной службе, программист может выбрать мультисервисную реализацию для сокращения числа серверов, которые должны быть вызваны на выполнение. В большинстве мультисервисных серверов используется один транспортный протокол. Однако для объединения нескольких служб с установлением и без установления логического соединения в одном сервере может применяться несколько транспортных протоколов. И наконец, программист может выбрать для реализации параллельный мультисервисный сервер с параллельными потоками или процессами или с одним потоком выполнения, в котором используется асинхронный ввод/вывод для обеспечения псевдопараллельной обработки.
Пример сервера, представленный в данной главе, показывает, как может применяться асинхронный ввод/вывод в мультисервисном сервере для замены целого ряда ведущих серверов. В рассматриваемом сервере вызывается примитив операционной системы select для перехода в состояние ожидания активизации любого из ведущих сокетов.
Суперсерверы могут быть настраиваемыми статически или динамически. Статическое определение конфигурации происходит при вызове суперсервера на выполнение; динамическое определение конфигурации происходит во время работы суперсервера. Динамическая смена конфигурации (реконфигурация) позволяет системному администратору изменять набор предоставляемых служб без перетрансляции или перезапуска суперсервера. Суперсервер inetd операционной системы Linux обеспечивает динамическую реконфигурацию.
Материал для дальнейшего изучения
Суперсервер inetd описан в разделе 8 руководства программиста Linux Programmer 8 Manual. В этом документе описана также синтаксическая структура записей /etc/inetd.conf — файла конфигурации inetd.
Упражнения
- Если параллельный мультисервисный сервер с установлением логического соединения поддерживает всего К служб, то какое максимальное число сокетов должно в нем использоваться?
- Какое число сокетов может быть создано отдельным процессом в вашей локальной компьютерной системе?
- Рассмотрим однопотоковую реализацию мультисервисного сервера. Напишите алгоритм, который показывает, как сервер обслуживает соединения.
- Введите поддержку службы UDP в программу мультисервисного сервера, представленную в качестве примера в этой главе.
- Прочитайте документ RFC 1288 для получения информации о службе FINGER. Введите поддержку службы FINGER в программу мультисервисного сервера, представленную в качестве примера в этой главе.
- Спроектируйте суперсервер, который обеспечивает добавление новых служб без его перетрансляции или перезапуска процессов.
- Для каждого из проектов последовательных и параллельных мультисервисных серверов, описанных в данной главе, напишите формулу для определения максимального числа сокетов, распределяемых сервером. Представьте свой ответ как функцию числа предоставляемых служб и числа параллельно обрабатываемых запросов.
- В чем состоит основной недостаток суперсервера, который выполняет ветвление процесса с помощью функции fork для обслуживания каждого соединения, а затем с помощью функции execve вызывает на выполнение программу, поддерживающую данную службу?
- Рассмотрите файл конфигурации суперсервера inetd на любом компьютере Linux, чтобы узнать, какие службы он предоставляет.
- Прочитайте справочное руководство с описанием программы inetd и ее файла конфигурации. Может ли суперсервер inetd поддерживать программы RPC?
- Прочитайте справочное руководство с описанием файла конфигурации программы inetd. Объясните, что означает строка %А в поле параметров. В каких случаях она используется?