Назад в библиотеку

Тенденции в области распределенных систем

Авторы: Замятина Е., Миков А.
Источник: Национальный Открытый Университет «ИНТУИТ». Распределенные системы и алгоритмы. Лекция 20. [Электронный ресурс]. – Режим доступа: http://www.intuit.ru/studies/courses/1146/238/lecture/3298?page=1


В одной из своих статей в 2001 году Дж. Бэкус отметил, что компьютерная революция испытала три волны. Первая волна началась с коммерциализацией кремниевых чипов и продолжалась 10-15 лет. Вторая волна связана с развитием технологий программного обеспечения и началась приблизительно в середине 80-х годов XX века. Третья волна началась в конце 90-х годов XX века и связана с развитием сетей и использованием их для коммуникаций компьютеров.

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

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

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

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

Эти задачи выдвигают требования к компьютерным системам, которые не могут быть удовлетворены в рамках просто "высокопроизводительных вычислений", например, с помощью параллельных суперкомпьютеров.

Вот только некоторые из требований и ограничений:

  1. Пространственная распределенность компонент приложения и ресурсов системы, их динамическая природа (компоненты приложения и ресурсы могут динамически создаваться, перемещаться, становиться недоступными, уничтожаться).
  2. Увеличивающаяся важность соединения в одно логическое целое (при сохранении физической разделенности) структурированных и неструктурированных ресурсов распределенных данных.
  3. Мультидисциплинарные приложения требуют обеспечения взаимодействия отдельных моделей в рамках объединенной модели, требуют совместной работы исследователей, находящихся в разных научных центрах.
  4. Высокая степень взаимодействия пользователей требует значительной гибкости при проектировании, реализации, сопровождении и модификации компонент программного обеспечения – в поддержке жизненного цикла систем.
  5. Преобладание "нерегулярных" вычислений, не укладывающихся в циклы простой структуры с элементами массивов простого строения (что было бы так удобно для реализации на параллельном суперкомпьютере).
  6. Применение методов, первоначально появившихся в исследованиях по искусственному интеллекту, для решения задач управления программными приложениями на различных этапах их жизненного цикла.

Одним из новых направлений в распределенных системах, в рамках которых есть надежда продвинуться вперед в удовлетворении перечисленных требований, является Grid computing – обработка информации в суперсетях (Грид).

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

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

Стандартизация означает, что федерация построена на открытых стандартах, протоколах и интерфейсах. Маскирование неоднородностей означает, что программное обеспечение промежуточного уровня в Грид должно обеспечить "стирание различий" между программными обеспечениями промежуточного уровня виртуальных организаций.

Можно написать условную "формулу":

Грид компьютинг = распределенный компьютинг + {федеративное объединение сообществ, виртуализация, стандартизация, маскирование неоднородностей}

Грид отличается от Интернета (точнее, его службы WWW) прежде всего тем, что поддерживает не только работу с распределенной информацией, но и использование распределенных вычислительных мощностей для выполнения приложений пользователей.

Грид характеризуется огромным (а часто, неопределенным) количеством взаимодействующих однородных и неоднородных компьютеров. Неоднородных – не только с аппаратной точки зрения, но и работающих с разными программными платформами, разными языковыми средствами.

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

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

Надо заметить, что многие современные вычислительные комплексы, подпадающие под понятие "суперкомпьютер", строятся по кластерной схеме, т.е. их архитектуры движутся в сторону распределенных систем.

Грид привлекателен тем, что его почти не надо создавать – он вырастает сам. Это объективная реальность, как говорят философы. Только его рост нужно направлять, культивируя положительные изменения и своевременно предупреждая проблемы. Но для этого нужен план.

Грид требует переосмысления применяемых вычислительных моделей, средств их поддержки. Здесь недостаточно традиционных постулатов "открытых систем" – обеспечения интероперабельности систем управления различными ресурсами, масштабируемости и проч. Эти постулаты не теряют своего значения. Но требуется создание новых абстракций, языков программирования, средств поддержки для того, чтобы Грид был более эффективным.

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

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

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

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

Архитектура Грид

Следуя традиционному построению распределенных систем, можно описать архитектуру Грид, состоящую из четырех слоев:

  1. Пользовательские интерфейсы, приложения и среда решения задач (problem-solving envieronment).
  2. Средства разработки, программные модели, языки программирования.
  3. Промежуточное программное обеспечение (middleware) Грид: управление ресурсами; фиксация информации и ее обнаружение; программное обеспечение безопасности; доступ к памяти; различные службы (вычислительные и коммуникационные).
  4. Неоднородные ресурсы и инфраструктура сетей.

В настоящее время не существует единой модели вычислений в Гриде. Однако можно выделить несколько типичных задач, которые должны решать пользователи. Это – запуск и выполнение заданий, управление данными, формирование потоков работ (workflow), работа в режиме on-line при совместных проектах и др.

Опишем несколько типов приложений в Грид и пользовательских профилей.

  1. Грид как большой компьютер. Здесь имеется в виду доступ одного пользователя к большой суперкомпьютерной мощности для решения его задачи.
  2. Грид как коллекция научных данных. Требуется обеспечение доступа к большим объемам научных данных (результатов экспериментов, астрономических наблюдений и т.д.), рассредоточенных по различным научным центрам, оптимизация при передаче этих данных и их обработке.
  3. Единое информационное пространство и виртуальные организации. Обеспечение одновременной работы большого количества пользователей в некоторой предметной области и/или организации с доступом к общим данным, с разделением ресурсов и взаимодействием пользователей через Грид.
  4. Семантический Грид – Грид как всемирное хранилище знаний. Географически распределенная база знаний, поддерживающая интеллектуальный информационный поиск, извлечение знаний из "сырых" данных (data mining), принятие решений.

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

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

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

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

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

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

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

Имитационные эксперименты, происходящие в режиме on-line, могут потребовать изменения режима на off-line или использования каких-то инструментальных средств. Проходящий эксперимент может потребовать реконфигурации программ прямо во время исполнения (язык моделирования Triad это допускает, но такая реконфигурация должна быть поддержана еще и платформой). Эксперимент, как отмечалось выше, может потребовать динамической балансировки нагрузки компьютеров сети, поскольку предсказать заранее, какой будет нагрузка и провести ее распределение статическим способом не всегда возможно. Наконец, в эксперименте могут участвовать несколько пользователей – исследователей, находящихся в разных точках сети, играющих разные роли, и совместно управляющих экспериментом.

Для поддержки всех этих приложений требуется развитие инфраструктуры Грид, включающее технологии создания приложений.

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

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

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

Новая технология должна поддерживать все этапы жизненного цикла приложения от спецификации и проектирования, генерации кода до конфигурирования и сопровождения. Она должна обеспечивать:

  1. Спецификацию приложения в терминах множества компонент. Четкое разделение описаний структуры и поведения приложения, вычислительной части и взаимодействий.
  2. Иерархическое представление приложения с отображением вышележащих слоев на нижележащие слои. Возможность изменения этого отображения, в том числе в процессе обработки данных.
  3. Возможность отображать уровень приложения на уровень оборудования, в частности, решать задачу распределения нагрузки в системе.
  4. Поддерживать координацию распределенных сущностей, их адаптацию к окружению, динамическую реконфигурацию.
  5. Поддерживать сервисы инфраструктуры распределенных систем такие, как управление событиями, именами, транзакциями, создание "мостов" между разными распределенными системами (между Грид-системами).

С точки зрения поддержки повторного использования компонент важными понятиями, появившимися в последние годы, стали паттерны, шаблоны (формы) и каркасы (skeleton). Они позволяют использовать как ранее описанные структуры, так и поведение. Таким образом, постепенно формируется "виртуальная библиотека" общих компонент вычислительного характера и типовых взаимодействий, доступная различным разработчикам.

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

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

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

Мобильный компьютинг

Самостоятельным направлением является мобильный компьютинг. В его основе (в дополнение к распределенному компьютингу) лежат:

  1. сети, обеспечивающие подключение к ним в любой географической точке (сотовые и проч.);
  2. мобильный доступ к информации (возможность получения информации при перемещении пользователя);
  3. адаптивность приложений;
  4. чувствительность к местоположению;
  5. энергонезависимость систем.

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

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

Тотальный компьютинг

Английский термин pervasive computing обозначает проникающий, распространяющийся повсюду, всеобъемлющий, глубоко влияющий (компьютинг). Тотальный компьютинг ставит во главу угла конечного пользователя, который должен получать вычислительное обслуживание непрерывно, 24 часа в сутки, 7 дней в неделю, причем обслуживание самого разного рода – от научных вычислений до управления кухонными агрегатами.

М. Сатьянараян формулирует четыре новые области исследований в дополнение к областям мобильного компьютинга, вместе с ним образующие область тотального компьютинга:

  1. эффективное использование персонального умного пространства, имея в виду окружающие нас на работе, в транспорте, дома устройства с компьютерным управлением, необходимыми датчиками и исполнительными механизмами;
  2. невидимость (умного пространства) – минимальное отвлечение внимания пользователя на управление окружающими вещами;
  3. местная масштабируемость; имеется в виду обычное в программном обеспечении понятие масштабируемости с поправкой на то, что она должна иметь место для любой точки персонального умного пространства, обладающей вычислительными ресурсами: любая точка должна быть сделана настолько "мощной", насколько это необходимо пользователю;
  4. маскирование неоднородностей; под неоднородностью понимаются различия как в техническом плане (называемые, обычно, гетерогенностью), так и не технические – организационные структуры, бизнес-процессы, экономические факторы.

К этому можно еще добавить знание контекста. Т.е. пользователь существует в персональном умном пространстве не "вслепую", а представляя себе, сознавая контекст. В некотором отношении это противоречит невидимости, однако, на самом деле, должен существовать разумный баланс между невидимостью и знанием контекста.

Подытоживая написанное выше, можно привести следующую "формулу":

Тотальный компьютинг = мобильный компьютинг + {персональное умное пространство, невидимость, местная масштабируемость, маскирование неоднородностей}

Распределенные вычисления традиционно следуют модели клиент-сервер. Вслед за этим и Грид следует такой же модели. В парадигме тотального компьютинга все субъекты вычислений могут быть равны. Они равные: посылают запросы и выполняют сервисы. В отличие от клиент-серверной модели технология "равный с равным" (peer-to-peer, P2P) стала интенсивно развиваться относительно недавно. Технология P2P является перспективной и может стать альтернативой традиционным Web-сервисам.

Объединение направлений компьютинга в Грид и тотального компьютинга сулит в будущем создание глобального умного пространства:

Глобальное умное пространство = Грид компьютинг + тотальный компьютинг

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

Если перейти от моделей конечных пользователей к задачам, стоящим перед программистами распределенных систем, то можно отметить все возрастающую важность программного обеспечения промежуточного уровня (middleware). Оно важно и для Грида и для тотального компьютинга. Многие считают, что middleware – это ключ к следующему поколению компьютинга.