Сводные данные по типам серверов

Опубликовано в Технологии > Серверные технологии

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

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

Параллельный сервер без установления логического соединения
Довольно редко применяемый сервер, в котором создается новый поток или процесс для обработки каждого запроса. Во многих системах дополнительные затраты на создание потоков или процессов не оправдывают повышения эффективности, достигнутого за счет параллельной организации работы. Для того чтобы затраты на обеспечение параллельной работы были оправданы, время, необходимое для создания нового потока/процесса, должно быть намного меньше по сравнению с временем, необходимым для формирования ответа, или же должна существовать возможность использования нескольких устройств ввода/вывода для параллельной обработки запросов. Подробнее http://www.hometrainer.ru/miostimulyatori-cc29.html здесь.

Параллельный сервер с установлением логического соединения
Наиболее распространенный тип сервера, поскольку он обеспечивает использование надежного транспортного протокола (т.е. может применяться в глобальной объединенной сети), а также обладает способностью параллельно обрабатывать сразу несколько запросов. Существует две основных реализации таких серверов. В наиболее распространенной реализации для поддержки соединений используются параллельные однопотоковые процессы или параллельные потоки в одном процессе; гораздо менее распространенная реализация основана на использовании одного потока и асинхронного ввода/вывода для поддержки параллельных соединений.

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

В однопотоковой реализации один поток выполнения управляет параллельными соединениями. В этом случае достигается псевдопараллельная организация работы с использованием асинхронного ввода/вывода. Сервер в цикле ожидает перехода в состояние готовности к вводу/выводу любого из открытых соединений и обрабатывает каждый запрос. Поскольку все соединения поддерживаются в одном потоке, сервер может обеспечить их совместный доступ к общим данным. Но поскольку существует только один поток, сервер не может обрабатывать запросы быстрее по сравнению с последовательным сервером, даже на компьютере с несколькими процессорами. Такая реализация сервера может быть оправдана, если только приложение требует совместного доступа к данным разных соединений или на обработку каждого запроса не требуется много времени.

Похожие статьи