|
|
|||||||||||||||||||||||||||||
|
Разработка grid-приложений при помощи инструментальных средств с открытыми исходными кодами (исходники)Источник: IBM developerWorks Россия Мартин Браун
Компоненты с открытыми исходными кодамиСообщество сторонников открытых исходных кодов имеет и поддерживает огромный диапазон инструментальных средств и продуктов, которые очень легко могут использоваться в интегрированных grid-средах. Инструментальные средства с открытыми исходными кодами охватывают весь спектр различного программного обеспечения и технологий, от операционных систем, таких как Linux и BSD, до полнофункциональных сред разработки на C/C++, таких как GNU CC. Можно также получить доступ к простым в использовании языкам программирования сценариев, таким как Perl, а также к компонентам, наборам инструментальных программ и интегрированным средам разработки, таким как Web-services tool kits от Apache или Eclipse Integrated Development Environment (IDE). Эти компоненты можно использовать индивидуально или совместно для создания grid-решения, применяя встроенные решения или преимущества стандартизации grid-решений, включая группу Web-сервисов WS-*, часто используемую в средах разработки grid-приложений, таких как Globus. Главным преимуществом использования компонентов с открытыми исходными кодами является простота доступа, разработки и развертывания. Поскольку программное обеспечение предоставляется свободно, можно использовать, развертывать и пробовать различные решения до тех пор, пока не найдется подходящее. Иногда использование инструментальных средств с открытыми исходными кодами может также ускорить решение задачи. Причина этого заключается в том, что подобные инструментальные средства коллективно разрабатываются группой людей, которые могут дорабатывать и модифицировать оригинальный исходный код. Это позволяет найти проблемный или слишком долго выполняющийся компонент и исправить его код, чтобы облегчить его использование или сделать его более полезным. Но, возможно, самое важное состоит в том, что для подавляющего большинства решений с открытыми исходными кодами можно свободно использовать, изменять и расширять оригинальный код для собственных нужд и требований. Если выбранное инструментальное средство не предоставляет нужную информацию, его функциональность обычно можно расширить, чего нельзя сказать о большинстве коммерческих программ, либо можно изменить оригинальный исходный код для достижения своих целей. Почти всегда можно воспользоваться гибкостью оригинального решения для своих потребностей. Давайте начнем рассмотрение функциональности и гибкости, предлагаемых наиболее распространенным решением - языками программирования сценариев с открытыми исходными кодами. Использование языков сценариевОсновной областью, где можно воспользоваться преимуществами модели открытых исходных кодов, являются языки сценариев. Такие языки как Perl, PHP, Python и Ruby предоставляют широкий спектр функциональности и позволяют быстро и легко разрабатывать приложение, которое может быть использовано в распределенной среде. На языке сценариев (по причине отсутствия необходимости следовать обычной последовательности написание/компиляция/компоновка/выполнение) разработку приложения часто можно выполнить намного быстрее, чем на традиционном C/C++. Более того, все языки сценариев предоставляют библиотеки и расширения для подключения к различным технологиям Web-сервисов, таким как SOAP и XML-RPC, а это означает, что можно быстро разработать решение, которое будет являться интерфейсом к существующей инфраструктуре, или создать абсолютно новые Web-сервисы для поддержки grid-сервиса. Web-сервисы часто являются основной частью современных Web-решений. Web-сервисы предоставляют много преимуществ, таких как легкое развертывание, гибкость и совместимость. Например, можно создать клиента Web-сервисов на Perl: Листинг 1. Разработка клиента Web-сервисов на Perl
В данном примере, взятом из grid-решения (написано на Perl) и реализующем систему хранения фотографий (ссылки на серию статей "Создание Grid с использованием Perl" приведены в разделе "Ресурсы"), мы используем модуль Конфигурацию индивидуальных серверов в grid-решении можно упростить, используя внутренний хэш-тип Perl, как показано ниже. Листинг 2. Использование внутреннего хэш-типа Perl
После передачи фотографии в grid мы используем сгенерированную отдельными узлами информацию для отслеживания текущей доступности их систем хранения, выбора узла и сериализации информации (используя Perl Dumper) в структуру, которую можно сохранить в базе данных. Распределение информации по grid производится путем получения списка текущих ожидающих запросов и обработки списка провайдеров (grid-узлов), а затем используется SOAP-интерфейс для распределения окончательной единицы работы на целевой узел. Поиск узлов для существующего элемента работает почти в обратном порядке - мы передаем поисковый запрос на каждый из известных узлов и объединяем ответы. В листинге 3 показан другой пример; на этот раз вычислительный grid написан полностью на Python. Для данного решения мы использовали не только Web-сервисы, но также гибкость языка Python как языка сценариев. Для большинства вычислительных grid-решений необходимо разработать приложение, которое может выполнять вычисление и возвращать результаты. Используя Python, можно распределить Python-сценарий, выполняющий вычисление. Вместо ограничений функциональности, предлагаемых автономным приложением, мы имеем полную гибкость для выполнения любого Python-сценария распределенным образом. Основой grid-функциональности является Web-сервис, на этот раз использующий XML-RPC, который легче реализовать. Python-модуль основного провайдера (grid-узел) приведен ниже. Листинг 3. Вычислительный grid на Python
Хотя этот листинг может показаться устрашающим, вы видите основные элементы, выполняющие grid-компоненты:
То, что все основанное на Python grid-решение заняло немногим более 300 строк кода и является достаточно гибким для обработки разнообразных вычислительных модулей и результатов, включая элементы регистрации, распределения и сбора данных, демонстрирует, насколько ускоряется разработка с использованием Python или других решений с открытыми исходными кодами. Библиотеки и интегрированные среды с открытыми исходными кодамиЯ уже описывал, как преимущества инструментальных средств с открытыми исходными кодами позволяют изменять для ваших потребностей оригинальный код, но часто в этом нет необходимости. Нужная функциональность и инструментальные средства часто уже доступны, не потому что они встроены в оригинальное решение, а потому что решения часто более гибки и расширяемы. Перед рассмотрением некоторых основных интегрированных сред нельзя не упомянуть о базовых библиотеках и расширениях, предлагаемых многими языками сценариев. Python и PHP поставляются с большим набором стандартных модулей и функциональностью, готовыми к использованию. Имеется также огромное количество расширений сторонних производителей. Perl имеет широко известную библиотеку модулей Comprehensive Perl Archive Network (CPAN). Существует несколько интегрированных сред, созданных при помощи технологии с открытыми исходными кодами и комбинирующих функциональность многих различных компонентов в систему, которую можно использовать для разработки и развертывания различных типов приложений. Хотя не все рассмотренные здесь интегрированные среды с открытыми исходными кодами предназначены для разработки grid-решений, большинство из них можно адаптировать, изменить или использовать в качестве основы для разработки grid-решений. LAMP и его производныеОригинальная интегрированная среда LAMP, обозначающая комплект, состоящий из операционной системы Linux, HTTP-сервера Apache, базы данных MySQL и наборов инструментальных средств PHP, использовалась для создания Web-сайтов. Со временем LAMP породила много производных продуктов. Например, символ "P" часто использовался для дополнительного обозначения основанных на Perl и Python сред, или он мог заменяться на "R" (LAMR) для обозначения решений Ruby или Ruby on Rails, а также на "J" для систем Java™/JSP. "L" заменена для Windows - WAMP, которая трансформировалась в WIMP (Windows и IIS), SAMP (Solaris), MAMP (Mac OS X) и даже BAMP (BSD). MySQL тоже часто заменялась на PostgreSQL (LAPP). Добавлялись также коммерческие интегрированные среды и приложения, например, акронимы WASP (Windows, Apache, SQL Server и PHP) и OPAL (Oracle). Среда LAMP была предназначена для разработки и развертывания Web-сайтов и использовала некоторые лучшие отдельные элементы в комбинации, в которой многие из них уже использовались. Хотя эта среда не предназначалась для разработки grid-решений, объединение этих отдельных инструментальных средств в один пакет может значительно облегчить разработку и развертывание grid-решений. Мы можем использовать преимущества каждого инструментального средства для обработки различных частей типичного grid-решения:
Кроме предоставления возможности быстрой разработки, использование LAMP или ее производных позволяет легко и быстро выполнять развертывание. Большинство дистрибутивов Linux поставляется со стандартным набором LAMP. Следовательно, создание grid-решений, использующих среду LAMP, часто сводится к установке и настройке отдельных основанных на Linux grid-узлов и развертыванию сценариев grid-приложения на этих узлах. Инструментальные средства Apache JavaХотя сама по себе Java не является системой с открытыми исходными кодами, огромное количество инструментальных средств и библиотек с открытыми исходными кодами создано с использованием технологии Java для обеспечения основной функциональности (например, Web-сервисов), а также для создания некоторых инструментальных средств, специфичных для grid. Важнейшие из различных доступных инструментальных средств предлагает Apache Software Foundation. Apache разработала набор инструментальных средств, которые мы можем использовать при создании интегрированных grid-сред:
Комбинируя эти сервисы и используя функциональность, предлагаемую различными основанными на Web-сервисах решениями, можно легко создать grid-решение. Все перечисленные выше решения являются решениями с открытыми исходными кодами. Однако они строго контролируются и управляются организацией Apache Software Foundation - группой разработчиков и проектировщиков, которые гарантируют сохранение предназначения и целей вышеуказанных решений в индивидуальных проектах. ActiveGridСистема ActiveGrid не является, как следует из названия, специфичной для grid интегрированной средой разработки и развертывания. Не является она и истинной системой с открытыми исходными кодами. ActiveGrid - это интегрированная среда, дающая возможность применять LAMP при разработке приложений, которые позволяют использовать grid-подобную технологию для разработки распределенных бизнес-приложений. Система основана на двух компонентах: ActiveGrid Application Builder для проектирования и разработки приложения и ActiveGrid Application Server, который можно использовать для развертывания приложения. Суть заключается в разработке полнофункциональных приложений, использующих преимущество интегрированной grid-среды, предоставляя более компактные, масштабируемые компоненты, которые можно использовать для разработки более компактных, обособленных приложений. РезюмеМы рассмотрели преимущества и недостатки разработки grid-решения с использованием технологии с открытыми исходными кодами. Ключевые моменты, которые можно выделить в приведенных в данной статье примерах и информации, - это простота использования и скорость разработки. Используя комбинацию интегрированных сред быстрой разработки, предлагаемых языками сценариев и многими библиотеками и решениями с открытыми исходными кодами, можно очень быстро и легко создать grid-решение.
|
|