Какова лучшая библиотека для Java для включения сетки/кластера в ваше приложение?

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

Я видел презентацию GridGain и был очень впечатлен ею.

Знаете другие?


person Sarel Botha    schedule 21.12.2008    source источник


Ответы (12)


Есть несколько:

Я не использовал все из них, но я использовал или исследовал большинство из них.

GridGain и GigaSpaces больше ориентированы на сетевые вычисления, чем на кэширование, и (имхо) лучше всего подходят для вычислений сеток, чем сетки данных (см. эту информацию о вычислениях и сетках данных). Я считаю GigaSpaces действительно интересной технологией, и у нее есть несколько вариантов лицензирования, включая бесплатную версию и бесплатную полную версию для стартапов.

Coherence и Terracotta пытаются обрабатывать кэши как карты, что является довольно естественной абстракцией. Я много использовал Coherence, и это отличный высокопроизводительный продукт, но не дешевый. Терракота мне менее знакома. Документации для Coherence мне иногда не хватает, но это действительно мощный продукт.

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

EHCache — это простое решение для кэширования, которое я также использовал в веб-приложениях. Никогда не как распределенный кеш, но он может это сделать. Я склонен рассматривать это как быстрое и грязное решение, но, возможно, это мое предубеждение.

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

person cletus    schedule 21.12.2008
comment
Извините за уценку, но ваш ответ представляет собой скорее всесторонний обзор сред распределенного кэширования, а не информацию о том, как включить/настроить кластеризацию для приложений Java :-) - person Karl; 23.02.2009
comment
Можете ли вы запросить любой из них (без перехода к полноценной структуре ORM)? - person mainstringargs; 26.03.2009
comment
Не уверен, что понимаю вопрос. ORM и кэширование имеют немного общего, но в основном преследуют разные цели. - person cletus; 26.03.2009
comment
Вы пропустили Infinispan в своем списке. :-) У меня есть более подробный комментарий к Infinispan в виде отдельного ответа. - person Manik Surtani; 09.06.2011
comment
Теперь GridGain перешел на двойную модель лицензирования — Коммерческую лицензию или GPLv3. Вы не можете использовать его в коммерческих целях, не заплатив за это. См. здесь. - person Chris; 13.09.2011

Вы также можете проверить Hazelcast. Hazelcast — это транзакционная, распределенная/разделенная реализация с открытым исходным кодом очереди, темы, карты, набора, списка, блокировки и исполнителя. услуга. С ним очень легко работать; просто добавьте hazelcast.jar в путь к классам и начните программировать. Практически не требует настройки.

Если вы заинтересованы в распределенном выполнении задач Runnable, Callable, ознакомьтесь с документацией по службе Distributed Executor по адресу http://code.google.com/docreader/#p=hazelcast

Hazelcast выпускается под лицензией Apache, также доступна поддержка уровня предприятия.

person Community    schedule 21.12.2008

Рассматривали ли вы Infinispan? Это платформа сетки данных с открытым исходным кодом от JBoss.org. Для получения более подробной информации я рекомендую вам прочитать это (старое) сообщение в блоге, анонсирующее проект, а также более интересные сообщения в блоге, в том числе одно на используя Infinispan с Hibernate и как автономный кеш. Совсем недавно в Red Hat Enterprise Data Grid< /а>. Существует краткое руководство по началу работы и DZone RefCard тоже, даже видео на YouTube :)

person Manik Surtani    schedule 06.06.2011

Я думаю, что резюме @cletus довольно хорошее. Я хотел упомянуть, что Terracotta предоставляет гораздо больше, чем просто распределенный кеш в виде карты. Он кластеризует кучу Java и примитивы синхронизации, превращая параллельную программу Java в распределенную программу Java. Вы можете выполнять кеширование с его помощью (в том числе с использованием распределенных версий библиотек кеша с открытым исходным кодом) или кучу других вещей.

Для распространения работы есть несколько дополнительных библиотек, написанных поверх Terracotta, в частности tim-pipes (для сообщений) и tim-masterworker (для распространения в стиле Master-Worker) — отличные абстракции поверх Terracotta. Эта библиотека находится в Терракотовой кузнице:

Эта недавно добавленная страница может добавить немного дополнительной информации по сравнению с некоторыми другими потенциальными технологиями данных:

person Alex Miller    schedule 21.12.2008

JPPF также хорош.

person raupach    schedule 25.12.2008

Если вы хотите перейти на более низкий уровень, есть JGroups, который предоставляет вам самые основы кластеризация Java-процессов.

person Community    schedule 21.12.2008

А также проверьте ProActive.

person Lukas Grijander    schedule 14.09.2009

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

person Brett McCann    schedule 05.01.2009

Для грид-вычислений вы также можете использовать Ice Grid или DataSynapse GridServer. Оба они обеспечивают очень эффективные механизмы для распределения задач и обеспечения отказоустойчивости и избыточности.

person John Channing    schedule 07.01.2009

Я думаю, что ваш вопрос был интерпретирован по-разному, вы спрашиваете о библиотеке, которую вы можете использовать для «включения кластера» вашего приложения.

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

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

Хорошей отправной точкой было бы загрузить стеклянную рыбу и попытаться настроить кластерный экземпляр стеклянной рыбы.

Надеюсь, это поможет.

Карл

person Karl    schedule 23.02.2009

Также проверьте Fura.

person Lukas Grijander    schedule 14.09.2009

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

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

Если вы хотите запустить исполняемый файл в параметрическом поиске — скажем, вы хотите запустить один и тот же исполняемый файл с рядом параметров для каждого экземпляра — тогда традиционный пакетный подход работает хорошо. Это очень традиционный подход к высокопроизводительным вычислениям, который все еще широко используется. Подходящими инфраструктурами для работы с ним в масштабе предприятия являются Platform LSF, DataSynapse GridServer, PBS< /em> или по мере развития Windows HPC Server. Вы также можете ознакомиться с продуктами с открытым исходным кодом, такими как Globus и Condor. В зависимости от того, насколько велико ваше приложение, вы также можете обратить внимание на gLite, который используется для очень масштабных научных проектов, таких как LHC.

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

person Tim Barrass    schedule 18.11.2010