Какая библиотека Java лучше всего подходит для grid / cluster-включения вашего приложения?[закрыто]

StackOverflow https://stackoverflow.com/questions/383920

Вопрос

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

Я видел презентацию для Сетка сцепления и это произвело на меня большое впечатление.

Знаете о каких-нибудь других?

Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

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

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

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

Рассматривали ли вы Инфиниспан?Это грид-платформа с открытым исходным кодом от JBoss.org.Для получения более подробной информации я рекомендую вам прочитать это (старое) запись в блоге анонс проекта вместе с другими интересными заметками в блоге, в том числе о использование Infinispan с гибернацией и в качестве автономный кэш.Еще совсем недавно, на Корпоративная таблица данных Red Hat.Есть краткое руководство "начало работы", и a Рефкарта DZone слишком, даже видео на YouTube :)

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

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

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

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

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

А также проверить Активный

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

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

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

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

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

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

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

Карл

Также проверьте Фура

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

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

Если вы хотите запустить исполняемый файл в параметрическом поиске - скажем, вы хотите запустить один и тот же исполняемый файл с набором опций для каждого экземпляра, - тогда традиционный пакетный подход работает хорошо.Это очень традиционный подход к высокопроизводительным вычислениям, который все еще широко используется - подходящими инфраструктурами для решения этой задачи в масштабе предприятия являются Платформа LSF, Сервер сетки DataSynapse данных, ПБС или по мере его созревания Сервер Windows HPC.Возможно, вы также захотите взглянуть на продукты с открытым исходным кодом, такие как Глобус и Кондор.В зависимости от того, насколько велико ваше приложение, вы также можете посмотреть на Блеск, который используется для очень крупномасштабных научных проектов, таких как БАК.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top