Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Введение в распределенные вычислительные системыСтр 1 из 16Следующая ⇒
Введение в распределенные вычислительные системы Область распределенных вычислительных систем в настоящее время ха- рактеризуется быстрыми темпами изменения идеологий и подходов. За корот- кую историю существования систем такого типа появилось множество различ- ных парадигм реализации распределенных вычислений, набравших большой вес и общее признание, но практически исчезнувших впоследствии под давле- нием более новых и модных подходов. Однако когда технология исчезает из виду, очень часто она появляется вновь под новым именем. В результате про- исходит непрерывное перемешивание базовых концепций с новейшими подхо- дами к разработке. В середине 1990-х существовало два основных подхода к разработке рас- пределенных вычислительных систем. С одной стороны, концепция Веб пред- ставляла собой ориентированное на человека распределенное информационное пространство. С другой стороны, технологии распределенных объектов, такие как CORBA [58] и DCOM [68] были в первую очередь ориентированы на созда- ние распределенных сред, которые эмулировали процесс разработки и испол- нения локальных приложений, обеспечивая преимущества доступа к сетевым ресурсам. Но, несмотря на первоначальную идею Веб как пространства, кото- рое позволяло многим людям обмениваться информацией, большинство поль- зователей просто потребляли информацию, не публикуя ничего взамен. Между тем системы распределенных объектов росли с точки зрения предоставляемых возможностей, но становились все более тяжелыми в плане разработки и ис- пользования. Сразу после начала нового тысячелетия произошел взрыв развития новых методов и промежуточного программного обеспечения для распределенных вычислительных систем, включая технологии одноранговых сетей (peer-to-peer или P2P) и грид-технологии. Применение P2P позволило множеству пользова- телей, которые раньше были простыми потребителями информации, поучаст- вовать в предоставлении контента. С другой стороны, применение технологии грид позволило интегрировать крупные комплексы обработки и хранения дан- ных, обеспечивая их доступность для различных правительственных и научных пользователей. Концепция грид-вычислений была ориентирована на построе- ние инфраструктуры, обеспечивающей «вычисления по требованию», анало- гично тому, как мы сейчас получаем доступ к коммунальным услугам, напри- мер, к электричеству. В то же время, бизнес-сообщество занялось разработкой следующего по- коления спецификаций, призванных решить проблемы ранних стандартов рас- пределенных объектных технологий посредством Веб-сервисов и сервис- ориентированной архитектуры. Слияние бизнес подхода к предоставлению вычислительных ресурсов в виде сервисов и концепции грид-вычислений при- вело к появлению в конце 2010-х новой концепции получившей название Об- лачных вычислений. Далее в этой главе мы попытаемся дать определение распределенных вы- числительных систем (РВС), рассмотрим их основы и базовые понятия. Определение распределенной вычислительной системы Формального определения распределенной вычислительной системы в настоящее время не существует. Из множества различных определений, можно выделить ироничное определение Лесли Лампорта1 [44]: «Распределенной вычислительной системой можно назвать такую систему, в которой отказ компьютера, о существовании которого вы даже не подозревали, может сделать ваш соб- ственный компьютер непригодным к использованию». Это определение он дал в мае 1987 года, в своем письме коллегам по поводу очередного отключения электроэнергии в машинном зале. Эндрю Таненбаум2, в своем фундаментальном труде «Распределённые си- стемы. Принципы и парадигмы» [2] предложил следующее (чуть более строгое) определение, которого мы будем придерживаться в рамках данной книги: «Распределенная вычислительная система (РВС) – это набор соединенных каналами связи независимых компью- теров, которые с точки зрения пользователя некоторого программного обеспечения выглядят единым целым». В этом определении фиксируются два существенных момента: автоном- ность узлов РВС и представление системы пользователем, как единой структу- ры. При этом, основным связующим звеном распределенных вычислительных систем является программное обеспечение. 1 Лесли Лампорт (родился в 1941 году) – американский ученый в области теории вычислительных си- стем, первый лауреат премии Дейкстры за достижения в области распределенных вычислений (2000 год), раз- работчик системы LaTeX. 2 Эндрю Стюарт Таненбаум (родился в 1944 году) – профессор Амстердамского свободного университе- та, создатель операционной системы Minix, автор множества учебных трудов в области информатики и вычис- лительной техники. Терминология РВС 1. Ресурсом называется любая программная или аппаратная сущность, пред- ставленная или используемая в распределенной сети. Например, компью- тер, устройство хранения, файл, коммуникационный канал, сервис и т.п. 2. Узел – любое аппаратное устройство в распределенной вычислительной системе. 3. Сервер – это поставщик информации в РВС (например, веб-сервер). 4. Клиент – это потребитель информации в РВС (например, веб-браузер). 5. Пир – это узел, совмещающий в себе как клиентскую, так и серверную часть (т.е. и поставщик, и потребитель информации одновременно). 6. Сервис – это сетевая сущность, предоставляющая определенные функцио- нальные возможности [30] (например, веб-сервер может предоставлять сервис передачи файлов по протоколу HTTP). В рамках одного узла могут предоставляться несколько различных сервисов. На рисунке 2 приведена схема, устанавливающая взаимоотношения между данными терминами. Из схемы видно, что каждый компьютер или устройство представляет собой сущность в распределенной вычислительной системе в виде узла. При этом на каждом узле может располагаться несколько клиентов, сер- веров, сервисов или пиров. Важно заметить, что любой узел, сервер, пир или сервис (но не клиент! ) являются ресурсами распределенной вычислительной системы. Сервис получает запрос на предоставление определенных данных (почти как аргументы, передаваемые при вызове локальной функции) и возвращает от- вет. Таким образом, сервис можно определить как некую замену вызова функ- ции на локальном компьютере. Существует множество технологий, обеспечи- вающих создание и сопровождение сервисов в распределенных вычислитель- ных системах: технология XML веб-сервисов, сервисы REST и др. Классификация РВС Выделяют следующие признаки классификации РВС по шкале «централи- зованный – децентрализованный»: методы обнаружения ресурсов; доступность ресурсов; методы взаимодействия ресурсов. Существует множество различных технологий, обеспечивающих поиск и обнаружение ресурсов в РВС (например, такие службы обнаружения ресурсов как DNS, Jini Lookup, UDDI и др.). Примером централизованного метода об- наружения ресурсов может служить служба DNS (англ. Domain Name System – система доменных имен). Данная служба работает по принципам, чрезвычайно похожим на принцип работы телефонной книги. На основе указанного имени сайта (например, www.susu.ac.ru) DNS возвращает его IP-адрес (например, 85.143.41.59). Таким образом, сервер DNS представляет собой большую базу данных ресурсов, расположенных в РВС. Существует ограниченное количество серверов, которые предоставляют службу DNS. Обычно пользователь указыва- ет ограниченное количество (1 или 2) таких серверов для работы. И если ука- занные сервера отключаются, то процесс обнаружения ресурсов останавливает- ся, если вручную не указать альтернативные сервера. При использовании децентрализованного метода обнаружения ресурсов (например, в сети Gnutella [33]) запрос на поиск отправляется всем узлам, из- вестным отправителю. Эти узлы производят поиск ресурса у себя, и трансли- руют запрос далее. Таким образом, отсутствуют выделенные узлы для обнару- жения и централизованное хранилище информации о ресурсах, доступных в се- ти. Другим важным фактором является доступность ресурсов РВС. Примером централизованной доступности ресурсов в РВС может являться технология веб-сервисов. Существует только один сервер с выделенным IP-адресом, кото- рый предоставляет определенный веб-сервис или сайт. Если данный узел вый- дет из строя или будет отключен от сети, данный сервис станет недоступна. Естественно, можно применить методы репликации для расширения доступно- сти определенного сайта или сервиса, но доступность определенного IP-адреса останется прежней. Существуют системы, предоставляющие децентрализованные подходы к доступности ресурсов посредством множественного дублирования сервисов, которые могут обеспечить функциональность, необходимую пользователю. Наиболее яркими примерами децентрализованной доступности ресурсов могут служить одноранговые вычислительные системы (BitTorrent, Gnutella, Napster), где каждый узел играет роль, как клиента, так и сервера, который может предо- ставлять ресурсы и сервисы, аналогичные остальным устройствам данной сети (поиск, передача данных и др.) Еще одним критерием классификации РВС могут служить методы взаи- модействия узлов. Централизованный подход к взаимодействию узлов основан на том, что взаимодействие между узлами всегда происходит через специаль- ный центральный сервер. Таким образом, один узел не может обратиться к дру- гому непосредственно. Децентрализованный подход к взаимодействию реализуется в одноранго- вых вычислительных системах. Такой подход основывается на прямом взаимо- действии между узлами РВС, т.к. каждый узел играет как роль клиента, так и роль сервера. Связь в РВС Понятие «распределенная вычислительная система» подразумевает, что компоненты такой системы распределены, т.е. удалены друг от друга. Очевид- но, что функционирование подобных систем невозможно без эффективной свя- зи между ее компонентами. Задачи организации обмена между распределенными (территориально, ад- министративно и т.д.) компонентами давно и в значительной мере успешно ре- шаются в вычислительных сетях, и, естественно, что РВС используют нарабо- танный опыт. Взаимодействие в вычислительных сетях базируется на протоколах. Про- токол – это набор правил и соглашений, описывающих процедуру взаимодей- ствия между компонентами системы (в том числе и вычислительной). Если система поддерживает определённый протокол, она, с большой долей вероятности, окажется способна взаимодействовать с другой системой, которая так же поддерживает данный протокол. В области вычислительных коммуни- каций уже длительное время существует общепринятая система протоколов – сетевая модель OSI (англ. Open Systems Interconnection basic reference model – базовая эталонная модель взаимодействия открытых систем). Эта модель пред- ставляет собой стек протоколов разного уровня, которые позволяют описать практически все аспекты взаимодействия компонентов РВС. Детальное рассмотрение стека протоколов OSI и особенностей его различ- ных уровней лежит за рамками данной дисциплины. Проект FAFNER Проект FAFNER был создан для решения задачи разложения больших чисел на основе мощностей географически-распределенных вычислительных систем. Нахождение простых множителей больших чисел является позволяет расшифровать данные, зашифрованные на основе алгоритма RSA. Для шифрования секретной информации широко используется метод ко- дирования, основанный на публичном ключе RSA (аббревиатура из первых букв фамилий разработчиков данного метода: Rivest, Shamir и Adleman). Метод работы данного ключа основан на том, что разложение на множители больших чисел (сто и более знаков) – чрезвычайно сложная вычислительная задача. В марте 1991 корпорация RSA Data Security основала конкурс по поиску и реали- зации методов разложения больших чисел на множители. Это состязание обес- печило создание крупнейшей библиотеки по методикам поиска простых множителей от крупнейших ученых со всего земного шара. Все алгоритмы поиска простых множителей, известные на сегодняшний день, требуют чрезвычайно большого количества вычислений (поэтому этот метод и используется для шифрования). Но особенность параллельной реализации этих алгоритмов состоит в том, что процессы поиска делителей вычислительно независимы, и не требуют обмена информации во время расчета. Первые попытки реализовать подобный алгоритм на распределенных вычисли- тельных системах основывались на обмене электронными письмами. В 1995 г. консорциумом организаций в области информационных техноло- гий был запущен проект FAFNER – Factoring via Network-Enabled Recursion (Сетевое разложение на множители посредством рекурсии) по решению задачи разложения больших чисел посредством Веб-серверов. Можно выделить следующие особенности, отличавшие этот проект от многих других [34]: реализация NFS – Network File System (Сетевая Файловая Система) позво- ляла даже малым рабочим станциям (с 4 Мб оперативной памяти) выпол- нять полезную работу, рассчитывая свой маленький фрагмент задачи; проект FAFNER поддерживал анонимную регистрацию участников. Поль- зователи могли поделиться своими вычислительными ресурсами без бояз- ни раскрытия своей личной информации; консорциум сайтов, представлявших костяк вычислительной системы, формировали иерархическую структуру веб-серверов, что уменьшало воз- можность возникновения «узкого места» в вычислительной системе. Данная система доказала свою надежность и качественность, заняв первое место по производительности в конкурсе, проводимом в рамках конференции Supercomputing’95. Проект I-WAY I-WAY – Information Wide Area Year (Год Информации Глобальных Сетей) – экспериментальная высокопроизводительная сеть, которая объединила мно- жество высокопроизводительных компьютеров и передовые средства визуали- зации в США. Она была спроектирована в начале 1995, с целью объединения высокоскоростных сетей, существующих на тот момент. Данные и компьютер- ные ресурсы были распределены по 17-и локациям в США и объединены 10-ю сетями, с различной пропускной способностью, различными протоколами со- единения и с использованием различных сетевых технологий для их построе- ния [23]. В рамках проекта, была построена аппаратная инфраструктура, посред- ством которой осуществлялся доступ к ресурсам сети I-WAY. Она состояла из базовых рабочих станций под управлением операционной системы UNIX, на которые было установлено специальное ППО (сервер I-POP). Система I-POP брала на себя функции шлюза к ресурсам сети I-WAY. Каждый такой сервер поддерживал стандартные процедуры аутентификации, резервирования ресур- сов создания процессов и коммуникации. Также, в рамках данного проекта был разработан планировщик ресурсов, известный как «Брокер Вычислительных Ресурсов» (CRB – Computing Resources Broker). Он обеспечивал выполнения функций управления очередями задач, распределения заданий между компьютерами и слежения за ходом реше- ния. Для поддержки пользовательских приложений была адаптирована библио- тека передачи данных Nexus. В нее были включены механизмы, поддерживаю- щие автоматическое конфигурирование работы пользовательского приложения, в зависимости от методов передачи данных, базовой операционной системы и т. п. Проект I-WAY использовался для решения следующих задач [23]: суперкомпьютерные вычисления; доступ к удаленным ресурсам; задачи виртуальной реальности. Проект Legion Проект Legion – это объектно-ориентированная система, предоставляющая программную оболочку для организации однородного взаимодействия гетеро- генных распределенных высокопроизводительных вычислительных си- стем [35]. Первая реализация системы была выпущена в ноябре 1997-го. Основной целью проекта было предоставление пользователям единой интегрированной инфраструктуры РВС, независимо от масштаба, географического поло- жения, языка или операционной системы. В отличие от Globus, система Legion основывалась на объектно-ориентированном подходе, включая обязательную поддержку абстракций данных, инкапсуляции, наследования и полиморфизма. Legion предоставлял пользователю набор объектов, предоставляющих ба- зовые сервисы: объекты вычислителей – абстракции, реализующие базовые принципы ра- боты с вычислительными ресурсами; объекты систем хранения данных – абстракции, предоставляющие базо- вые методы работы с системами х объекты связывания – объекты, обеспечивающие связи между абстракт- ным идентификатором объекта и его физическим адресом; объекты контекста – объекты, реализующие проекцию пользовательских имен объектов на абстрактные идентификаторы объектов в системе Legion. В течение года система развилась настолько, что было принято решение о коммерциализации проекта, и в августе 1998 г компания Applied Metacomputing выпустила коммерческую версию проекта. Проект активно разрабатывался вплоть до 2001 года, после чего развитие проекта остановилось. Современные РВС На сегодняшний день, РВС отходят от традиционных понятий высокопро- изводительных распределенных вычислений в сторону развития виртуального сотрудничества и виртуальных организаций. Виртуальная организация – это ряд людей и/или организаций, объединенных общими правилами коллективно- го доступа к определенным вычислительным ресурсам [31]. Методы предоставления доступа к вычислительным ресурсам становятся сервисно- ориентированными, что позволяет гибко использовать одни и те же вычисли- тельные ресурсы различными потребителями. Значительно расширились области автоматизированного управления ре- сурсами. Человек не в силах вручную решить задачу распределения вычисле- ний в системах такого масштаба и гетерогенности. Таким образом, необходимо использование автоматизированных систем управления задачами, которые бе- рут на себя задачи управления предоставляемой системой. Также, с возрастани- ем масштаба вычислительных сетей, необходимы автоматизированные средства обработки ошибок и восстановления вычислительного процесса. Агенты Несмотря на все преимущества технологии веб-сервисов, они не предоставляют новых методологий и решений построения широкомасштабных вы- числительных сетей. Для поиска решений в этом направлении, необходимо рас- смотреть агентно-ориентированную парадигму построения РВС. Вычислительные сети на основе так называемых агентов – это принципи- ально иной подход к организации РВС. Программный агент – это автономный процесс, способный реагировать на среду исполнения и вызывать изменения в среде исполнения, возможно, в кооперации с пользователями или другими агентами. Рассмотрим основные принципы работы агентных сетей [40]: автономность – агенты функционируют автономно, без возможности по- стороннего вмешательства в их внутреннее состояние; социальное поведение – агенты взаимодействуют друг с другом посред- ством определенного языка; активность – агенты взаимодействуют с окружающей средой, получая определенные сигналы и отвечая на них; про-активность – агенты действуют целенаправленно. Агентные сети принципиально приспособлены для функционирования в динамически-изменяемой окружающей среде. В этом случае, автономность агентов позволяет организовать динамическую подстройку вычислительного алгоритма под условия вычислительной среды. Таким образом, РВС можно представить как набор взаимодействующих компонентов, а информация, которой они обмениваются, разбивается на определенные категории: информация о компонентах и их функциональных возможностях, в рамках определенной области; информация о взаимодействиях между компонентами; обобщенная информация о рабочем процессе и более конкретная инфор- мация по той или иной задаче. Для обеспечения функционирования такой системы, необходима стандар- тизация методов взаимодействия между компонентами. Для решения этой зада- чи разрабатываются и стандартизуются языки взаимодействия агентов (Agent Communication Languages, ACLs). Одним из наиболее известных, является ар- хитектура взаимодействия FIPA (Foundation for Intelligent Physical Agents, базис интеллектуальных физических агентов). Эта архитектура стандартизует методы взаимодействия агентов и агентных систем. Более подробно, принципы организации агентных систем будут рассмот- рены в главе 6 «Агентные технологии». Облачные вычисления Облако – это парадигма крупномасштабных распределенных вычислений, основанная на эффекте масштаба, в рамках которой пул абстрактных, виртуа- лизованных, динамически-масштабируемых вычислительных ресурсов, ресур сов хранения, платформ и сервисов предоставляется по запросу внешним поль- зователям через Интернет [29]. Не смотря на то, что метафора «облако» уже давно используется специали- стами в области сетевых технологий для изображения на сетевых диаграммах сложной вычислительной инфраструктуры (или же Интернета как такового), скрывающей свою внутреннюю организацию за определенным интерфейсом, термин «Облачные вычисления» появился на свет совсем недавно. Согласно результатам анализа поисковой системы Google, термин «Облачные вычисления» («Cloud Computing») начал набирать вес в конце 2007 – начале 2008 года, по- степенно вытесняя популярное в то время словосочетание «Грид-вычисления» («Grid Computing»). Судя по заголовкам новостей того времени, одной из пер- вых компаний, давших миру данный термин, стала компания IBM, развернув- шая в начале 2008 года проект «Blue Cloud» и ставшая спонсором Европейского проекта «Joint Research Initiative for Cloud Computing». На сегодняшний день уже можно говорить о том, что облачные вычисле- ния прочно вошли в повседневную жизнь каждого пользователя Интернета (хотя многие об этом и не подозревают). Однако до сих пор нет единого мнения о том, что такое «Облачные Вычисления» и каким образом они соотносятся с па- радигмой «Грид-вычислений». Заключение Распределенные вычислительные системы – это сформировавшаяся сфера высокопроизводительных вычислений, обладающая своей спецификой, ярко выраженным классом решаемых задач и методами их решения. Разрабатывают- ся и внедряются новые концепции построения распределенных систем, расши- ряется круг решаемых ими задач, упрощается процесс организации, разрабаты- ваются более простые методы использования ресурсов конечными пользовате- лями.ранения данных; _ Архитектура клиент-сервер Появление архитектуры клиент-сервер, как и многих других новых компьютерных технологий, сопровождалось рождением новой терминологии. Прикладной программный интерфейс (Application Programming Interface, API) Набор функций и подпрограмм, обеспечивающих взаимодействие клиентов и серверов Клиент Объект, запрашивающий информацию по сети. Как правило, это персональный компьютер или рабочая станция, запрашивающая информацию у сервера Промежуточное программное обеспечение Набор драйверов, прикладных программных интерфейсов и прочего программного обеспечения, позволяющего улучшить взаимодействие между клиентским приложением и сервером Реляционная база данных База данных, в которой доступ к информации ограничен выбором строк, удовлетворяющих определенным критериям поиска Сервер Компьютер (как правило, высокопроизводительная рабочая станция, мини- компьютер или мэйнфрейм), хранящий информацию, с которой работают сетевые клиенты Язык структурированных запросов (Structured Query Language, SQL) Разработанный корпорацией IBM и стандартизованный институтом ANSI язык для создания, управления и изменения баз данных Архитектура клиент-сервер Сетевое окружение, в котором управление данными осуществляется на серверном узле, а другим узлам предоставляется доступ к данным [59] Приложение клиент-сервер Любое приложение, в котором инициатор действия находится в одной системе, а исполнитель действия — в другой. Кроме того, в большинстве приложений клиент-сервер один сервер обслуживает запросы нескольких клиентов [75] На рис. 17.1 мы попытались проиллюстрировать суть этих определений. Как предполагает термин, окружение клиент-сервер состоит из клиентов и серверов. Клиентские машины, как правило, представляют собой однопользовательские персональные компьютеры или рабочие станции, предоставляющие конечным пользователям дружественный интерфейс. Клиентская станция обычно имеет наиболее удобный графический интерфейс пользователя, предполагающий наличие окон и мыши. Наиболее известные примеры подобных интерфейсов — интерфейсы операционных систем Microsoft Windows и Macintosh. Клиентские приложения предполагают простоту использования и знакомые инструментальные средства, например, электронные таблицы. Каждый сервер в окружении клиент-сервер предоставляет клиентам набор услуг. Наиболее распространенным типом сервера в архитектуре клиент-сервер является сервер баз данных, как правило, управляющий реляционной базой данных. Высокопроизводительный сервер обеспечивает коллективный доступ нескольких клиентов к одной и той же базе данных. Помимо клиентов и серверов в окружение клиент-сервер входит сеть. Вычислительная модель клиент-сервер по определению является распределенной. Пользователи, приложения и ресурсы располагаются на разных компьютерах и соединены общей локальной, глобальной или составной сетью. В чем отличие конфигурации клиент-сервер от других распределенных решений? Есть несколько характеристик, отличающих вычислительную модель клиент-сервер от обычных схем распределенных вычислений. В приложениях клиент-сервер большое внимание уделяется созданию на клиентской машине дружественного пользователю интерфейса. Таким образом, пользователь получает полный контроль над расписанием и режимом работы компьютера, а менеджеры уровня отделов получают возможность реагировать на локальные проблемы. Хотя приложения являются распределенными, в архитектуре клиент-сервер, как правило, используются централизованные корпоративные базы данных. Это позволяет руководству корпорации сохранять полный контроль над инвестициями в информационные системы, а также обеспечивать полную связность всех систем. В то же время такая конфигурация избавляет различные отделы компании от накладных расходов по управлению сложными вычислительными системами, но позволяет им выбирать типы машин и интерфейсы, которые им необходимы для доступа к данным. Как корпоративные пользователи, так и производители отдают предпочтение открытым и модульным системам. Это означает, что пользователю предоставляется более широкий выбор продуктов и большая свобода в объединении оборудования от различных производителей. Компьютерная сеть является ключевым звеном данной архитектуры. Поэтому вопросы сетевого администрирования и сетевой безопасности при работе с информационными системами данного типа имеют приоритет. С одной стороны, архитектура клиент-сервер представляет собой естественное решение с точки зрения производителя, так как в ней используются все более доступные микрокомпьютеры и сети. С другой стороны, архитектура клиент-сервер, возможно, является идеальным выбором для поддержки выбранного организацией направления бизнеса. Последнее утверждение требует пояснений. Успех архитектуры клиент-сервер на рынке объясняется не новыми названиями старых решений. Вычислительная модель клиент-сервер действительно представляет собой новый технический метод распределенных вычислений. Но помимо этого, архитектура клиент-сервер создает условия для новых методов организации бизнеса. Рассмотрим две важные тенденции в промышленности, иллюстрирующие этот факт. Первая тенденция заключается в том, что компании постоянно пытаются снижать трудовые затраты и избавляться от лишних рабочих мест, что вызвано жесткой рыночной конкуренцией. Почему компаниям необходимо сокращать рабочие места, чтобы сохранить конкурентоспособность, и как им удается увеличивать производительность, добиваясь роста продаж без увеличения числа сотрудников? Стоимость каждого рабочего места стремительно растет, и этот рост сопровождается ростом заработной платы. В то же время стоимость рабочего оборудования, особенно компьютерного и сетевого, а также сетевого обслуживания увеличивается гораздо более скромными темпами. Все это привело, как и следовало ожидать, к существенному росту капиталовложений в компьютеры и информационные технологии, чтобы компенсировать сокращение штата сотрудников. Эта тенденция просматривается как в малом, так и в крупном бизнесе и затрагивает управленцев среднего звена, а также конторских служащих. Архитектура клиент-сервер предоставляет средство автоматизации задач и устранения барьеров для информации, что позволяет компаниям удалять лишние управленческие звенья и увеличивать производительность, не раздувая штаты. Другой тенденцией, иллюстрирующей эффективность архитектуры клиент-сервер, является так называемое движение внутреннего рынка. Это движение затрагивает, в первую очередь, крупный бизнес, пытающийся сочетать предпринимательское рвение с корпоративной мощью, чтобы получить лучшее и от того, и от другого: экономию, обусловленную крупными масштабами большого бизнеса, и гибкость малого бизнеса. В эпоху быстрых технологических и рыночных изменений многие крупные компании отказались от традиционной функциональной иерархии, заменив ее набором относительно независимых организационных единиц. Эти организационные единицы должны конкурировать с внешними компаниями. На внутреннем рынке каждая организационная единица функционирует как независимая компания. Каждая организационная единица сама решает, что и у кого ей покупать (независимо от того, является поставщик подразделением той же корпорации или же внешней компанией). Даже такие традиционные непроизводительные подразделения, как бухгалтерия, информационные системы и юридический отдел, должны продавать свои услуги другим подразделениям и конкурировать с внешними поставщиками. Внутренняя конкуренция призвана исправить недостатки традиционного метода ведения бизнеса. В [93] отмечается, что «Американские корпорации являются одними из самых крупных социалистических бюрократий в мире. Они характеризуются централизованным планированием, централизованным владением капитала, централизованным распределением ресурсов, субъективной оценкой труда, отсутствием внутренней конкуренции и склонностью принимать решения в ответ на политическое давление». Движение внутренних рынков уже трансформировало некоторые компании, и обещает оказать существенное влияние на другие. Однако до недавних пор на пути реализации подобной схемы было одно труднопреодолимое препятствие. В крупной компании наличие внутреннего рынка может привести к тому, что тысячам отделов придется постоянно договариваться друг с другом и с внешними организациями. Проанализировав эту ситуацию, можно предположить, что стоимость и сложность бухгалтерского учета всех транзакций превысит пользу от введения внутреннего рынка. Это препятствие было преодолено благодаря развитию вычислительных технологий. Сегодня ряд транснациональных корпораций пользуются новейшими системами управления базами данных, работающими в сетях с архитектурой клиент-сервер, что позволяет им внедрять идею внутреннего рынка [93]. Эти и другие тенденции в мире бизнеса послужили стимулом к увеличению инвестиций в технологию клиент-сервер. Разумеется, как и любое кардинальное изменение компьютерной конфигурации, переход на архитектуру клиент-сервер не является ни безопасным, ни безболезненным. В табл. 17.3 показано, что пользователи при переходе на архитектуру клиент-сервер, помимо получаемых преимуществ, сообщают о множестве проблем. Тем не менее благодаря снижению стоимости и росте популярности персональных компьютеров, а также благодаря растущей конкуренции в промышленности, архитектура клиент-сервер в обозримом будущем будет, скорее всего, доминировать в бизнесе.
Модель «Клиент-Сервер» Согласно парадигме клиент-серверной архитектуры несколько клиентов и несколько серверов совместно с промежуточным программным обеспечением и средой взаимодействия образуют единую систему, обеспечивающую распреде- ленные вычисления, анализ и представление данных. Использование клиент- серверного подхода позволило пользователю персонального компьютера полу- чить доступ к различным ресурсам удаленных серверов, таких как базы данных, файлы, принтеры, процессорное время и др. В базовой модели клиент-сервер все процессы в распределенных системах делятся на две возможно перекрывающиеся группы. Процессы, реализующие некоторый сервис, например, сервис файловой системы или базы данных, называются серверами. Процессы, запрашивающие сервисы у серверов путем посылки запроса и последующего ожидания ответа от сервера, называются клиентами. Если базовая сеть так же надежна, как локальные сети, взаимодействие между клиентом и сервером может быть реализовано посредством простого протокола, не требующего установления соединения (например, протокол UDP). В этом случае клиент, запрашивая сервис, облекает свой запрос в форму сообщения с указанием в нем сервиса, которым он желает воспользоваться, и необходимых для этого исходных данных. Затем сообщение посылается серверу. Последний, в свою очередь, постоянно ожидает входящего сообщения, по- лучив его, обрабатывает, упаковывает результат обработки в ответное сообще- ние и отправляет его клиенту. Использование не требующего соединения протокола дает существенный выигрыш в эффективности. До тех пор пока сообщения не начнут пропадать или повреждаться, можно вполне успешно применять протокол типа запрос- ответ. К сожалению, создать протокол, устойчивый к случайным сбоям связи, – нетривиальная задача. Все, что мы можем сделать – это дать клиенту возмож- ность повторно послать запрос, на который не был получен ответ. Проблема, однако, состоит в том, что клиент не может определить, действительно ли пер- воначальное сообщение с запросом было потеряно или ошибка произошла при передаче ответа. Если потерялся ответ, повторная посылка запроса может при- вести к повторному выполнению операции. Если операция представляла собой что-то вроде «снять 10 000 долларов с моего банковского счета», понятно, что было бы гораздо лучше, если бы вместо повторного выполнения операции вас просто уведомили о произошедшей ошибке. С другой стороны, если операция была «сообщите мне, сколько денег у меня осталось», запрос прекрасно можно было бы послать повторно. Нетрудно заметить, что у этой проблемы нет едино- го решения. В качестве альтернативы во многих системах клиент-сервер используется надежный протокол с установкой соединения (например, протокол TCP). Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 3044; Нарушение авторского права страницы