Synchronization 如何扩展具有守护进程任务的应用程序服务器?
我现在有一个在一台服务器上运行的web应用程序。我想切换到应用服务器集群(jetty),以处理增加的负载和故障切换。但是,应用程序有两个守护进程线程,每10分钟运行一次,以处理传入的数据。此数据只能处理一次(它与外部服务器通信,如果处理两次,就会发生不好的事情) 扩展该功能的最佳实践是什么 我的一些选择是:Synchronization 如何扩展具有守护进程任务的应用程序服务器?,synchronization,jetty,scalability,daemon,Synchronization,Jetty,Scalability,Daemon,我现在有一个在一台服务器上运行的web应用程序。我想切换到应用服务器集群(jetty),以处理增加的负载和故障切换。但是,应用程序有两个守护进程线程,每10分钟运行一次,以处理传入的数据。此数据只能处理一次(它与外部服务器通信,如果处理两次,就会发生不好的事情) 扩展该功能的最佳实践是什么 我的一些选择是: 具有应用程序是否应运行守护进程任务的标志。然后只有其中一个标志设置为true。这是可行的,但这意味着我不再具有简单的故障切换功能——我需要监视那个特殊的应用程序服务器,并在它出现故障时采取措
这种情况通常是如何处理的?您可以使用Quartz来安排任务,它已经做到了 除了在Quartz中安排任务外,还必须使用Quartz的模式创建一个数据库(或使用现有数据库)。群集中的所有服务器都必须同步它们的时间(ntpd将这样做)
使用Quartz将为您提供故障转移、负载平衡和保证每个任务只执行一次的功能。为什么不使用数据库进行协调?任何具有空闲周期的节点都可以在作业表中插入“进行中”行以锁定其他节点。这利用了一个事实,即您可能已经在所有节点中依赖于一个数据库,该数据库内置了事务管理 您需要设计一个简单的计时算法,以确保所有节点不会每十分钟同时醒来并争夺锁。可能会引入0-10秒的随机延迟