我正在开发一个 Web 应用程序,其中我在前端运行 Java,在后端运行 shell 脚本。该应用程序主要是关于分析许多文件,Java程序从用户那里获取输入,例如他们想要分析哪个文件,从哪个日期到他们想要分析的日期。假设用户提供7月1-8日的数据。我需要处理 8 天的文件。每天有大约 100 个文件需要处理。所以我的目标是让这个过程并行而不是顺序执行。对此我基本上有两个想法。我想和你分享这个,并得到你的建议。
计划 1:有一个 Java 程序(业务层),它使用流程构建器调用 shell 脚本。我可以将用户给定的日期(例如(1-8))拆分为 4 个线程,每个线程将执行两天的操作。例如(1-2)线程1和(3-4)线程2,它继续。如果我遵循这种方法,那么所有的优点和缺点是什么。还有如何通过这种方法在线程之间进行协调。
计划 2:从 Java 调用 shell 脚本并在 shell 脚本内部生成多个进程,正如我之前所说,我可以生成进程 1 来完成日期 (1-2) 和进程 2 (3-4) 的工作,然后就可以了在。这种方法的所有优点和缺点是什么。我正在将处理后的输出写入单个文件。因此,如果我有多个进程,如何让多个进程更新单个文件。
还有与我的问题相关的任何链接的任何参考
重要提示:正如我所说,我需要在 shell 脚本中每天处理 100 个日志文件,我的要求之一是不断更新我的前端环境,了解我在 shell 脚本中的作业状态(即第 1 天已完成) ,第 2 天已完成,依此类推。我知道我可以从 shell 脚本中回显,然后我可以从 Java 中获取值。但问题是,如果我在 shell 脚本中执行回显,在处理文件的循环中,我的调用将终止,我必须再次从 Java 回调。有关如何进行此更新的任何想法。