使用EJB在多个服务器上并行化进程

时间:2014-04-23 06:37:15

标签: java-ee glassfish ejb

我正在使用Glassfish 3.1和JEE6。我想要做的是在多个服务器上并行化长CPU过程。 如果举例来说,我有1000个图像和10个服务器,我希望每个服务器处理100个图像并将结果返回给“主”。

我的第一个想法是在每个请求中,我从每个服务器调用远程EJB(异步),并将图像作为参数处理并等待结果。是否可以为不同的机器调用相同的远程EJB? 这个方法的问题是我必须手动设置所有服务器的列表。如果我想删除或添加一个,我必须再次部署该应用程序。我想用更动态的方法。

使用JMS可能是个更好的主意吗?如果是这样,怎么办?主服务器创建一个队列,每个“工作”计算机都可以访问此队列。主人不需要知道每个“工人”机器的ip。问题是,主人不知道有多少工人,以及他有多少部分需要拆分图像来处理......

其他想法是使用Hadoop,但我对它一无所知......

我想从您那里获得一些建议,在JEE6应用程序中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您的架构会将工作推送给每个工作人员。通常,最好将工作添加到队列中,并让工作人员在每次完成任务时从队列中拉出。

也许考虑Celery - http://www.celeryproject.org/(因为您使用的是Jelastic,您可能想知道这可以安装在Jelastic VDS上)