Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Т2. Связь_Таненбаум_СРС_ПРИС.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.59 Mб
Скачать

СРС_ПРИС

Э. Таненбаум, М. ван Стеен – Распреднлённые системы. Принципы и парадигмы., с. 81 – 163

Глава 2 Связь

  1. Уровни протоколов

  2. Удаленный вызов процедур

  3. Обращение к удаленным объектам

  4. Связь посредством сообщений

  5. Связь на основе потоков данных

  6. Итоги

Связь между процессами — это суть распределенных систем. Нет смысла изучать распределенные системы, не рассматривая при этом во всех подробностях спосо­бы обмена информацией между различными процессами, выполняющимися на разных машинах. Взаимодействие в распределенных системах всегда базируется на низкоуровневом механизме передачи сообщений, предоставляемом базовой сетью. Как мы обсуждали в предыдущей главе, реализация взаимодействия через передачу сообщений сложнее, чем использование примитивов на базе разделяе­мой памяти. Современные распределенные системы часто включают в себя тыся­чи или даже миллионы процессов, разбросанных по ненадежной сети, такой как Интернет. Если не заменить простейшие средства взаимодействия в компьютер­ных сетях чем-то иным, разработка масштабных приложений будет достаточно сложной.

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

  1. удален­ный вызов процедур (Remote Procedure Call, RPC),

  2. удаленное обращение к ме­тодам (Remote Method Invocation, RMI),

  3. ориентированный на сообщения про­межуточный уровень (Message-Oriented Middleware, MOM) ) и

  4. потоки данных (streams).

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

82 Глава 2. Связь

щ ения к методам, которое основано на представлении распределенных объектов. Механизмы RPC и RMI рассматриваются в отдельных разделах.

Во многих распределенных приложениях связь не ограничивается слегка уре­занным шаблоном взаимодействий клиента и сервера. В подобных случаях мыс­лить категориями сообщений оказывается предпочтительнее. Однако применение разнообразных низкоуровневых средств связи компьютерных сетей приведет к серьезным нарушениям прозрачности распределения. Альтернативой им явля­ется высокоуровневая модель очереди сообщений, связь в которой очень напо­минает системы электронной почты. Ориентированный на сообщения средний уровень — это достаточно важная тема, чтобы отвести отдельный раздел и на нее.

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

2.1. Уровни протоколов

В условиях отсутствия совместно используемой памяти вся связь в распределен­ных системах основана на обмене (низкоуровневыми) сообщениями. Если про­цесс А хочет пообщаться с процессом В, он должен сначала построить сообщение в своем собственном адресном пространстве. Затем он выполняет системный вы­зов, который пересылает сообщение по сети процессу В. Хотя основная идея выглядит несложной, во избежание хаоса А и В должны договориться о смысле пересылаемых нулей и единиц. Если А посылает потрясающий новый роман, на­писанный по-французски, в кодировке IBM EBCDIC, а В ожидает результаты пе­реучета в супермаркете, на английском языке и в кодировке ASCII, их взаимо­действие будет не слишком успешным.

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

Чтобы упростить работу с множеством уровней и понятий, используемых в передаче данных, Международная организация по стандартам (International Standards Organization, ISO) разработала эталонную модель, которая ясно опре­деляет различные уровни, дает им стандартные имена и указывает, какой уро­вень за что отвечает. Эта модель получила название Эталонной модели взаимо­действия открытых систем (Open Systems Interconnection Reference Model) [120].