Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Сохранность и синхронность во взаимодействиях

Поиск

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

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

 

 

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

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

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

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

Система электронной почты — это типичный пример сохранной связи (persis­tent communication). При сохранной связи сообщение, предназначенное для от­сылки, хранится в коммуникационной системе до тех пор, пока его не удастся передать получателю. Если отталкиваться от рисунка, можно сказать, сообщение сохраняется на коммуникационном сервере до тех пор, пока его не удастся пере­дать на следующий коммуникационный сервер. Поэтому у отправляющего сооб­щение приложения нет необходимости после отправки сообщения продолжать

 

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) или отложенные синхрон­ные операции.

 

 

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

 
 

 


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

 

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

рые подходят для синхронных процессов. Ограничиваться исключительно эти­ми средствами во многих случаях нереально, особенно если принять во внима­ние географическую масштабируемость.

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

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

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



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 294; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.198.32 (0.009 с.)