Java 如何处理成千上万的背景工作?
我们使用quartz作为后台服务器,其目的是通过应用一些业务规则系统地聚合数据。从本质上说,我们有三个背景工作,可以激发更多的工作。因为我们是一个SaaS应用程序,所以我们有多个租户,所以我们最终得到了(租户数量*(3+m*n))个工作。由于业务限制,我们要求每小时聚合一次触发器,因此这些触发器在十个线程上触发,并且触发器无限期重复。请注意,一旦在服务器启动时启动这些作业,它们将保持一致,即不会出现新作业。因此,最终的就业人数如上所述 每个作业都会到达数据库,其中一些作业也可能需要一秒钟以上的时间 你们中有谁能建议最好的方法来扩大规模吗。我们可以考虑重构代码,而且这个代码更多的是PoC,我们真的需要缩放!!!p> ----------------------编辑----------------------Java 如何处理成千上万的背景工作?,java,algorithm,quartz-scheduler,Java,Algorithm,Quartz Scheduler,我们使用quartz作为后台服务器,其目的是通过应用一些业务规则系统地聚合数据。从本质上说,我们有三个背景工作,可以激发更多的工作。因为我们是一个SaaS应用程序,所以我们有多个租户,所以我们最终得到了(租户数量*(3+m*n))个工作。由于业务限制,我们要求每小时聚合一次触发器,因此这些触发器在十个线程上触发,并且触发器无限期重复。请注意,一旦在服务器启动时启动这些作业,它们将保持一致,即不会出现新作业。因此,最终的就业人数如上所述 每个作业都会到达数据库,其中一些作业也可能需要一秒钟以上的时
从迄今收到的答复来看,我想使问题更加简洁。我们遵循这种方法,即使用10个线程,在服务器启动时安排多个quartz作业,并无限期地触发它们每小时运行一次。这里有没有任何成员建议如何以更有效的方式处理此类问题,quartz scheduler是最佳方法还是使用其他工具/框架,可能是Spring batch…您需要解雇这么多工作?你不能解雇一个反过来调用你的
m
任务或m*n
任务的工作吗?如果您可以组合这些任务,您可能会发现您可以更有效地使用资源。不,这些作业都是在服务器启动期间创建的。每项工作都代表一项每小时必须定期完成的任务。因此,当前的设计会一次又一次地创建这些任务,因此您可以创建每小时运行的nm任务。为什么不让一个作业每小时运行一次以执行nm任务?您不应该将每个作业作为单个线程启动。将它们分组并在几个线程中启动。