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

Примечание: Неопределенный индекс

Случается, когда вы пытаетесь получить доступ к массиву с помощью ключа, который не существует в массиве.

Типичным примером для уведомления Undefined Index будет ( demo )

$data = array('foo' => '42', 'bar');
echo $data['spinach'];
echo $data[1];

Оба spinach и 1 не существуют в массив, вызывающий запуск E_NOTICE .

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

$data = array('foo' => '42', 'bar');
if (array_key_exists('spinach', $data)) {
    echo $data['spinach'];
}
else {
    echo 'No key spinach in array';
}

Если у вас есть код например:


...

, тогда $_POST['message'] не будет установлена, когда эта страница будет загружена первой, и вы получите указанную выше ошибку. Только когда форма будет отправлена ​​и этот код будет запущен во второй раз, будет существовать индекс массива. Вы обычно проверяете это с помощью:

if ($_POST)  ..  // if the $_POST array is not empty
// or
if ($_SERVER['REQUEST_METHOD'] == 'POST') ..  // page was requested with POST

Вопросы, относящиеся:

28
задан Anony-Mousse 19 June 2012 в 21:11
поделиться

10 ответов

Существуют несколько:

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

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

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

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

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

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

32
ответ дан cletus 28 November 2019 в 02:37
поделиться

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

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

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

20
ответ дан 28 November 2019 в 02:37
поделиться

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

Для распределения работы, существуют, некоторые дополнительные освобождают записанный сверху Терракоты, в особенности tim-каналы (для сообщений) и tim-masterworker (для распределения стиля Основного Рабочего) являются большими абстракциями сверху Терракоты. Эта библиотека находится на Терракотовом Штамповочном прессе:

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

5
ответ дан Alex Miller 28 November 2019 в 02:37
поделиться

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

4
ответ дан raupach 28 November 2019 в 02:37
поделиться

Если Вы хотите пойти немного низшего уровня, существует JGroups, который предоставляет Вам самые основы кластеризирующихся процессов Java.

2
ответ дан 28 November 2019 в 02:37
поделиться

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

2
ответ дан Brett McCann 28 November 2019 в 02:37
поделиться

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

1
ответ дан John Channing 28 November 2019 в 02:37
поделиться

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

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

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

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

Hope, которая помогает.

Karl

1
ответ дан Karl 28 November 2019 в 02:37
поделиться

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

2
ответ дан 28 November 2019 в 02:37
поделиться

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

1
ответ дан 28 November 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: