В. Столлингс - Операционные системы (1114679), страница 129
Текст из файла (страница 129)
И меется большое количество пакетов промежуточного программного печения — от самых простых до очень сложных. Однако объединяет их то ". У они способны скрыть сложности и отличия различных сетевых протоколо операционных систем, Разработчики клиентского и серверного программной» обеспечения обычно предоставляют возможность выбора при работе одного иэ нескольких наиболее популярных пакетов промежуточного программного обеспечения. Таким образом„пользователь может решить, какая из промежуточных стратегий будет применена в корпорации, и затем использовать программное обеспечение разных производителей, поддерживающих выбранную стратегию. Архитектура промежуточного программного обеспечения На ис. а рис.
13.8 показана предполагаемая роль промежуточного программного обеспечения в а ения в архитектуре клиент/сервер. Точная роль используемых компонентов зависит от стиля используемых клиент-серверных вычислений. Вернитесь к р ..5, чтобы вспомнить о различных классах приложений клиент/сервер, опре- ис.
13.5 деляемых способом разделения функциональности между клиентом и сервером. В любом случае рис. 13.8 дает общее представление об используемой архитектуре. Чаоть 6. Распределенные системы Глава 13. Распределенные вычисления, архитектура... Службы представления АР1 Сервер Взаимодействие на уровне промежутсчноко ПО Прикладные сервисы Коммуникационное ПО КоммуникационноеПО Взаимодействие на уровне ПРОТОКОЛОВ Интерфейсы платформ Операционная системаклиента Операционная система сервера Аппаратная платформа Аппаратная платформа Часть 6.
Распределенные системы Рис. 13.8. Роль промежуточного программного обеспечения и архитектуре клиентусервер Обратите внимание на наличие как серверного, так и клиентского промежуточного программного обеспечения. Его основная цель — позволить приложению илн пользователю на клиентской машине получить доступ к различным серверным сервисам, не беспокоясь о различиях между серверами. Рассмотрим ЯВЬ, предложенный с целью стандартизации доступа к локальным базам данных, независимо от того, локальный зто доступ или удаленный. Хотя многие производители реляционных баз данных и поддерживают ЯЦЬ, но добавляют к нему собственные расширения. Это позволяет производителям выделить свой продукт среди прочих, однако создает проблемы потенциальной несовместимости.
Рассмотртпи, например, распределеЪпную систему, использующуюся, кроме прочего, для поддержки работы отдела кадров. Основные данные о персонале, такие, как имена, фамилии, адреса и т.п., могут храниться в базе данных 6прта, в то время как информация о продажах хранится в базе данных Огас1е. Когда пользователю из отдела кадров нужна какая-то запись, его мало интересует, в базе данных какого именно производителя она находится. Промежуточное программное обеспечение позволяет совершенно одинаково обращаться к различным системам.
Интересно рассмотреть роль промежуточного программного обеспечения не с точки зрения реализации, а с точки зрения логики (показанной на рис. 13.9). Посредством промежуточного программного обеспечения реализуются обещанные клиент-серверные вычисления. Распределенная система в целом может рассматриваться как множество доступных пользователю приложений и ресурсов. Пользователя не должно интересовать физическое размещение данных и приложений.
Все приложения работают посредством однотипного АР1. Промежуточное программное обеспечение, охватывающее все платформы и сети клиентов и серверов, отвечает за маршрутизацию запросов клиентов соответствующему серверу. Рис. 18.9. Логическая тпочка зрения на промежуточное программное обеспечение 1ВЕН1т061 Хотя имеется большое количество различных вариантов промежуточного программного обеспечения, обычно все они используют один из двух базовых механизмов — передачу сообщений или вызов удаленных процедур. Оба эти метода будут рассмотрены нами в следующих разделах. Обычно в распределенной системе компьютеры, представляя собой изолированные компьютерные системы, не используют общую основную память.
Таким образом, в распределенных системах неприменимы методы, связанные с сонместным использованием памяти„например семафоры. Вместо них используется передача сообщений. В этом и следующем разделах мы рассмотрим два основных подхода к данному вопросу. Первый из них — простое использование сообщений, такое же, как и в единой вычислительной системе. Второй подход — вызов удаленных процедур — представляет собой технологию, опирающуюся на передачу сообщений как базовую функцию. Ба рис.
13.10,а показано использоваеие Распределенной передачи сообщений для реализации Функциональности клттенту сервер. Процесс-клиент запрашивает некоторый сервис (например, чтение Файла или печать) и посылает сообщение, содержащее запрос к процессу~ерверу. Сервер выполняет запрос и отправляет клиенту сообщение, содержппйее ответ. В простейшей реализации для такого взаимодействия нужны всего две Функции: анетте и ВесехОе. Функция Веттст определяет получателя сообщения н Глава 13. Распределенные вычисления, архитектура...
г 1 ! б) Вигое уаееенкик праЖЬр Вопросы надежности Часть 6. Распределенные систекМ включает содержимое в отправляемое сообщение. Функция Ресеьие уведомляет- ся о том, от кого следует принимать сообщение (включая "от всех"), н сохраняет содержимое сообщения в предоставленном ей для этого буфере. в) Брокер обьектннк гепросое Рис. 13.10. Иеханигмы промежуточного ПО 1'ЯТЕХ95г' На рис. 13.11 показана реализация передачи сообщений. Процессы пользуются сервисами, предоставляемыми модулями передачи сообщений. Запрос к модулю " можно выразить в терминах примитивов и параметров.
Примитив определяет вы- .':-' полняемую функцию, а параметры — передаваемые данные и управляющую инфор-, манию. Фактический вид примитива зависит от программного обеспечения, исполь- ' зующегося для передачи сообщений. Это может быть вызов процедуры либо сообще- .,' ние для процесса, являющегося частью операционной системы.
Рис 13 11 Основные оримиптиоы лередочи сообии кий Примитпв Беппо' используется процессом, намеревающимся передать сообщение. Его параметрами являются идентификатор процесса-получателя и содержимое сообщения. Модуль передачи сообщений создает единую структуру данных, содержащую переданную информацию, и отправляет ее на машину, где работает процесс- получатель, при помощи некоторых средств коммуникации, например, используя протоколы ТСР/1Р. По достижении системы-получателя данные пересылаются ее средствами коммуникации модулю передачи сообщений этой системы. Тот определяет (по содержимому поля идентификатора процесса) получателя данного сообщения и помещает полученную информацию в буфер этого процесса.
И данном сценарии процесс-получатель должен объявить о своей готовности получать сообщения путем создания принимающего буфера и уведомления об этом модуля передачи сообщений вызовом примитива ресе1 ге. При альтернативном подходе такого оповещения не требуется. Вместо этого, получив сообщение, модуль передачи сообщений каким-то предопределенным образом сигнализирует об этом процессу-получателю и помещает полученное сообщение в совместно используемый буфер, С распределенной передачей сообщений связан целый ряд вопросов, которые и будут рассмотрены нами в оставшейся части этого раздела. Благодаря надежности средств передачи сообщений доставка сообщения гарантируется, если только она возможна. Зти средства используют надежный транспортный протокол или аналогичную функциональность и должны выполнять проверку корректности, подтверждение, при необходимости — повторное отправление, а также упорядочение разупорядоченных сообщений.
В связи с тем, что доставка гарантирована, подтверждения получения сообщения не требуется, однако в случае его получения отправитель знает, что в настоящий момен~ доставка уже завершена. Если доставка сообщения невозможна (постоянный Глава 13. Распределенные вычисления„архитектура... 'е 1 в Ф~ 4 бо й сс'т1, - "к неработоспособность системы-получателя и т.п.), отправитель обяза, пь;ю должен быть уведомлен об этом. Другой предельный случай — когда система передачи сообщений просто ,-,продляет сообщение в сеть, не сообщая ни об успешности, ни о неудаче от,;,.затеняя сообщения. Сложность системы и накладные расходы при этом зна~птсльво ниже.
Б том случае, когда приложения требуют подтверждения по;гневна сообщения, таким подтверждением в принципе может быть само соб, япс -- ответ на запрос. Вариацией базовой модели передачи сообщений является вызо уд вызов аленных: процедур (гегпМе Ргосейпге саБ — ВРС). В настоящее время з о общ р мя зто общеп инятыйф метод инкапсуляции коммуникаций в распределенных системах. Су стемах. С ть этого ме-, тода состоит в том, чтобы позволить программам, находящимся н р имея на азных ма-' шинах„взаимодействовать с использованием семантики вызо а вызова и возврата из узроцсдур, так же, как если бы программы располагались на одной на о ной машине.
Та; кпм образом, обращение к сервису на удаленной машине выполняетс ро,:. выполняется как про', стой вызов процедуры. Популярность этого подхода обусловлена р д д тсу" б словлена ядом достсу' пнств метода. Вопроеы блокировки При использовании неблокирующих, или асинхронных, примитивов пров результате вызовов Вспб или Кесеуче не приостанавливается, и операции, „н система возвращает управление процессу, как только сообщение поставлено в очередь для передачи или сделана его копия.
Если копия не делается, то все азменеиия, вносимые в сообщение процессом до ~и даже во время) отправки, ос- г таются на ответственности процесса. Когда сообщение передано или скопировано .в -"! в безопасное место для последующей передачи, процесс-отправитель прерывается, получая уведомление о том, что буфер может использоваться для следующего сообщения.
Соответственно, после неблокирующего вызова Кесетче выполнение процесса продолжается. Когда приходит сообщение, процесс получает уведомление об этом посредством прерывания ~возможен также периодическии опрос состояния системы сообщений процессом). Неблокирующие примитивы обеспечивают эффективное и гибкое использование процессом средств передачи сообщений. Недостатком данного подхода является сложность тестирования и отладки программ, использующих указанные . примитивы. Невоспроизводимость результатов и их зависимость от временных;.': последовательностей могут создать трудноразрешимые проблемы.