Архитектуры облачных приложений

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

Концепция Grid Computing

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

В общем, если вы когда-либо принимали участие в проекте SETI@home, то вы уже принимали участие в грид-вычислениях. Проект по поиску внеземных цивилизаций SETI (Search for Extra-Terrestrial Intelligence) использует радиотелескопы, ведущие постоянное наблюдение за активностью в космосе. Эти радиотелескопы собирают гигантские объемы данных, которые затем нуждаются в обработке с целью поиска сигналов, отличающихся от естественных — обнаружение сигнала, который может иметь искусственное происхождение, может служить признаком деятельности внеземной цивилизации. Обработка такого объема информации на одном компьютере потребует такого длительного времени, что вполне может статься, человечество к завершению этих вычислений действительно уже освоит межзвездные перелеты. Но вот множество компьютеров, каждый из которых использует для решения этой проблемы свои холостые циклы CPU, могут справиться с задачей намного быстрее.

Эти компьютеры, на которых работает приложение SETI@home (возможно, включая и ваш собственный компьютер), формируют сеть или "решетку" (grid). Каждый раз, когда у них есть свободные такты процессора, компьютеры направляют запросы серверам проекта SETI на получение наборов данных для обработки. Они обрабатывают наборы данных и передают результаты обратно серверам проекта SETI. Результаты, полученные одним из участников проекта, перепроверяются повторной обработкой на компьютерах других участников, а затем производится дальнейшая проверка наиболее интересных результатов [1].

1 В русскоязычных ресурсах встречается и такое написание, как "грид" (англ. grid — решетка, сеть) — согласованная, открытая и стандартизованная компьютерная среда, которая обеспечивает гибкое, безопасное, скоординированное разделение вычислительных ресурсов и ресурсов хранения информации, которые являются частью этой среды, в рамках одной виртуальной организации. См., например: http://tinyurl.com/37mx4jn, http://gridclub.ru/. — Прим. перев.

В 1999 г. участники программы SETI предложили использовать холостые циклы настольных компьютеров обычных пользователей для обработки данных проекта. Коммерческие и правительственные организации сформировали сеть из суперкомпьютеров для выполнения той же задачи. Впоследствии были созданы пулы серверов (так называемые "серверные фермы", server farms) для формирования сети, выполняющей такие задачи, как рендеринг видео (визуализация изображений и обсчет последовательностей кадров). Как суперкомпьютеры, так и серверные фермы оказались очень дорогими подходами к грид-вычислениям и требовали крупных капиталовложений.

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

На рис. 1.1 проиллюстрировано, как работает грид-приложение. Сначала сервер или кластер серверов получает набор данных, которые нуждаются в обработке. На первом шаге эти данные передаются в очередь сообщений (1). Другие узлы, которые часто называются серверам обработки (или, как в случае SETI@home — другими настольными компьютерами), наблюдают за очередью сообщений (2) и ждут появления новых наборов данных. Когда набор данных появляется в очереди сообщений, он обрабатывается первым же компьютером, который его обнаружил, и результаты отсылаются обратно в очередь сообщений (3), откуда они считываются сервером или кластером серверов (4). Оба компонента могут работать независимо друг от друга, и каждый из них может работать даже в том случае, если второй компонент не работает ни на одном компьютере.

Рис. 1.1. Архитектура грид-приложений отделяет основное приложение от узлов, осуществляющих обработку данных

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

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

Источник: Риз Дж., Облачные вычисления: Пер. с англ. — СПб.: БХВ-Петербург, 2011. — 288 с.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете промотать до конца и оставить ответ. Pinging в настоящее время не допускается.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100