Grid Computing — новая парадигма Internet-вычислений

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

Новый подход имеет несколько наименований: метавычисления (metacomputing), непрерывно
масштабируемые вычисления (seamless scalable computing), глобальные вычисления
(global computing). Однако в последнее время большее признание для обозначения
новой технологии получило выражение Grid Computing, которое и будет использоваться
в дальнейшем без перевода ввиду отсутствия подходящего русскоязычного эквивалента.

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

Создание столь широкомасштабной инфраструктуры требует определения и принятия
стандартных протоколов и сервисов, аналогичных TCP/IP, являющихся сердцем Internet.
Обычного процесса разработки и принятия необходимых стандартов для этой технологии
сегодня не существует, хотя Grid Forum ведет работы в данном направлении. В то
же время большинство существующих Grid-проектов построены на протоколах и сервисах
Global Toolkit, разработанных группой, возглавляемой Яном Фостером (Ian Foster),
при Аргоннской Национальной Лаборатории, которые и послужили основным источником
при подготовке этой публикации.

Многоуровневая архитектура
Grid-протоколов

Концепция Grid Computing возникла в середине 90-х, когда
для решения сложных научных и технических задач был реализован проект объединения
17 географически удаленных суперкомпьютеров в Северной Америке. С тех пор в
построении подобных проектов достигнут не только значительный прогресс, но и
появилась новая технология, существенно отличающаяся от современных основных
технологий распределенных вычислений, которые не обеспечивают решения возникших
проблем и не удовлетворяют требования координированного и динамического распределения
ресурсов. Так, например, современные Internet-технологии направлены на коммуникации
и обмен информацией между компьютерами, но не обеспечивают интегрированного
подхода к координированному использованию ресурсов на множестве сайтов для выполнения
вычислений. Технология business-to-business сосредоточивается на разделении
информации (часто с помощью централизованных серверов). Технологии корпоративных
распределенных вычислений, такие, как CORBA и Enterprise Java, позволяют разделять
ресурсы, но только в пределах одной организации. Возможности и ресурсы, предоставляемые
провайдерами услуг по аренде приложений (Application Service Provider) и дискового
пространства (Storage Service Provider), весьма ограничены. Пожалуй, единственной
технологией, поддерживающей разделение ресурсов разных сайтов, является Distributed
Computing Environment (DCE), но для виртуальных организаций она негибка и слишком
обременительна. Радикально изменить картину могут только Grid-технологии. Какие
же основные проблемы они должны решить?

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

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

Требования к Grid-архитектуре

Будем называть группу организаций, которые разделяют вычислительные ресурсы
и сотрудничают, чтобы достичь общих целей, виртуальной организацией (ВО). Именно
такие динамически создаваемые ВО и нуждаются в технологии Grid Computing. Поэтому
Grid-архитектура прежде всего должна быть способна устанавливать, управлять
и использовать отношения разделения ресурсов среди любых потенциальных участников
совместного проекта. Как уже упоминалось ранее, центральной проблемой здесь
является обеспечение взаимодействия (интероперабельности) между различными платформами,
языками и программной средой. А в сетевой среде интероперабельность означает
работу по общим протоколам. Именно протоколы регламентируют взаимодействие элементов
распределенной системы, а также структуру передаваемой информации. Следовательно,
Grid-архитектура — это прежде всего архитектура протоколов, которые и должны
определять базовый механизм взаимодействия. На основе стандартных протоколов
могут строиться стандартные сервисы, разрабатываться интерфейсы прикладного
программирования (API) и инструментальные средства разработки (Software Development
Kits — SDK). Совместно технология и архитектура образуют то, что обычно называется
промежуточным слоем (middleware), — службы, необходимые для поддержки общего
набора приложений в распределенной сетевой среде.

Описание Grid-архитектуры

Характер и цели данной публикации позволяют не перечислять полный набор требуемых
протоколов, а лишь сформулировать общие требования к основным уровням модели.
Ее структура и соотношение с многоуровневой архитектурой Internet-протоколов
приведена на рисунке. Ядром многоуровневой модели являются протоколы Resource
и Connectivity, на которые возложены функции обеспечения разделения индивидуальных
ресурсов. Уровень Collective отвечает за координацию использования имеющихся
ресурсов, доступ к ним осуществляется с помощью протоколов Fabric. Опишем теперь
более подробно функции каждого из уровней.

Fabric: управление локальными ресурсами

Уровень Fabric обеспечивает доступ к разделяемым ресурсам, который опосредован
протоколами более высокого уровня. Их (ресурсов) спектр весьма широк. Это могут
быть компьютеры, устройства массовой памяти, каталоги, сетевые ресурсы, датчики.
При этом ресурс может быть логической сущностью, например распределенной файловой
системой, или физической — кластером или пулом компьютеров. Реализация такого
ресурса может включать внутренние протоколы (например, Network File System или
протокол управления кластером), однако подобные протоколы остаются вне Grid-архитектуры.
Компоненты уровня Fabric реализуют локальные, специфические для каждого данного
ресурса (логического или физического) операции. Как видно из рисунка, этот уровень
по своим функциям аналогичен канальному уровню эталонной модели OSI и по своей
сути представляет набор интерфейсов для управления локальными ресурсами.

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

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

Connectivity: легкость и безопасность коммуникаций

Этот уровень является ядром коммуникаций и содержит протоколы аутентификации,
которые требуются для выполнения специфических для Grid Computing сетевых транзакций.
Коммуникационные протоколы отвечают за обмен данными с уровнем Fabric. В их
функции входят транспорт, маршрутизация и присвоение имен. Хотя существуют альтернативы,
однако обычно используется стек протоколов TCP/IP. Впрочем, не исключено, что
в будущем Grid-коммуникации потребуют новых протоколов.

Что касается столь важного аспекта, как безопасность коммуникаций, то ввиду
сложности этой проблемы вряд ли для Grid Computing начнут разрабатывать какие-либо
специальные методы — скорее всего каждый раз, когда это возможно, будут использоваться
существующие и, в частности, стандарты безопасности, разработанные в контексте
Internet-протоколов.

Resource: разделение единичных ресурсов

В иерархии уровней Resource располагается над уровнем Connectivity и использует
входящие в последний коммуникационные и аутентификационные протоколы для согласования
используемых методов безопасности, инициализации, мониторинга и управления ресурсами.
Для доступа и управления локальными ресурсами Resource вызывает соответствующие
функции уровня Fabric. Заметим, что протоколы уровня Resource предназначены
исключительно для работы с локальными ресурсами, не учитывают глобальное состояние
системы и не отслеживают атомарные операции, выполняемые объединенными ресурсами.
Этим всем занимается уровень Collection, рассматриваемый ниже.

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

Collective: координация ресурсов

Если Resource отвечает за взаимодействие с единичным ресурсом, то следующий
в иерархии уровень Collective содержит протоколы и сервисы (такие, как API и
SDK), не связанные с каким-либо специфическим ресурсом.

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

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

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

Applications: уровень приложений

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

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

Реалии сегодняшнего дня

Несмотря на кажущуюся абстрактность изложенного материала, сегодня существуют
и успешно функционируют несколько проектов, реализующих технологию Grid Computing.
Например, Information Power Grid, применяемая NASA для своих исследований, European
Data Grid, Particle Physics Data Grid и Grid Physics Network, которые используются
для анализа физических экспериментов, и ряд других. А в начале августа компания
IBM объявила о инвестировании 4 млрд. долл. в разработку технологии Grid Computing.
Допуская некоторую вольность, можно сказать, что Grid-технологии позволяют создавать
вычислительные системы с практически неограниченной мощностью. Возникает вопрос,
а понадобятся ли в будущем суперкомпьютеры? Ответом будет "да" поскольку
всегда найдется класс задач, требующих для своего решения тесно связанных систем.
Другое дело анализ данных и приложения, толерантные к времени запаздывания.
Такие задачи, скорее всего, "перекочуют" на Grid-системы.