2009-12-23 5 views
3

Я в настоящее время изучаю, какие существует Java совместимые решения для решения своих требований следующим образом:Какие существуют способы распространения асинхронных пакетных задач?

основы
  • Таймера/планируемых задач для пакетной обработки
  • Distributed, и что предоставление возможности масштабирования по горизонтали
  • Упругости , нет SPFs

Характер этих задач (тяжелое генерирование XML и доставка на веб-приемные узлы) означает запуск их на одном сервере с использованием чего-то вроде Quartz is not жизнеспособный.

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

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

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

ответ

2

Асинхронный всегда привносит JMS для меня. Отправлять запрос в очередь; MessageListener выгружается из пула, чтобы обработать его.

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

ОБНОВЛЕНИЕ: вы можете избежать возникновения одной точки отказа путем кластеризации и балансировки нагрузки.

Вы можете получить JMS без затрат, используя ActiveMQ (с открытым исходным кодом), JBOSS (доступная версия с открытым исходным кодом) или любой сервер приложений Java EE, поэтому бюджет не рассматривается.

И без блокировки, потому что вы используете JMS, помимо того факта, что вы используете Java.

Я бы порекомендовал делать это с помощью POJO с приводом Spring. Разумеется, издание сообщества является открытым исходным кодом.

Если это не для вас, взгляните на Spring Batch и Spring Integration. Оба эти могут быть полезными, а публикации сообщества - с открытым исходным кодом.

+0

Я работал с JMS в прошлом, и в то время как он подходит для асинхронной проверки, я не использовал никаких, которые не были склонны к тому, чтобы стать единичными точками отказа. Несомненно, я не сомневаюсь, что коммерческие поставщики предоставляют хеви-метал версию распределяемых, устойчивых кластеров MQ. Не имеют такого бюджета и не заинтересованы в блокировке поставщика. Я вроде бы хочу держаться подальше от больших коммерческих фреймворков, с открытым исходным кодом. –

+0

ActiveMQ и RabbitMQ - две популярные очереди с открытым исходным кодом, которые поддерживают кластеризацию, так что вы не будете закрыты, если сервер, на котором размещена очередь, опускается. http://www.rabbitmq.com/ и http://activemq.apache.org/. Оба имеют API-интерфейсы Java. –

1

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