Как сетевые вычисления превращают разрозненные машины в суперкомпьютер

2

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

Эти сценарии звучат как научная фантастика или корпоративная утопия, но все они указывают на одну и ту же базовую архитектуру: сетевые вычисления (grid computing).

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

Миф об одном компьютере

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

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

Сетевые вычисления применяют эту логику к данным.

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

В сетевых вычислениях эти пределы исчезают. Система связывает эти ресурсы вместе. Когда вы выполняете запрос, сеть использует не только ваш ЦП. Она распределяет части задачи на тысячи других машин в сети. Для пользователя это кажется магией. Вы получаете доступ к коллективной мощности всей сети, а не только к кремнию перед вами.

Это не ново, но еще не готово

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

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

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

Ловушка жаргона

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

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

  • Общие вычисления (Shared Computing): Это широкая категория. Она относится к любой группе компьютеров, разделяющих вычислительную мощность для выполнения задачи. Это довольно общий термин.
  • Утилитарные вычисления (Utility Computing): Часто предоставляются через программное обеспечение как услугу (SaaS). Представьте себе электричество. Вы не строите электростанцию; вы подключаетесь к сети и платите за то, что используете. Компании предлагают хранилище или вычислительную мощность на основе потребления.
  • Облачные вычисления (Cloud Computing): Это самый знакомый термин сегодня. В облачных вычислениях приложения и хранилища «живут» в интернете. Вы не владеете оборудованием; вы арендуете доступ к нему. Хотя облачные и сетевые вычисления имеют общие корни, сетевые вычисления больше сосредоточены на объединении простаивающих ресурсов для массовых вычислительных задач, тогда как облачные вычисления часто сосредоточены на доставке услуг через интернет.

Чтобы ориентироваться в этих понятиях, нужно знать лексику. Вот основы:

  • Кластер (Cluster): Группа сетевых компьютеров, разделяющих ресурсы. Они работают вместе как единое целое.
  • Узел (Node): Любое устройство в сети, которое может передавать, принимать или перенаправлять данные. Управляющие узлы контролируют поток.
  • XML (Extensible Markup Language): Язык разметки, описывающий данные. Он читаем как человеком, так и машиной. Управляющие узлы используют производные от XML, такие как WSDL (Web Services Description Language), чтобы понимать, как обрабатывать определенные приложения и типы данных.
  • Хаб (Hub): Центральная точка в сети, где подключается несколько устройств.
  • IDE (Integrated Development Environment): Набор инструментов, который программисты используют для создания приложений.
  • Песочница (Sandbox): Изолированная среда, используемая для тестирования приложений без риска для основной системы.

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

Техническая терминология

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

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

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

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

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

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

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

В этой среде сервис (услуга) — это любая программная система, позволяющая компьютерам взаимодействовать через сеть.

Коммуникация часто опирается на SOAP (Simple Object Access Protocol). Набор правил для обмена XML-сообщениями через сеть. Он был разработан Microsoft. Это синтаксис для разговора.

Управление данными приводит нас к понятию состояния (state). В ИТ состояние — это любые постоянные данные. Они сохраняются в течение всего жизненного цикла приложения. Когда вы добавляете книги в корзину Amazon, это данные с состоянием. Amazon отслеживает ваш выбор, пока вы просматриваете каталог. Сервисы с состоянием позволяют создавать многошаговые приложения, которые полагаются на согласованные основные данные.

И, наконец, транзиентность (временность). Способность включать или выключать сервис в сети без сбоя всей операции.

Обмен ресурсами

Итак, как эти элементы связываются вместе?

Несколько организаций соревнуются в создании стандартизированных протоколов. Цель? Сделать среды грид-вычислений готовыми к использованию «из коробки» (plug-and-play).

Грид-системы существуют уже сегодня. Но совместимость часто бывает нестабильной. Почему? Потому что каждая система часто использует уникальный набор протоколов и инструментов. Две грид-системы могут не понимать друг друга. Отсутствие согласия является узким местом.

Функциональная система грид-вычислений обычно требует трех вещей:

  1. Управляющий узел. Обычно это сервер, выполняющий административные функции. Это диспетчер.
  2. Сеть. Компьютеры, работающие со специальным грид-программным обеспечением. Они действуют как пользовательские интерфейсы и пулы ресурсов. Сеть может быть однородной (одинаковая ОС, одинаковое оборудование) или гетерогенной (смесь всего подряд). Она может быть проводной или через открытый Интернет.
  3. Промежуточное ПО (Middleware). Рабочая лошадка. Программное обеспечение, которое позволяет разным компьютерам выполнять процесс через сеть. Без промежуточного ПО коммуникация невозможна. Не существует единого формата для промежуточного ПО, что усугубляет проблему фрагментации.

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

Проблема стандартизации

Потенциал безграничен. Но только если все согласны с протоколами и инструментами.

Без стандартного формата сторонние разработчики застряли. Независимые программисты хотят создавать приложения на гриде, но они не могут гарантировать совместимость. Им, возможно, придется создавать разные версии одного и того же приложения для разных систем. Это занимает много времени. Разработчики не хотят выполнять одну и ту же работу дважды.

Стандартизированный набор протоколов позволил бы разработчикам сосредоточиться на одном формате. Одна кодовая база. Одна грид-система.

До тех пор мы застряли с фрагментированным ландшафтом. Мощным, да. Но беспорядочным.

Это возвращает нас к вопросу: если оборудование есть, и программное обеспечение существует, почему не каждая сеть является гридом?

Парадокс безопасности распределенной мощности

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

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

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

«Хакер теоретически может создать систему сетевых вычислений с целью взлома зашифрованной информации».

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

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

Кто следит за витриной?

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

От научной фантастики до лабораторного стола

Так куда же на самом деле направляется эта мощность? Не в ваши видеоигры. Не в ваши электронные таблицы.

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

SETI@home: Прослушивание пустоты

Проект по поиску внеземного интеллекта (SETI) вывел сетевые вычислительные системы на первый план. Радиотелескопы собирают терабайты космического шума. Один компьютер не может найти иголку в стоге сена таких данных. SETI@home создал программу, превращающую миллионы домашних ПК в виртуальный суперкомпьютер. Вы устанавливаете ее. Она работает в фоновом режиме. Она анализирует данные на наличие сигналов инопланетян. Если вы хотите поиграть в Call of Duty, программа уступает. Когда вы выходите из системы, она возобновляет свою работу.

Folding@home: Разгадка белковой головоломки

Затем есть группа Панде (Pande Group) из Стэнфорда. Они ищут не инопланетян; они ищут причины болезни Паркинсона и Альцгеймера. Ключ кроется в сворачивании белков. Белки принимают определенные формы для выполнения своих функций. Когда они сворачиваются неправильно, следуют болезни.

Folding@home моделирует процесс сворачивания белков. Это огромная вычислительная проблема. Группа Панде надеется, что, поняв физику неправильного сворачивания, они смогут найти новые методы лечения. Процесс идентичен SETI: скачайте приложение, позвольте процессору простаивать ночью и внесите вклад в медицинскую науку.

Эфемерная природа волонтерских вычислений

Таких проектов десятки. Многие из них не являются постоянными. Как только исследовательская цель достигнута, сеть распадается. Иногда новый проект заменяет старый. Иногда он просто исчезает.

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

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

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

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

Реальные успехи: Проект по сравнению геномов

Теория — это хорошо, но результаты важнее. Возьмите в качестве доказательства Проект по сравнению геномов (Genome Comparison Project). Это исследовательское усилие было направлено на сравнение белковых последовательностей более чем у 3500 организмов. Оно стартовало 20 декабря 2006 года.

К 21 июля 2007 года проект уже достиг всех своих целей. Для этого не потребовалась ни одна ферма суперкомпьютеров. Для выполнения тяжелой работы использовалась грид-система вычислений. Вот в чем сила распределенных ресурсов.

Что такое грид-вычисления?

Люди часто путают их со стандартными облачными вычислениями. Различие заключается в масштабе и цели. Грид — это сеть компьютеров, которые делятся ресурсами для решения крупных и сложных задач. Он действует как виртуальный суперкомпьютер.

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

Популярные примеры грид-проектов

Почему это важно для вас? Потому что эти сети решают реальные мировые кризисы. Вот несколько заметных примеров:

  • SETI@home : Использует свободные вычислительные мощности миллионов персональных компьютеров для поиска внеземной жизни. Он превращает простаивающие процессоры в пункты прослушивания глубокого космоса.
  • Folding@home : Фокусируется на сворачивании белков. Изучая процесс сворачивания белков, исследователи надеются лучше понять такие заболевания, как болезнь Альцгеймера и Паркинсона.
  • World Community Grid : Решает гуманитарные задачи. В их число входят исследования рака, изучение ВИЧ/СПИДа и инициативы в области чистой энергии.

Эти проекты показывают, как грид-вычисления превращают простаивающее оборудование в силу, служащую научным целям. Чтобы помочь, вам не нужно быть ученым. Вам просто нужен доступ в Интернет и немного свободного времени.

Почему это важно сейчас

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

Инфраструктура уже существует. Альянс Globus и Форум открытых гридов (Open Grid Forum) продолжают совершенствовать стандарты. Такие компании, как IBM, давно инвестируют в то, чтобы сделать грид-вычисления доступными. Инструменты облегчают сотрудничество через Интернет для выполнения этих масштабных задач.

Взгляд в будущее

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

«Грид-вычисления расширяют свой охват».

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