Grid Computing и Java

Я не мог найти подобный вопрос к этому.

В настоящее время я смотрю на лучшее решение, решающее проблему грид-вычислений.

Настройка:

  • У меня есть ситуация сервер / клиент, где есть клиенты [как правило тупые из большинства логики] и получают инструкции от сервера
  • Есть запрос на авторизацию
  • Клиенты сообщают информацию о скорости выполнения задачи (сложность задачи определяется типом задачи)
  • Клиенты получают задачу наилучшего соответствия для своей предыдущей работы (лучшие клиенты получают худшие проблемы)

Со временем требования будут:

  • Клиентский размер должен быть небольшим и автономным - у меня не может быть клиента, который требует много для установки и настройки
  • Клиент должен иметь возможность получать новые задания и время выполнения задания с сервера (было бы неплохо иметь масштаб сетки для новых проблем [и новые проблемы будут распределяться сервером], которые будут представлены)
  • Мне нужно иметь уровень аутентификации (не должен быть сложным или соответствовать существующему ldap) [более простое требование: клиенты могут зарегистрироваться для нового «членства» и получить доступ] (я не уверен, что сильные стороны RMI лежат здесь )
  • Клиенты смогут работать из Интернета, а не в сетевой среде.
    • Что означает шифрование запрошенных результатов

В настоящее время я использую веб-сервисы для связи между клиентами и сервером. Вся информация и результаты возвращаются на хост-сервер (J2EE).

Мой вопрос, есть ли настройка системы сетки, которая соответствует всем / большинству из этих требований, и является ли она открытым исходным кодом?

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

Весь код для этой системы на Java.

13.10.2009 07:44:53
3 ОТВЕТА
РЕШЕНИЕ

Вы можете исследовать космические архитектуры , в частности Jini и Javaspaces . Что такое Джини? По сути, это RMI с настраиваемым механизмом обнаружения. Вы запрашиваете разработчика интерфейса Java, и подсистема Jini находит текущие сервисы, реализующие этот интерфейс, и динамически информирует об этом ваш сервис.

Вкратце, вы бы записали рабочие элементы в пространство. Узлы сетки будут настроены для транзакционного чтения данных из пространства. Каждый узел сетки будет принимать рабочий элемент, обрабатывать его и записывать результат обратно в это пространство (или другое пространство). Узел-распределитель может отслеживать результаты, записываемые обратно (и / или ваши прогнозируемые временные результаты, как вы и просили).

Это все Java, и будет линейно масштабироваться. Поскольку это Jini, узлы сетки могут динамически загружать свои классы с HTTP-сервера, поэтому вы можете распространять обновления кода тривиально.

3
13.10.2009 08:29:53
Имеет ли JINI большую потребность во времени выполнения клиента, а также может ли он быть настроен клиентом без жесткого кодирования всего?
monksy 13.10.2009 08:10:25
Нет и да соответственно.
Brian Agnew 13.10.2009 08:27:33
Что вы имеете в виду? Мне очень нравится идея пространства. Это звучит как лучший подход, чем делать все с RMI. Как насчет требований к безопасным каналам? Это настраивается? А как насчет брошенных детей? Другой вопрос (который учитывает сетка) как насчет назначения работы?
monksy 13.10.2009 08:34:22
Я считаю, что Джери заботится о безопасных каналах. Присвоение работы зависит от того, как работают пространства. Вы можете пометить вакансии, и клиенты могут подобрать по мере необходимости. Я бы посоветовал посмотреть список рассылки пользователей Jini и задать там больше вопросов.
Brian Agnew 13.10.2009 11:20:06

Взгляните на бобы сетки

1
13.10.2009 07:49:33

Похоже, что BOINC будет работать для вашей проблемы, хотя вы должны обернуть Java для своих клиентов. Это, и это может быть излишним для вас.

0
13.10.2009 10:45:22