Информационные технологии - Учебное пособие (Машкина М.Н.)

7.6    5.6. вычисления клиент/сервер

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

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

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

В архитектуре клиент/сервер обычно выделяют четыре уровня: уровни приложения, ПО промежуточного слоя, а также транспортный/коммуникационный и сетевой. Сетевой уровень можно рассматривать как уровень физической передачи данных: здесь выполняются все операции по пересылке данных между клиентом и сервером. Транспортный/коммуникационный уровень обеспечивает надежную передачу информации между разнородными машинами и прозрачные коммуникации между ними. Для этого используются различные стандартные протоколы, например TCP/IP, SPX/IPX или SNA. Уровень ПО промежуточного слоя служит для поддержки таких средств операционной системы, как передача данных, служба каталогов и защита. Коммуникации являются основой для взаимодействия процессов. Коммуникации между процессами (IPC) обычно реализуются через удаленные вызовы процедур (RPC). На уровне приложения осуществляются доступ к файлам, базам данных и обработка транзакций.

Распределение вычислений

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

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

Преимущества и недостатки систем клиент/сервер

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

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

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

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

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

Однако вычисления клиент/сервер обладают и определенными недостатками. Хотя теоретически такие системы реализуются на более дешевых по сравнению с мэйнфреймами и мини-ЭВМ персональных компьютерах, ожидаемая экономия затрат далеко не всегда соответствует реальности. При оценке стоимости компьютерной системы следует учитывать множество факторов, а не только затраты на аппаратуру. Важным показателем является производительность труда пользователей, разработчиков и администраторов. Разработчики могут улучшить продуктивность благодаря доступным в системах клиент/сервер GUI-интерфейсами инструментальным средствам автоматизированной разработки программного обеспечения (CASE). Однако из-за меньшей надежности таких систем пользователи и администраторы могут столкнуться и со снижением производительности, ведь поддерживать работоспособность системы, состоящей из множества разнородных компонентов, намного труднее, да и на устранение неисправностей требуется дополнительное время. Важное значение имеет и реализация технологии. Достаточно высокой квалификации в этой области достичь нелегко. Значительная часть усилий при переходе к вычислениям клиент/сервер связана с проблемой обучения и подготовки. Сама технология развивается настолько быстро, что учиться приходится уже в процессе перехода на нее (или в связи с ним). Однако, как ив случае внедрения любого крупного новшества, по мере расширения знаний компьютерного сообщества о системах клиент/сервер проблемы обучения потеряют свою остроту. Обычно считается, что вычисления клиент/сервер являются менее дорогими по сравнению с решениями на базе мини-компьютеров или мэйнфреймов. Например, раньше единственным способом реализации сложного многопользовательского приложения базы данных было применение дорогого мощного мини-компьютера или большой ЭВМ. Начальные и текущие затраты на такую систему могли быть очень значительными. В то же время архитектура клиент/сервер теоретически способна поддерживать работавшие прежде на мэйнфрейме или аналогичные по классу приложения при гораздо меньших издержках. Это объясняется тем, что в системах клиент/сервер загрузка распределяется по нескольким подключенным к сети недорогим компьютерам. Благодаря объектно-ориентированным средствам разработки и использованию рабочих станций с дружественным графическим интерфейсом (GUI) сам процесс создания приложений также упрощается.

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

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

Важной, а по мнению отдельных специалистов, и основной составляющей стоимости является текущее сопровождение и поддержка сетей клиент/сервер. Так, по некоторым оценкам, стоимость эксплуатации сети из ПК на 300\% превышает стоимость эксплуатации мэйнфрейма с эквивалентным числом пользователей. Другие источники считают, что в расчете на каждое рабочее место такие сети обходятся на 50\% дороже. На самом деле здесь многое зависит от конкретной реализации, но, так или иначе, эти цифры весьма показательны. Из-за проблем обслуживания, свойственных распределенным сетям, издержки на управление в системах клиент/сервер увеличиваются.

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

Расширение доступа к данным

Администраторы информационных систем и разработчики приложений часто сталкиваются с таким фактором, как неоднородная вычислительная среда. Сочетание широко распространенных технологических платформ, например ПК, мини-ЭВМ и больших компьютеров, а также разнообразных операционных систем ставит перед специалистами информационных подразделений и разработчиками приложений весьма непростые проблемы. Крупные организации и даже относительно небольшие фирмы часто имеют разнородные компьютерные системы, которые нередко разнесены территориально. Для администраторов информационных систем важнейшим вопросом является обеспечение взаимодействия всех этих компонентов, а для разработчиков приложений – создание такого ПО, которое могло бы функционировать на максимально возможном числе аппаратных и программных платформ и взаимодействовать со всеми другими платформами. В конечном счете все это направлено на то, чтобы предоставить пользователям простой доступ к данным в масштабе предприятия.

Благодаря преимуществам вычислений клиент/сервер решение указанной проблемы выходит на качественно новый уровень. Так, ПО промежуточного слоя, а во многих случаях даже сами СУБД теперь могут скрывать детали доступа к нескольким источникам данных за общим интерфейсом. Прикладным программистам больше не придется выполнять эти обязанности. Они просто используют интерфейс, обеспечиваемый такими стандартами, как IDAPI или ODBC. Кроме того, многие системы на базе серверов предусматривают интеграцию с унаследованными данными, размещенными на мэйнфреймах, где применяются DB2, ISAM, IMSи др.

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

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

Разработка приложений клиент/сервер

Как и языки структурного программирования, технология клиент/сервер была разработана для того, чтобы решить сложные проблемы, связанные с децентрализацией данных. Характерные особенности технологии клиент/сервер: высокий уровень стандартизации, распределенная обработка, интеграция специализированных и неоднородных систем, объектно-ориентированный анализ и программирование, а также удовлетворение новых потребностей пользователей - вызвали необходимость создания новых инструментальных средств разработки, позволяющих упростить построение сложных приложений и обслуживание программного кода. Сегодня задачи значительно усложнились и прежние методы программирования перестали отвечать возросшим требованиям, в том числе со стороны пользователей, которым необходимо получать данные из самых различных источников. Задачи анализа таких данных также стали более разнообразными и специфическими. Изменились даже сроки создания приложений. Если раньше на анализ сложного проекта уходило иногда до пяти лет, то теперь это неприемлемо: за такое время проектт устаревает. Все это заставило искать новые подходы к разработке ПО.

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

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

Эти инструментальные средства, обещающие облегчить переход к архитектуре клиент/сервер от автономных приложений или прикладных систем для больших ЭВМ, будут реализованы на самых разных уровнях. Такие средства должны обеспечивать быстрое макетирование приложений и, что еще важнее, подготовку их для крупномасштабного использования. Они предлагают новый подход к разработке приложений, поэтому требуют от программистов новых навыков.

Сегодня наиболее популярными стали графические средства визуальной разработки приложений клиент/сервер четвертого поколения, включая SQLWindows компании Gupta, PowerBuilder фирмы Powersoft, а также продукты таких компаний, как Oracle, обеспечивающие превосходный доступ к серверам БД. Кроме того, многие из инструментальных средств четвертого поколения позволяют скрыть специфику операционной системы иСУБД в такой степени, что создаваемые с их помощью приложения приобретают свойства переносимости. Появляются новые продукты, с помощью которых разработчики смогут логически распределять свой программный код между клиентом и сервером и строить компоненты как клиента, так и сервера. В соответствии с новыми требованиями и возможностями современных аппаратных платформ совершенствуются и уже известные технологии.

Так, на больших ЭВМ стали чрезвычайно популярными системы автоматизированной разработки программного обеспечения(CASE). Для построения реальных приложений CASE-продуктыпытаются моделировать логику задачи в графическом виде. Многие из них перенесены на ПК или рабочие станции. Сегодня они предоставляют сходную рабочую среду для программистов, перешедших на эти платформы с мэйнфреймов. Кроме того, CASE-продукты позволяют теперь получить на выходе приложения типа клиент/сервер с графическим интерфейсом, т. е., используя одну и ту же методологию проектирования, они проектируют компоненты, функционирующие и на клиентских, и на серверных машинах.

Многообещающую технологию создания приложений, включая приложения клиент/сервер, предлагают и такие программные продукты визуальной разработки, как Visual AppBuilder компании Novell, который позволяет программировать чрезвычайно сложные приложения, не написав практически ни одной строки программного кода. Продукты такого типа логически предоставляют в распоряжение пользователя крупные компоненты приложения, давая разработчику возможность визуально комбинировать их в функциональное приложение. С помощьюстандартных компонентов, которые программист может объединять в единое целое, эти приложения обеспечивают связь с такими службами, как базы данных, видео, обработка изображений и передача сообщений. Используя мощные прикладные компоненты и моделируя в этих продуктах взаимодействие клиента и сервера, разработчики создают реальные приложения типа клиент/сервер без особых усилий. Однако было бы заблуждением полагать, что технология клиент/сервер всегда увеличивает продуктивность труда разработчиков. На самом деле такая эффективность достигается соответствующей практикой и техникой программирования, что справедливо для любой технологии, включая и технологию клиент/сервер. Производительность труда разработчика увеличивается не за счет особенностей самой технологии, а лишь благодаря используемым для создания приложений клиент/сервер инструментальным средствам. Как уже говорилось, многие среды разработки систем клиент/сервер (третьего, четвертого поколения или объектно-ориентированные) способны значительно повысить эффективность программирования. Эти продукты обеспечивают работу на нескольких платформах, поддержку множества СУБД и повторное применение кода. Однако следует заметить, что проектирование приложений клиент/сервер само по себе не обеспечивает повторное использование кода. Это преимущество опять же могут предоставить лишь соответствующие инструментальные средства, например те, которые основаны на объектно-ориентированном подходе. Этому способствует и хорошая практика программирования.

Неверно также характеризовать системы клиент/сервер как системы, управляемые событиями. Хотя модель клиент/сервер действительно хорошо приспособлена для таких систем, сама событийная технология применяется более широко и не является обязательным требованием для модели клиент/сервер. Технология разработки, методология и инструментальные средства во многом способствуют успеху вычислений в архитектуре клиент/сервер. Разработка приложений клиент/сервер, которые, как правило, компактнее традиционных, осуществляется фактически вдвое быстрее и обходится приблизительно на 30\%дешевле по сравнению с обычным программным обеспечением. В то же время методологии их разработки пока не отличаются зрелостью, а сами приложения, как показывают некоторые исследования, пока уступают по качеству прикладным системам, построенным с применением обычных технологий. Это явно указывает на необходимость совершенствования соответствующих средств отладки и тестирования. Неясно также, какое влияние в итоге окажут приложения клиент/сервер на управление данными (словарями и хранилищами данных). Высказывается мнение, что такие приложения приводят к несогласованности данных и недостаточной точности проектирования схемы данных.

Информационные хранилища.

Огромные массивы данных можно хранить на одном или нескольких серверах. Если они расположены в сетях типа Интернет, то их называют информационными хранилищами (базами обобщённых данных). Это могут быть сети хранения данных, которые формируются из множества различных внешних и внутренних источников. В любом случае это базы и банки данных, функционирующие, как правило, под управлением распределённых СУБД.

Для сохранности электронных информационных ресурсов применяют специальные сети хранения данных, получившие название Storage Area Network (SAN), а в корпоративных сетях – специализированные Network Attached Storage (NAS-серверы), которые осуществляют совместимость, интеграцию и администрирование серверов общего назначения, а также хранение огромных массивов данных. В качестве информационных хранилищ в них используют RAID-массивы, CD и DVD библиотеки.

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

Особенности построения информационных хранилищ[2]

В основе концепции хранилища данных лежат две основные идеи: интеграция разъединенных детализированных данных (описывающих некоторые конкретные факты, свойства, события и т.д.) в едином хранилище и разделение наборов данных и приложений, используемых для обработки и анализа.

В начале 80-х годов, в период бурного развития регистрирующих информационных систем, появилось осознание ограниченности их применения для анализа данных и построения систем поддержки и принятия решений. Регистрирующие системы создавались для автоматизации рутинных операций: выписки счетов, оформления договоров, проверки состояния склада и т.д., и предназначались для линейного персонала. Основными требованиями к таким системам были обеспечение транзакционности вносимых изменений и максимизация скорости, что и определило тогда выбор реляционных СУБД и модели представления данных «сущность-связь» в качестве основных технических решений при построении регистрирующих систем.

Для менеджеров и аналитиков в свою очередь требовались системы, которые бы позволяли: анализировать информацию во временном аспекте, формировать произвольные запросы к системе, обрабатывать большие объемы данных, интегрировать данные из различных регистрирующих систем. Очевидно, что регистрирующие системы не удовлетворяли ни одному из этих требований — информация в такой системе актуальна только на момент обращения к базе данных, а в следующий момент времени по тому же запросу можно получить совершенно другой результат. Интерфейс регистрирующих систем рассчитан на проведение жестко определенных операций и возможности получения результатов на нерегламентированный (ad-hoc) запрос сильно ограничены. Возможности обработки больших массивов данных также были невелики из-за настройки СУБД на выполнение коротких транзакций.

Ответом на возникшую потребность стало появление технологии хранилищ данных.