Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理成千上万的背景工作?_Java_Algorithm_Quartz Scheduler - Fatal编程技术网

Java 如何处理成千上万的背景工作?

Java 如何处理成千上万的背景工作?,java,algorithm,quartz-scheduler,Java,Algorithm,Quartz Scheduler,我们使用quartz作为后台服务器,其目的是通过应用一些业务规则系统地聚合数据。从本质上说,我们有三个背景工作,可以激发更多的工作。因为我们是一个SaaS应用程序,所以我们有多个租户,所以我们最终得到了(租户数量*(3+m*n))个工作。由于业务限制,我们要求每小时聚合一次触发器,因此这些触发器在十个线程上触发,并且触发器无限期重复。请注意,一旦在服务器启动时启动这些作业,它们将保持一致,即不会出现新作业。因此,最终的就业人数如上所述 每个作业都会到达数据库,其中一些作业也可能需要一秒钟以上的时

我们使用quartz作为后台服务器,其目的是通过应用一些业务规则系统地聚合数据。从本质上说,我们有三个背景工作,可以激发更多的工作。因为我们是一个SaaS应用程序,所以我们有多个租户,所以我们最终得到了(租户数量*(3+m*n))个工作。由于业务限制,我们要求每小时聚合一次触发器,因此这些触发器在十个线程上触发,并且触发器无限期重复。请注意,一旦在服务器启动时启动这些作业,它们将保持一致,即不会出现新作业。因此,最终的就业人数如上所述

每个作业都会到达数据库,其中一些作业也可能需要一秒钟以上的时间

你们中有谁能建议最好的方法来扩大规模吗。我们可以考虑重构代码,而且这个代码更多的是PoC,我们真的需要缩放!!!p> ----------------------编辑----------------------
从迄今收到的答复来看,我想使问题更加简洁。我们遵循这种方法,即使用10个线程,在服务器启动时安排多个quartz作业,并无限期地触发它们每小时运行一次。这里有没有任何成员建议如何以更有效的方式处理此类问题,quartz scheduler是最佳方法还是使用其他工具/框架,可能是Spring batch…

您需要解雇这么多工作?你不能解雇一个反过来调用你的
m
任务或
m*n
任务的工作吗?如果您可以组合这些任务,您可能会发现您可以更有效地使用资源。不,这些作业都是在服务器启动期间创建的。每项工作都代表一项每小时必须定期完成的任务。因此,当前的设计会一次又一次地创建这些任务,因此您可以创建每小时运行的nm任务。为什么不让一个作业每小时运行一次以执行nm任务?您不应该将每个作业作为单个线程启动。将它们分组并在几个线程中启动。