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

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

р аботу. Аналогично, у приложения, принимающего сообщения, также нет необ­ходимости находиться в рабочем состоянии во время отправки сообщения.

Система сохранной связи сравнима по принципу работы с почтовой системой Pony Express (рис. 2.20). Отправка письма начинается с доставки его в местное почтовое отделение. Почтовое отделение отвечает за сортировку почты в зависи­мости от того, в какое следующее почтовое отделение на пути к конечному пунк­ту доставки ее нужно отправить. В нем также хранят соответствующие сумки с почтой, отсортированной по месту назначения, и ждут появления лошади со своим всадником. В пункте назначения письма вновь сортируются в зависимо­сти от того, заберут ли их адресаты прямо здесь или нужно передать эти письма следующему почтальону. Отметим, что письма никогда не теряются и не пропа­дают. Несмотря на то что средства доставки, так же как и средства сортировки писем, за прошедшую сотню лет изменились, принципы сортировки, хранения и пересылки почты остались неизменными.

В противоположность сохранной связи при нерезидентной связи (transient communication) сообщение хранится в системе только в течение времени работы приложений, которые отправляют и принимают это сообщение. Точнее говоря (если опять отталкиваться от рис. 2.20), мы имеем дело с такой ситуацией, когда коммуникационный сервер, не имея возможности передать сообщение следую­щему серверу или получателю, просто уничтожает его. Обычно все коммуника­ционные службы транспортного уровня поддерживают только нерезидентную связь. В этом случае коммуникационный сервер соответствует традиционному маршрутизатору «получил — передал». Если маршрутизатор не в состоянии пе­реслать сообщение следующему маршрутизатору или принимающему хосту, со­общение просто теряется.

Помимо сохранной и нерезидентной связи существует деление на синхрон­ную и асинхронную связь. Характерной чертой асинхронной связи (asynchronous communication) является немедленное после отправки письма продолжение работы отправителя. Это означает, что письмо сохраняется в локальном буфере пере­дающего хоста или на ближайшем коммуникационном сервере. В случае синхрон­ной связи (synchronous communication) отправитель блокируется до того момента,

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

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

На практике применяются различные комбинации этих типов взаимодейст­вия. В случае сохранной асинхронной связи сообщение сохраняется в буфере ли­бо локального хоста, либо первого коммуникационного сервера. Этот вид связи обычно используется в системах электронной почты. В случае сохранной син­хронной связи сообщения хранятся только на принимающем хосте. Отправитель блокируется до момента сохранения сообщения в буфере получателя. Отметим, что приложение, принявшее сообщение, не обязано сохранять его на своем ло­кальном хосте. «Усеченный» вариант сохранной синхронной связи состоит в том, что отправитель блокируется до момента сохранения сообщения на коммуника­ционном сервере, соединенном с принимающим хостом.

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

Нерезидентная синхронная связь существует в различных вариантах. В наи­более слабой форме, основанной на подтверждениях приема сообщений, отпра­витель блокируется до тех пор, пока сообщение не окажется в локальном буфере принимающего хоста. После получения подтверждения отправитель продолжает свою работу. В ориентированной на доставку нерезидентной синхронной связи отправитель блокируется до тех пор, пока сообщение не будет доставлено полу­чателю для дальнейшей обработки. Мы рассматривали эту форму синхронного поведения при обсуждении асинхронных вызовов RPC. При асинхронных вызо­вах RPC клиент синхронизируется с сервером, ожидая, пока его запрос будет принят на дальнейшую обработку. Наиболее жесткая форма — ориентированная на ответ нерезидентная синхронная связь — предполагает блокировку отправи­теля до получения ответного сообщения с другой стороны, как в поведении за­прос-ответ при взаимодействии клиент-сервер. Эта схема характерна также для механизмов RPC и RMI.

Все сочетания сохранности и синхронности при взаимодействиях показаны на рис. 2.21. Другая, но схожая классификация обсуждается в [445].

До недавнего времени множество распределенных систем поддерживали только ориентированную на ответ нерезидентную синхронную связь, реализо­ванную через вызов удаленных процедур или через обращения к удаленным объек­там. После того как стало ясно, что этот вид связи не всегда самый подходящий, были созданы средства для менее жестких форм нерезидентной синхронной свя­зи, таких как асинхронные вызовы RPC (см. рис. 2.13) или отложенные синхрон­ные операции.