Процедурная модель в распределенных системах

Модель выполнения вызовов процедур, применяемая при разработке нераспределенных компьютерных программ, позволяет понять, как происходит выполнение распределенной программы. Необходимо отказаться от подхода, при котором изучается обмен сообщениями между клиентской и серверной программами, и представить себе, что каждый сервер реализует (удаленную) процедуру и взаимодействие между клиентом и сервером осуществляется по принципу вызова этой процедуры и возврата управления. Запрос, передаваемый от клиента к серверу, соответствует вызову удаленной процедуры, а ответ, отправляемый с сервера клиенту, соответствует выполнению оператора return. Такая аналогия иллюстрируется на рис. 21.4. В распределенной среде применяется один поток управления. На данном рисунке пунктирные линии показывают, как управление передается от клиента к серверу во время дистанционного вызова процедур и как возвращается обратно после получения ответа от сервера. Привет. Спешите купить велосипеды Stels в Москве. Это не шутка! заправка автокондиционеров

21.8. Аналогия между взаимодействием типа клиент/сервер и дистанционным вызовом процедур

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

Выдача удаленной программой ответа равносильно выполнению возврата в локальном вызове процедуры. Управление передается вызывающей процедуре, а выполнение вызванной процедуры прекращается. Понятие вложенных вызовов процедур распространяется также и на дистанционные вызовы процедур. Одна удаленная процедура может вызвать другую удаленную процедуру. Как показано на рис. 21.4, вложенные дистанционные вызовы процедур соответствуют той ситуации, когда сервер становится клиентом другой службы.

Безусловно, аналогия между дистанционным вызовом процедур и взаимодействием между клиентом и сервером не позволяет описать все тонкости. Например, известно, что локальная процедура остается полностью бездействующей до тех пор, пока к ней не перейдет поток управления (т.е. до тех пор, пока она не будет вызвана). В отличие от этого, серверный процесс должен существовать в удаленной системе и ожидать, когда настанет время сформировать ответ, прежде чем им будет получен первый запрос от клиента. Другие различия связаны с тем, как передаются данные в удаленную процедуру. Локальные процедуры обычно принимают лишь несколько параметров и возвращают небольшой объем результатов. Однако сервер может принимать или возвращать произвольные объемы данных (т.е. он может принимать или возвращать потоки данных произвольной длины через соединение TCP).

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

Похожие статьи Меню Опрос Фото Популярное