ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 22.04.2023

Просмотров: 351

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Чтобы добиться высокой степени прозрачности распределения, распределенные системы, работающие в глобальных сетях, могут нуждаться в маскировке больших задержек сообщений, курсирующих между процессами. Цикл задержки в глобальных сетях легко может достигать порядка сотен миллисекунд, а временами и секунд. Традиционный способ скрыть задержки связи – инициировав взаимодействие, немедленно перейти к другой работе. Типичным примером применения этой методики являются браузеры. Во многих случаях веб-документ, содержащийся в файле формата HTML, содержит, кроме текста, набор изображений, видео, код CSS и JavaScript и т.п. Для получения элементов веб-страницы браузер открывает соединение TCP/IP, читает поступающие данные и преобразует их в компоненты визуального представления. Установка соединения, как и чтение данных, представляет собой блокирующие операции. При работе с медленными коммуникациями ощущаются неудобства. Браузер обычно сначала получает страницу HTML-кода, а затем показывает ее. Для того чтобы по возможности скрыть задержки связи, некоторые браузеры начинают показывать данные по мере их получения. Когда текст с механизмами прокрутки становится доступным пользователю, браузер продолжает получение остальных файлов, необходимых для правильного отображения страницы, таких как картинки. По мере поступления они отображаются на экране. Таким образом, для того чтобы увидеть страницу, пользователь не должен дожидаться получения всех ее компонентов. В результате видно, что браузер выполняет несколько задач одновременно.

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

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


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

После проверки запроса сервер выбирает (то есть блокирует) находящийся в состоянии ожидания рабочий поток выполнения и передает запрос ему.

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

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

Результатом выполнения работы стала программная модель клиент-серверного приложения общего назначения на языке Си. В ходе работы проведен анализ аппаратных и программных компонентов распределенных систем (серверов и рабочих станций, сетевого оборудования, операционных систем и сетевых приложений), взаимодействия процессов клиента и сервера по схеме «запрос-ответ». Приведено сравнение сетевой модели OSI с уровнями стека протоколов TCP/IP, а именно соответствие семи уровней модели OSI с четырьмя уровнями стека протоколов TCP/IP. Рассмотрены варианты организации архитектуры клиент-сервер: в частности, горизонтальное и вертикальное распределения (пример циклического обслуживания клиентов веб-сервера). Таким образом тщательно рассмотрены понятия сервера и клиента, характеристики технологии клиент-сервер, варианты архитектуры, что соответствует выбранной теме курсовой работы.