0

我们是否有来自quartz_scheduler 或spring 框架的任何支持来在应用程序服务器的所有克隆(实例)中运行计划作业?

在我的项目中,我们有 2 个应用程序服务器实例用于负载平衡。在使用单例 bean 创建服务器启动期间,我们将一些重要的细节存储在 JVM 的缓存内存中,当某些数据发生变化时,我们需要刷新缓存内存,而无需重新启动服务器。

如果石英调度程序在 server1 中运行,则缓存内存不会在 server2 中刷新,反之亦然。所以我需要一个永久解决这个问题的方法,我应该能够通过更新查询来控制工作。请帮忙

4

1 回答 1

0

如果您在集群配置中运行 Quartz,计划作业将仅在一个随机实例上运行。目前,您无法安排作业在集群中的所有节点上运行。另一方面,如果每个应用程序都运行独立的 Quartz 调度程序,那么它们彼此之间一无所知。因此,如果您在一个实例上安排作业,它将在完全相同的实例上运行。

您真正需要的不是分布式作业调度(我猜您正在调度一个作业以异步更新两个实例上的缓存),而是分布式缓存。这个想法是每次更新缓存时,更改都会自动复制到所有其他实例。Spring还通过@Cacheable注解提供了一些缓存抽象。

使用 RMI 复制、和许多其他工具查看他们做得更好。缓存和分发更改。

于 2012-08-27T16:48:03.663 回答