|
Распределенные
программы
Сетевые службы всегда представляют собой
распределенные программы. Распределенная
программа - это программа, которая состоит из
нескольких взаимодействующих частей (в
приведенном на рис. 1.5 примере - из двух), причем
каждая часть, как правило, выполняется на
отдельном компьютере сети.
Рис. 1.5. Взаимодействие частей
распределенного приложения
До сих пор речь шла о системных распределенных
программах. Однако в сети могут выполняться и
распределенные пользовательские программы -
приложения. Распределенное приложение также
состоит из нескольких частей, каждая и которых
выполняет какую-то определенную законченную
работу по решению прикладной задачи. Например,
одна часть приложения, выполняющаяся на
компьютере пользователя, может поддерживать
специализированный графический интерфейс
вторая - работать на мощном выделенном
компьютере и заниматься статистической
обработкой введенных пользователем данных, а
третья - заносить полученные результаты в базу
данных на компьютере с установленной
стандартной СУБД. Распределенные приложения в
полной мере используют потенциальные
возможности распределенной обработки,
предоставляемые вычислительной сетью, и поэтому
часто называются сетевыми приложениями.
Следует подчеркнуть, что не всякое приложение,
выполняемое в сети, является сетевым. Существует
большое количество популярных приложений,
которые не являются распределенными и целиком
выполняются на одном компьютере сети. Тем не
менее и такие приложения могут использовать
преимущества сети за счет встроенных в
операционную систему сетевых служб.
Значительная часть истории локальных сетей
связана как раз с использованием таких
нераспределенных приложений. Рассмотрим,
например, как происходила работа пользователя с
известной в свое время СУБД dBase. Обычно файлы базы
данных, с которыми работали все пользователи
сети, располагались на файловом сервере. Сама же
СУБД хранилась на каждом клиентском компьютере в
виде единого программного модуля.
Программа dBase была рассчитана на обработку
только локальных данных, то есть данных,
расположенных на том же компьютере, что и сама
программа. Пользователь запускал dBase на своем
компьютере, и она искала данные на локальном
диске, совершенно не принимая во внимание
существование сети. Чтобы обрабатывать с помощью
dBase данные на удаленном компьютере, пользователь
обращался к услугам файловой службы, которая
доставляла данные с сервера на клиентский
компьютер и создавала для СУБД эффект их
локального хранения.
Большинство приложений, используемых в
локальных сетях в середине 80-х годов, являлись
обычными, нераспределенными приложениями. И это
понятно - они были написаны для автономных
компьютеров, а потом просто были перенесены в
сетевую среду. Создание же распределенных
приложений, хотя и сулило много преимуществ
(уменьшение сетевого трафика, специализация
компьютеров), оказалось делом совсем не простым.
Нужно было решать множество дополнительных
проблем - на сколько частей разбить приложение,
какие функции возложить на каждую часть, как
организовать взаимодействие этих частей, чтобы в
случае сбоев и отказов оставшиеся части
корректно завершали работу, и т. д., и т. п. Поэтому
до сих пор только небольшая часть приложений
является распределенными, хотя очевидно, что
именно за этим классом приложений будущее, так
как они в полной мере могут использовать
потенциальные возможности сетей по
распараллеливанию вычислений.
|