Monday, March 31, 2008

GridGain - open source grid computing

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

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

Следующая особеность это набор SPI (service provider interface) или просто стандартных интерфейсов и различных реализаций. Есть ядро взаимодействующее с SPI через фиксированный интерфейс, а что за ним скрывается ядру все равно. А скрываются за ним готовые решения для интеграции с серверами приложений: JBoss, WebSphere, WebLogic, GlassFish, Tomcat, различными фреймворками: JGroups, JMS, приложениями: Oracle Coherence Tangosole, Mule, JBCache, GigaSpaces, JXInsight и другими.

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

Map/Reduce.
GridGain построен на технологии map/reduce при которой сначала происходит разбиение задачи (task) на работы (jobs) и распределение работ по нодам (map) а после того как они выполнятся сборка результатов и объединение в один (reduce). На такой же технологии построены Hadoop, Google.

Последний релиз привнес ряд новой функциональности, так что я перечислю все:

1) Load balancing - балансировка нагрузки и возможность очень просто написать свою стратегию балансировки
2) Failover - перераспределение работ по нодам если одна из нод покинула топологию или работа на ней не смогла выполниться.
3) Metrics/attributes - все ноды получили аттрибуты и различные метрики такие как используемая/свободная память, использование процессора и другие. Пользователь может самостоятельно определять свои аттрибуты.
4) Job stealing - реализация предложенной Sun концепции при которой свободные ноды могут "воровать" работу у очень занятых что приводит к более равномерному перераспределению нагрузки автоматически.
5) Tracing - возможность поключать инструментарий для трассировки вызовов с помощью простого API.
6) Events - система событий позволяющая как в режиме реального исполнения получать различные типы событий от грида так и обработать их позднее.
6) Discovery - механизм поиска и включения в грид новых нод "на лету". GridGain поставляется с довольно широким спектром готовых SPI.
7) Loaders - готовые решения для встраивания Gridgain в популярные сервера приложений.
8) Checkpoint - возможность сохранения промежуточных результатов вычислений и использование их на других нодах после падения или перезапуска
9) Session - механизм обмена данными между различными работами (jobs) той же самой задачи (task)
10) P2P - возможность автоматического распространения классов на все ноды грида по мере необходимости
11) @Gridify - аннотация предоставляющая возможность выполнить метод удаленно без его модификации
И многое другое. Ключемыми понятиями являются задача (task) и работы (job) на которые происходит разделение задачи. Это те классы которые разработчик может написать для более тонкого управления выполнением, но GridGain поставляется и с готовыми решениями.

Ряд известных недостатков относится как к новой функциональности (например не очень гибкая реализация job stealing), невозможность использовать разные стратегии балансировки для разных задач, так и к общей концепции - все таки для оптимального и правильного выполения необходимо писать код который будет этим заниматься. Так же стоит заметить что продукт сугубо Java и использование его из других языков возможно но сопряжено с использованием сторонних продуктов.

Виртуализация и Грид - в чем разница

Последнее время модное слово виртуализация стало вытеснять грид как таковой несмотря на то что разница между ними весьма существенна и как выразился Яков Сироткин (jug.ru) "они перпендикулярны".

Вчерашняя статья в CNews (CNews) меня в очередной раз убедила что понимание людей весьма далеко от истины.Итак в чем же собственно разница:

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

С точки зрения использования это единая виртуальная машина. Ярким представителем данной категории программных продуктов является Terracotta Grid. Строго говоря это не совсем Грид а по признанию самой компании их направление это "virtualization", что однако не мешает достигать поставленной цели - ускорение вычислений за счет добавление новых аппаратных средств. Одной из серьезных задач решаемых в данном подходе является например реализация мониторов/синхронизационных блоков на распределенной виртуальной машине.

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

Как пример "чистого" грида могу выделить open source продукт GridGain (www.gridgain.com) в котором каждая нода представлена рядом статических и динамических характеристик, а программист имеет возможность самостоятельно принять решение о выполнении вычислений на той или иной ноде.

Другим более "консервативным" примером является Globus Toolkit, серьезный и мощный продукт с многолетней историей но на мой взгляд несколько "тяжеловатый" для использование в бизнес приложениях.

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

Грид системы для бизнеса

Имея определенный опыт в создании Грид систем я был удивлен набрав в Google "Грид" и практически не найдя ничего интересного. Конечно есть новости о суперкомпьютерах и научных разработках, о Globus Toolkit и различных организациях занимающихся проблемами грид систем. Но отсутствовал один очень важный аспект - оказалось что рыночная ниша грид вычислений попросту пуста.
Вообщем то это меня и сподвигло на данный блог который надеюсь получит продолжение и возможно со временем обретет свой сайт.

Итак сравнивая рынки коммерческого применения грид систем в Европе и Америке с аналогичным в России обнаружилась удивительная отсталость нас от них. До сих пор Грид ассоциируется с исключительно научной деятельностью и монстрами этой индустрии. Лично я ничего не имею против того же Globus Toolkit но его исспользование в среднем и малом бизнесе на мой взгляд не целесообразно, а специалисты по нему дороги и их мало.

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

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