Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 32
Текст из файла (страница 32)
Таким же образом методы, изменяющие состояниеобъекта, передаются на сервер. Разработчик удаленного объекта должен разработать только код, необходимый для клиента, и сделать его динамически подгружаемым при присоединении клиента к объекту.Возможность передавать заместителя в виде параметра существует тольков том случае, если все процессы работают под управлением одной и той же виртуальнор! машины. Другими словами, каждый процесс работает в одной и той жесреде исполнения. Переданный при маршалинге заместитель просто подвергается демаршалингу на приемной стороне, после чего полученный код заместителяможно выполнять. В противоположность этому в DCE, например, передача за-126Глава 2. Связьглушек невозможна, поскольку разные процессы могут запускаться в разныхсредах исполнения, отличающртхся языком программирования, операционнойсистемой и аппаратным обеспечением.
Вместо этого в DCE производится компоновка (динамическая) с локальной заглушкой, скомпилированной в расчете насреду исполнения конкретного процесса. Путем передачи ссылки на заглушкув виде параметра RPC достигается возможность выхода за границы процесса.2 . 4 . Связь посредством сообщенийВызовы удаленных процедур и обращения к удаленным об7:.ектам способствуютсокрытию взаимодействия в распределенных системах, то есть повышают прозрачность доступа.
К сожалению, ни один из этих механизмов не идеален. В частности, в условиях, когда нет уверенности в том, что принр1мающая сторона в момент выполнения запроса работает, приходится искать альтернативные путиобмена. Кроме того, сршхронную по определению природу RPC и RMI, при которой на время осуществления операции необходимо блокировать клиента, временами тоже хочется заменить чем-то другим.Это «что-то другое» — обмен сообщениями. В этом разделе мы сосредоточимся на использованрп! в распределенных системах взаимодействия на основесообщений.
Сначала мы кратко рассмотрим, что такое чисто синхронное поведение и каковы его области применения. Затем обсудим системы обмена сообщениями, позволяющие сторонам в процессе взаимодействия продолжать работу.И наконец, исследуем системы очередей сообщений, позволяющие процессамобмениваться информацией, даже если вторая сторона в момент начала связи неработает.2.4.1. Сохранность и синхронностьво взаимодействияхЧтобы разобраться во множестве альтернатив в коммуникационных системах,работающих на основе сообщений, предположим, что система организована попринципу компьютерной сети, как показано на рис.
2.19. Приложения всегда выполняются на хостах, а каждый хост предоставляет интерфейс с коммуникационной системой, через который сообщения могут передаваться. Хосты соединенысетью коммуникационных серверов, которые отвечают за передачу (или маршрутизацию) сообщения между хостами.
Без потери общности можно предположить,что каждый из хостов связан только с одним коммунргкационным сервером.В главе 1 мы предполагали, что буферы могут быть размещены исключительно нахостах. Для более общего варианта нам следует рассмотреть варианты с размеп^ением буферов и на коммуникационных серверах базовой сети.В качестве примера рассмотрим разработанную в подобном стиле системуэлектронной почты.
Хосты работают как пользовательские агенты — это пользовательские приложения, которые могут создавать, посылать, принимать и читатьсообщения. Каждый хост соединяется только с одним почтовым сервером, кото-2.4. Связь посредством сообщений127рый является по отношению к нему коммуникационным сервером. Интерфейспользовательского хоста разрешает пользовательскому агенту посылать сообщения по конкретным адресам. Когда пользовательский агент представляет сообщение для передачи на хост, хост обычно пересылает это сообщение на свой локальный почтовый сервер, в выходном буфере которого оно хранится до поры довремени.Интерфейс сообщенийПередающий \ Коммуникационныйсервер^ Локальная сетьЛокальныйIбуферКоммуникационныйсерверПередающийхостВходящее сообщениеЛокальныйбуферРис. 2.19. Обобщенная организация коммуникационной системы,хосты которой соединяются через сетьПочтовый сервер удаляет сообщение из своего выходного буфера и ищет, куда его нужно доставить.
Поиски места назначения приводят к получению адреса(транспортного уровня) почтового сервера, для которого предназначено сообщение. Затем почтовый сервер устанавливает соединение и передает сообщение надругой, выбранный почтовый сервер. Последний сохраняет сообщение во входящем буфере намеченного получателя, также называемом почтовым ящиком получателя. Если искомый почтовый ящик временно недоступен, например, отключен, то хранить сообщение продолжает локальный почтовый сервер.Интерфейс принимающего хоста предоставляет пользовательским агентамслужбы, при помощи которых они могут регулярно проверять наличие пришедшей почты. Пользовательский агент может работать напрямую с почтовым ящиком пользователя на локальном почтовом сервере или копировать новые сообщения в локальный буфер своего хоста.
Таким образом, сообщения обычнохранятся на коммуникационных серверах, но иногда и на принимающем хосте.Система электронной почты — это типичный пример сохранной связи (persistent communication). При сохранной связи сообщение, предназначенное для отсылки, хранится в коммуникационной системе до тех пор, пока его не удастсяпередать получателю. Если отталкиваться от рисунка, можно сказать, сообщениесохраняется на коммуникационном сервере до тех пор, пока его не удастся передать на следующий коммуникационный сервер. Поэтому у отправляющего сообщение приложения нет необходимости после отправки сообщения продолжать128Глава 2. Связьработу. Аналогично, у приложения, принимающего сообщения, также нет необходимости находиться в рабочем состоянии во время отправки сообщения.Система сохранной связи сравнима по принципу работы с почтовой системойPony Express (рис.
2.20). Отправка письма начинается с доставки его в местноепочтовое отделение. Почтовое отделение отвечает за сортировку почты в зависимости от того, в какое следующее почтовое отделение на пути к конечному пункту доставки ее нужно отправить. В нем также хранят соответствующие сумкис почтой, отсортированной по месту назначения, PI ждут появления лошади сосвоим всадником. В пункте назначения письма вновь сортируются в зависимости от того, заберут ли их адресаты прямо здесь или нужно передать эти письмаследующему почтальону.
Отметим, что письма никогда не теряются и не пропадают. Несмотря на то что средства доставки, так же как и средства сортировкиписем, за прошедшую сотню лет изменились, принципы сортировки, храненияи пересылки почты остались неизменными.ПочтовоеотделениеЛошадь и всадникчПочтовоеотделение&J ^:4& .ПочтовоеотделениеZПочта хранится и сортируетсяв соответствии с пунктомназначения, чтобы отправиться в путь,когда появятся свободные лошадь и всадникr'"•^Почтовое готделениеLРис. 2.20. Сохранная связь — доставка писем во времена Pony ExpressВ противоположность сохранной связи при нерезиде71тной связи (transientcommunication) сообщение хранится в системе только в течение времени работыприложений, которые отправляют и принимают это сообщение. Точнее говоря(если опять отталкиваться от рис. 2.20), мы имеем дело с такой ситуацией, когдакоммуникационный сервер, не имея возможности передать сообщение следующему серверу или получателю, просто уничтожает его.
Обычно все коммуникационные службы транспортного уровня поддерживают только нерезидентнуюсвязь. В этом случае коммуникационный сервер соответствует традиционномумаршрутизатору «получил — передал». Если маршрутизатор не в состоянии переслать сообщение следующему маршрутизатору или принимающему хосту, сообщение просто теряется.Помимо сохранной и нерезидентной связи существует деление на синхронную и асинхронную связь.
Характерной чертой асинхронной связи (asynchronouscommunication) является немедленное после отправки письма продолжение работыотправителя. Это означает, что письмо сохраняется в локальном буфере передающего хоста или на ближайшем коммуникационном сервере. В случае синхронной связи (synchronous communication) отправитель блокируется до того момента.2.4.
Связь посредством сообщений129пока его сообщение не будет сохранено в локальном буфере принимающего хоста или доставлено реальному получателю. Наиболее жесткая форма синхронного взаимодействия предполагает, что отправитель остается блокированным и навремя обработки его сообщения получателем.На практике применяются различные комбинации этих типов взаимодействия. В случае сохранной асинхронной связи сообщение сохраняется в буфере либо локального хоста, либо первого коммуникационного сервера.
Этот вид связиобычно используется в системах электронной почты. В случае сохранной синхронной связи сообщения хранятся только на принимающем хосте. Отправительблокируется до момента сохранения сообщения в буфере получателя. Отметим,что приложение, принявшее сообщение, не обязано сохранять его на своем локальном хосте. «Усеченный» вариант сохранной синхронной связи состоит в том,что отправитель блокируется до момента сохранения сообщения на коммуникационном сервере, соединенном с принимающим хостом.Нерезидентная асинхронная связь характерна для служб дейтаграмм транспортного уровня, таких как UDP. Когда приложение отправляет сообщение, оновременно сохраняется в локальном буфере передающего хоста, после чего отправитель немедленно продолжает работу.