Подтвердить что ты не робот

Какая лучшая библиотека для Java для grid/cluster-enable вашего приложения?

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

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

Знаете ли вы о других?

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

JPPF тоже приятно.

Ответ 6

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

Ответ 7

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

Ответ 8

И также проверьте ProActive

Ответ 9

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

Ответ 10

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

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

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

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

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

Карл

Ответ 11

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

Ответ 12

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

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

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

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