Я использую Glassfish 3.1 и JEE6. То, что я хотел бы сделать, так распараллеливает длительный процесс процессора на нескольких серверах. Если на примере у меня 1000 изображений и 10 серверов, я бы хотел, чтобы каждый сервер обрабатывал 100 изображений и возвращал результаты «хозяину».Параллельный процесс на нескольких серверах с EJB
Моя первая мысль заключается в каждом запросе, я вызываю удаленный EJB (асинхронный) с каждого сервера с изображениями для обработки как параметра и жду результата. Можно ли вызвать для разных машин один и тот же удаленный EJB? Проблема с этим методом заключается в том, что я должен вручную установить список всех серверов. Если я хочу удалить или добавить один, я должен снова развернуть приложение. Я хотел бы использовать метод более динамичный.
Использование JMS может быть лучшей идеей? Если да, то как это сделать? Мастер создает очередь, и каждый «рабочий» компьютер может получить доступ к этой очереди. Мастер не должен знать ip каждой «рабочей» машины. Проблема в том, что мастер не знает, сколько рабочих есть и сколько частей у него есть, чтобы разделить изображения на процесс ...
Другая идея - использовать Hadoop, но я в основном ничего не знаю об этом ...
Я хотел бы получить от вас какой-либо совет, что это лучший способ сделать это в приложении JEE6?
Спасибо большое, я буду смотреть в него. Что-то важное Я забыл упомянуть, что процесс должен быть синхронизирован: клиент отправляет запрос на сравнение изображений, задачи отправляются нескольким работникам, результаты объединяются и немедленно отправляются обратно клиенту. Можно ли это сделать с сельдереем? – ZouBi
Сельдерей асинхронный, но это касается только распределения работы. Если рабочие доступны (достаточная запасная способность), они все равно должны быстро вернуть результаты. Я полагаю, что в любом случае вам понадобится клиенту на некоторое время (опрос, чтобы узнать, готов ли окончательный объединенный результат или им нужно подождать дольше). –