4.9. Последовательные и параллельные серверы

4.9. Последовательные и параллельные серверы

Сервер в нашем простом примере из предыдущего раздела являлся последовательным сервером (iterative server). Он последовательно обрабатывал запросы клиентов, переходя к следующему только после полного завершения работы с предыдущим. Например, если два клиента пошлют запрос такому серверу приблизительно одновременно, причем один из них запросит 10-мегабайтный файл, отправка которого займет, например, 10 секунд, а второй — 10-байтный файл, то второму придется ждать по меньшей мере 10 секунд, пока не будет обслужен первый клиент.

Альтернативой является параллельный сервер (concurrent server). Наиболее часто встречаемый в Unix вид такого сервера называется one-child-per-client (каждому клиенту — один дочерний процесс). Сервер вызывает fork для создания нового процесса каждый раз, когда появляется новый клиент. Дочерний процесс полностью обрабатывает запрос клиента, а поддержка многозадачности в Unix обеспечивает параллельность выполнения всех этих процессов. Однако существуют и другие методы решения задачи, подробно описанные в главе 27 [24]:

? создание пула дочерних процессов и передача нового клиента свободному дочернему процессу;

? создание одного пpoгрaммнoгo потока для каждого клиента;

? создание пула потоков и передача нового клиента свободному потоку.

Хотя в [24] обсуждаются проблемы создания сетевых серверов, те же методы применимы и к серверам межпроцессного взаимодействия (IPC server), клиенты которых находятся на одном узле.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Последовательные подсостояния

Из книги Самоучитель UML автора Леоненков Александр

Последовательные подсостояния Последовательные подсостояния (sequential substates) используются для моделирования такого поведения объекта, во время которого в каждый момент времени объект может находиться в одном и только одном подсостояний. Поведение объекта в этом случае


Параллельные подсостояния

Из книги Журнал «Компьютерра» № 11 от 20 марта 2007 года автора Журнал «Компьютерра»

Параллельные подсостояния Параллельные подсостояния (concurrent substates) позволяют специфицировать два и более подавтомата, которые могут выполняться параллельно внутри составного события. Каждый из подавтоматов занимает некоторую область (регион) внутри составного


Параллельные миры пересекаются

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

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


Последовательные итераторы (Forward iterators)

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Последовательные итераторы (Forward iterators) Класс или встроенный тип X удовлетворяет требованиям последовательного итератора, если справедливы следующие выражения:Таблица 4. Требования последовательного итератора  выражение возвращаемый тип семантика исполнения


7.3.3. Опасны ли параллельные процессы?

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

7.3.3. Опасны ли параллельные процессы? Хотя Unix-разработчики давно привыкли к вычислениям с помощью взаимодействующих процессов, среди них нет собственной традиции использования параллельных процессов (процессов, которые совместно используют все выделенное им адресное


7.3.3. Опасны ли параллельные процессы?

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

7.3.3. Опасны ли параллельные процессы? Хотя Unix-разработчики давно привыкли к вычислениям с помощью взаимодействующих процессов, среди них нет собственной традиции использования параллельных процессов (процессов, которые совместно используют все выделенное им адресное


Параллельные иерархии

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

Параллельные иерархии Чтобы не оставить камня на камне, рассмотрим вариант примера SKIER с двумя параллельными иерархиями. Это позволит нам смоделировать ситуацию, уже встречавшуюся на практике: TWO_ WAY_LIST > LINKED_LIST и BI_LINKABLE > LINKABLE; или иерархию с телефонной службой


Параллельные резонансные цепи

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Параллельные резонансные цепи Уравнения для анализа параллельной резонансной цепи значительно сложнее уравнений для последовательного колебательного контура. Можно найти полное описание этих уравнений в учебниках. Однако моделирование на PSpice позволяет легко


Последовательные цепи на постоянном токе

Из книги Инфобизнес на полную мощность [Удвоение продаж] автора Парабеллум Андрей Алексеевич

Последовательные цепи на постоянном токе Простая схема постоянного тока, состоящая из источника напряжения и трёх резисторов, могла бы быть описана в уже знакомом нам листинге:Series Circuit with Source and Three ResistorsV1 1 0 2 4VR1 1 2 50R2 2 3 100R3 3 0 80В PSpice это был бы листинг входного или схемного


7.3.4. Последовательные порты

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

7.3.4. Последовательные порты Файл /proc/tty/driver/serial содержит конфигурационную и статистическую информацию о последовательных портах. Эти порты нумеруются начиная с нуля.[24] Работать с настройками порта позволяет также команда setserial, но файл /proc/tty/driver/serial, помимо всего прочего,


2.10. Номера портов TCP и параллельные серверы

Из книги автора

2.10. Номера портов TCP и параллельные серверы Представим себе параллельный сервер, основной цикл которого порождает дочерний процесс для обработки каждого нового соединения. Что случится, если дочерний процесс будет продолжать использовать заранее известный номер порта


4.8. Параллельные серверы

Из книги автора

4.8. Параллельные серверы Сервер, представленный в листинге 4.2, является последовательным (итеративным) сервером. Для такого простого сервера, как сервер времени и даты, это допустимо. Но когда обработка запроса клиента занимает больше времени, мы не можем связывать один


22.7. Параллельные серверы UDP

Из книги автора

22.7. Параллельные серверы UDP Большинство серверов UDP являются последовательными (iterative): сервер ждет запрос клиента, считывает запрос, обрабатывает его, отправляет обратно ответ и затем ждет следующий клиентский запрос. Но когда обработка запроса клиента занимает