Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 41
Текст из файла (страница 41)
Смысл сохранной связи состоит в том, что посылаемое сообщение хранится в коммуникационной системедо тех пор, пока не будет доставлено по назначению. Другими словами, ни отправитель, ни получатель при передаче сообщения не обязаны быть активными. В случае нерезидентной связи механизмы хранения не предусмотрены, а значит, получатель должен быть готов принять сообщение, когда бы оно ни было послано.При асинхронной связи отправитель может продолжать работу сразу послеустановки сообщения в очередь на отправку, возможно, еще до того, как оно будет отправлено. При синхронной связи отправитель блокируется как минимумдо момента получения сообщения. В других вариантах отправитель может блокироваться до момента доставки сообщения получателю или до получения отнего ответа, как это сделано в RPC.Модели обмена сообщениями промежуточного уровня обычно предоставляют сохранную асинхронную связь и используются там, где применение механизмов RFC и RMI не оправдано.
В первую очередь это интеграция наборов базданных (сильно распределенных) в крупных информационных системах. Другиеобласти их применения включают в себя электронную почту и рабочие потоки.Абсолютно иную связь предлагают потоки данных, проблема которых состоит в том, что любые два последовательных сообщения взаимосвязаны по времени. В непрерывных потоках данных максимальная задержка доставки своя длякаждого сообщения. Кроме того, необходимо, чтобы сообщения обладали некоейминимальной задержкой доставки. Типичными примерами непрерывных потоков данных являются аудио- и видеопотоки.
Часто бывает сложно описать, какими должны быть временные взаимосвязи или чего мы ожидаем от базовой подсистемы связи (в терминах качества обслуживания). При реализации мы такжесталкиваемся с затруднениями. Усложняющим фактором является роль дрожания (максимальное PI минимальное значения параметров).
Даже если средняяпроизводительность достижима, серьезные колебания времени доставки могутпривести к неприемлемой производительности.Вопросы и задания1. Во многих протоколах модели OSI каждый уровень добавляет к сообщениюсвой заголовок. Несомненно, создавать в начале каждого сообщения единый2.6. Итоги161заголовок, содержащий всю контрольную информацию, было бы более эффективно, чем поддерживать все эти отдельные заголовки. Почему так не делается?2. Почему коммуникационные службы транспортного уровня обычно не подходят для построения распределенных приложений?3. Надежная массовая рассылка требует от отправителя надежной посылки сообщений группе получателе^!. Может ли подобная служба находиться на промежуточном уровне или должна быть частью нижнего уровня?4. Рассмотрим процедуру incr с двумя целыми параметрами.
Эта процедура добавляет к каждому из параметров единицу. Представим себе, что в качествеобоих параметров используется одна и та же переменная -- incrd . 1). Еслипеременная 1 изначально равна О, какое значение будет у нее при вызове поссылке? А при использовании механизма копирования/восстановления?5. В языке С существует конструкция, называемая объединением (union), в которой поле записи — в С называемой структурой (struct) — может хранитьлюбое значение из нескольких вариантов. Во время исполнения надежногоспособа определить, что там находится, не существует. Должна ли эта особенность языка С как-то поддерживаться при удаленном вызове процедур? Поясните свой ответ.6. Один из способов преобразования параметров в системах RPC — требоватьот каждой машины передачи параметров в их натуральном виде, с тем чтобыпреобразованием занимался получатель сообщения.
Базовая система представления параметров кодируется в первом байте. Однако будет ли работатьподобная система, если учесть, что нахождение первого байта в первом слове — само по себе проблема?7. Рассмотрим клиент, посылающий на сервер асинхронный вызов RPC и ожидающий возвращения сервером результата, который также будет послан припомощи асинхронного вызова RPC. Будет ли это аналогично использованиюклиентом обычного вызова RPC? Что произойдет, если мы заменим асинхронные вызовы RPC синхронными?8. Вместо регистрации некоего сервера с помощью демона, как это сделанов DCE, мы могли бы навсегда закрепить его за одной из конечных точек.Конечная точка затем может использоваться в качестве ссылки на объектв адресном пространстве сервера.
Каково основное неудобство подобной схемы?9. Приведите пример реализации ссылки на объект, которая позволила бы клиенту выполнить привязку к нерезидентному удаленному объекту.10. Java и другие языки поддерживают обработку исключений, которые возбуждаются при возникновении ошибки. Каким образом можно применить исключения в RPC и RMI?И. Можно ли использовать механизм исключений также и для того, чтобы отличать статические вызовы RPC от динамических?162Глава 2.
Связь12. Некоторые реализации систем промежуточного уровня на базе распределенных объектов целиком базируются на динамическом обращении к методам.СтатическР1е обращения при компиляции преобразуются в динамические.В чем преимущества подобного подхода?13. Опишите, как реализуется связь без образования соединения между клиентом и сервером при использовании сокетов.14. Объясните разницу между примитивами MPI_bsend и MPI_isend в MPI.15.
Предположим, что мы в состоянии использовать только примитивы нерезидентной асинхронной связи, причем исключительно примитивы асинхронногоприема. Как в таком случае реализовать примитивы для нерезидентной сипхроппой связи?16. Теперь предположим, что мы в состоянии использовать только примитивыдля нерезидентной синхронной связи. Как при этом реализовать примитивыдля нерезидентной асинхронной связи?17.
Имеет ли смысл реализовывать сохранную асинхронную связь средствамиRPC?18. В тексте мы упоминали, что для автоматического запуска процесса, извлекающего сообщения из входной очереди, часто используется демон, которыйследит за ее состоянием. Опишите альтернативную реализацию, не требующую использования демона.19. Таблицы маршрутизации в системе MQSeries фирмы IBM и множестве других систем очередей сообщений настраиваются вручную. Опишите простойспособ автоматизации этой работы.20.
Как встроить сохранную асинхронную связь в коммуникационную модель набазе удаленных объектов RMI?21. В случае сохранной связи получатель обычно имеет свой собственный буфер,в котором в период его пассивности хранятся сообщения. Чтобы создать подобный буфер, нам может понадобиться информация о его размере. Приведите аргументы за и против указания размера.22. Опишите, почему нерезидентная синхронная связь имеет «врожденные» проблемы с масштабируемостью, и как эти проблемы могут решаться.23. Приведите пример, когда групповая рассылка может быть полезной для дискретных потоков данных.24.
Как можно было бы гарантировать максимальную сквозную задержку передаче! при организации группы компьютеров в кольцо (физическое или логическое)?25. Как можно было бы гарантировать минимальную сквозную задержку передачи при организации группы компьютеров в кольцо (физическое или логическое)?26. Представьте, что у вас есть спецификация корзины элементарных пакетов смаксимальным размером элемента данных — 1000 байт, скоростью работы2.6. Итоги163корзины — 10 Мбайт/с, емкостью корзины — 1 Мбайт и максимальной скоростью передачи — 50 Мбайт/с. Как долго она сможет работать на максимальной скорости?27.
В этом упражнении вам следует реализовать простую систему клиент-серверна базе RPC. Сервер предоставляет одну процедуру next, которая в качествевходного параметра получает целое число и возвравдает следующее за нимчисло. Напишите процедуру-заглушку next для использования на сторонеклиента. Она должна будет пересылать параметры на сервер, используя протокол UDP, и ожидать ответа, причем следует рассчитывать на очень длительное время ожидания. Серверная процедура должна следить за соответствующим портом, принимать запрос, выполнять его и возвращать результатклиенту.Глава 3Процессы3.1.
Потоки выполнения3.2. Клиенты3.3. Серверы3.4. Перенос кода3.5. Программные агенты3.6. ИтогиВ предыдущей главе мы обсуждали взаимодействие в распределенных системах.Взаимодействие происходит между процессами, и в этой главе мы поближе рассмотрим то, какую роль играют в распределенных системах различные типы процессов. Концепция процесса зародилась в операционных системах, где этимпонятием обычно обозначают выполняемую программу. С точки зрения операционных систем наиболее важные для обсуждения вопросы — это управление процессами и планирование процессов. Однако при переходе к распределенным системам другие вопросы становятся столь же или еще более важными.Так, например, для эффективной организации систем клиент-сервер частобывает удобно использовать многопоточные технологии.
Как мы обсудим в первом разделе этой главы, основной вклад потоков выполнения в работу распределенных систем заключается в том, что они позволяют создавать клиенты и серверы так, что взаимодействие и локальная обработка выполняются параллельно,давая выигрыш в производительности.Как мы говорили в главе 1, модель клиент-сервер крайне важна для распределенных систем. В этой главе мы детально рассмотрим основные типы организации клиентов и серверов.
Мы также уделим внимание общим вопросам построения серверов. Кроме того, мы обсудим общедоступные серверы объектов,которые предоставляют базовые средства для построения распределенных объектов.Серьезной проблемой, особенно в глобальных системах, является переноспроцессов между различными машинами. Миграция процессов, или, более точно,миграция кода, может помочь повысить масштабируемость и, кроме того, помогает динамически конфигурировать клиенты и серверы. Что на самом деле под-3.1. Потоки выполнения165разумевается под миграцией кода и как она реализуется, также будет рассмотрено в этой главе.Последняя наша тема связана с относительно новым явле1Н1ем — программными агентами. В отличие от асимметричной программной модели клиентсервер, мультиагентные системы в основном состоят из набора одршакововажных агентов, совместная работа которых приводит к достижению общейцели.
Программные агенты — это еще один тип процессов, которые могутсуществовать в различных формах. В последнем разделе рассказывается, чтотакое агенты с точки зрения распределенных систем и каковы принципы ихсовместной работы.3 . 1 . Потоки выполненияХотя процессы являются строительными блоками распределенных систем, практика показывает, что дробления на процессы, предоставляемого операционными системами, на базе которых строятся распределенные системы, недостаточно.Вместо этого оказывается, что наличие более тонкого дробления в форме нескольких потоков выполнения {threads) на процесс значительно упрощает построение распределенных приложений и позволяет добиться лучшей производительности.