Вычисления сетки и Java
-
21-09-2019 - |
Вопрос
Я не мог найти подобный вопрос к этому.
В настоящее время я смотрю на лучшее решение для решения проблемы вычисления сетки.
Настройка:
- У меня есть ситуация с сервером/клиентом, когда есть клиенты [обычно глупые из большинства] и получают инструкции с сервера
- Иметь запрос на разрешение
- Клиенты сообщают об информации о скорости выполнения задачи (сложная задача оценивается по типу задачи)
- Клиенты получают наилучшую задачу для своей предыдущей работы (лучшие клиенты получают худшие проблемы)
В конце концов требования будут:
- Следы клиента должны быть небольшим и автономным - у меня не может быть клиента, которому требуется много для установки и настройки
- Клиент должен иметь возможность получить новые задания и время выполнения заданий с сервера (было бы неплохо иметь масштаб сетки для новых проблем [и новые проблемы будут распределены на сервере], которые будут представлены), которые будут представлены)
- Мне нужен слой аутентификации (не должен быть сложным или соответствовать существующему LDAP) [более простые требования: клиенты могут подписаться на новое «членство» и получить доступ] (я не уверен, что сильные стороны RMI здесь лежат здесь )
- Клиенты смогут работать из Интернета скорее в сетевой среде
- Что означает шифрование запрошенных результатов
В настоящее время я использую веб -сервисы для общения между клиентами и сервером. Вся информация и результаты возвращаются на хостинг -сервер (J2EE).
Мой вопрос: есть настройка системы сетки, которая соответствует всем/большинству этих требований, и является открытым исходным кодом?
Я не заинтересован в облаке, потому что большинство этих задач небольшие, но очень часты (один раз в день, но задача может быть легкой, но выполняет обслуживание).
Весь код для этой системы находится на Java.
Решение
Вы можете расследовать космические архитектуры, и, в частности Джини а также Javaspaces. Анкет Что такое Джини? По сути, это RMI с настраиваемым механизмом обнаружения. Вы запрашиваете реализацию интерфейса Java, а подсистема Jini обнаруживает, что текущие сервисы реализуют этот интерфейс, и динамически информирует об этом ваш сервис.
Вкратце, вы напишите рабочие элементы в пространство. Сетчатые узлы будут настроены для чтения данных транзакции из пространства. Каждый узел сетки возьмет на себя рабочие элементы, обрабатывает его и напишет результат обратно в это пространство (или в другое пространство). Распределительный узел может отслеживать для записи результатов (и. или для ваших прогнозируемых сроков результатов, как вы просили).
Это все Java, и будет линейно масштабироваться. Поскольку это Jini, узлы сетки могут динамически загружать свои классы с HTTP -сервера, и поэтому вы можете пропагандировать обновления кода тривиально.
Другие советы
Взглянуть на Сетчатая фасоль
Борьба Похоже, это будет работать для вашей проблемы, хотя вы должны обернуть Java для своих клиентов. Это, и это может быть излишним для вас.