Версия 1.2 Java Parallel Processing Framework (JPPF), инструментарий сетки для Java, содержит 3 основных новых функции, описанных в этой статье.
Отправка заданий с политикой исполнения
В предыдущих версиях отсутствовала возможность указать, на каких узлах может выполняться набор задач или задание. Теперь можно указать набор условий, которым должен удовлетворять узел, чтобы выполнить данный набор вычислительных задач.
Давайте возьмем пример. Представьте, что у нас есть задачи, которые требуют много памяти, скажем, 512 МБ, и встраивают большой объем данных. Мы хотим, чтобы эти данные транспортировались как можно быстрее, поэтому мы хотим, чтобы узлы были как можно ближе, например, в интернет-домене «mydomain.com».
Мы бы выразили нашу политику исполнения следующим образом:
<ExecutionPolicy>
<AND>
<AtLeast>
<!--max memory in bytes-->
<Property>maxMemory</Property>
<Value>520000000</Value>
</AtLeast>
<Contains ignoreCase="true">
<Property>ipv4.addresses</Property>
<Value>mydomain.com</Value>
</Contains>
</AND>
</ExecutionPolicy>
Это переводится как выполнение, только если узел имеет как минимум 520 000 000 байт максимальной памяти и находится в домене «mydomain.com» .
Теперь осталось только разобрать эту XML-политику и отправить ее вместе с задачами:
ExecutionPolicy policy = PolicyParser.parsePolicyFile("../policies/MyPolicy.xml");
List<JPPFTask> results = jppfClient.submit(tasks, dataProvider, policy);
Второй пример: давайте рассмотрим, что у нас есть N узлов, каждый с числовым идентификатором, очень креативно названный «node.id» со значением от 1 до N.
Мы хотим, чтобы наши задачи выполнялись только на узлах 2–5 и 9-12. Затем мы определяем политику выполнения следующим образом:
<ExecutionPolicy>
<OR>
<BetweenII>
<Property>node.id</Property>
<Value>2</Value>
<Value>5</Value>
</BetweenII>
<BetweenII>
<Property>node.id</Property>
<Value>9</Value>
<Value>12</Value>
</BetweenII>
</OR>
</ExecutionPolicy>
Это выглядит очень просто, не так ли? Я приглашаю вас прочитать намного больше на страницах документации полной политики выполнения .
Использование альтернативных схем сериализации
Постоянная проблема с сериализацией Java заключается в том, что наши объекты должны быть … Сериализуемыми, то есть их классы должны реализовывать java.io.Serializable или java.io.Externalizable.
JPPF широко использует сериализацию для передачи объектов на свои серверы и узлы. Но что произойдет, если приложение использует сторонние библиотеки, где невозможно изменить код, чтобы сделать объекты сериализуемыми?
JPPF решает эту проблему, предоставляя возможность функционировать с потоками объектов, отличными от стандартных java.io.ObjectInputStream и java.io.ObjectOutputStream.
Предусмотрена встроенная реализация, которая позволяет JPPF полностью работать с платформой сериализации XStream XML.
Подробнее об этом в документации JPPF .
Tomcat порт JPPF-клиента
В отличие от других портов сервера приложений J2EE (см. JPPF и J2EE ), порт для Tomcat не основан на JCA-коннекторе JPPF.
Это довольно простое встраивание клиента J2SE в веб-приложение, которое можно развернуть в контейнере Tomcat.
О JPPF:
JPPF — это сеточный инструментарий для Java, который упрощает параллельное выполнение приложений и ускоряет их выполнение на порядки. Напишите один раз, разверните один раз, выполняйте везде!
У JPPF есть много выдающихся особенностей:
- Сетка JPPF может быть запущена за несколько минут
- Простая модель программирования, которая абстрагирует сложность распределенной и параллельной обработки
- Высоко масштабируемая распределенная структура для параллельного выполнения задач, интенсивно использующих процессор
- Полная интеграция с ведущими серверами приложений J2EE
- Графические и программные инструменты для детального мониторинга и администрирования
- Отказоустойчивость и возможности самовосстановления обеспечивают высочайший уровень обслуживания и надежности.
- Набор полностью документированных примеров приложений JPPF к реальным проблемам
- Заставка JPPF @ Home использует незанятые корпоративные ресурсы
- Работает на любой платформе, поддерживающей Java ®
- Очень гибкое и дружественное для бизнеса лицензирование с открытым исходным кодом
- и больше ….
Попробуйте сами на сайте JPPF.org .