2014-04-23 4 views
1

Я использую Glassfish 3.1 и JEE6. То, что я хотел бы сделать, так распараллеливает длительный процесс процессора на нескольких серверах. Если на примере у меня 1000 изображений и 10 серверов, я бы хотел, чтобы каждый сервер обрабатывал 100 изображений и возвращал результаты «хозяину».Параллельный процесс на нескольких серверах с EJB

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

Использование JMS может быть лучшей идеей? Если да, то как это сделать? Мастер создает очередь, и каждый «рабочий» компьютер может получить доступ к этой очереди. Мастер не должен знать ip каждой «рабочей» машины. Проблема в том, что мастер не знает, сколько рабочих есть и сколько частей у него есть, чтобы разделить изображения на процесс ...

Другая идея - использовать Hadoop, но я в основном ничего не знаю об этом ...

Я хотел бы получить от вас какой-либо совет, что это лучший способ сделать это в приложении JEE6?

ответ

0

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

Может быть, считают сельдерей для него - http://www.celeryproject.org/ (Так как вы используете Jelastic, вы хотели бы знать, что это может быть установлен на Jelastic VDS)

+0

Спасибо большое, я буду смотреть в него. Что-то важное Я забыл упомянуть, что процесс должен быть синхронизирован: клиент отправляет запрос на сравнение изображений, задачи отправляются нескольким работникам, результаты объединяются и немедленно отправляются обратно клиенту. Можно ли это сделать с сельдереем? – ZouBi

+0

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

Смежные вопросы