我们正在开发一个应用程序,它定期同步不同客户端的LDAP服务器与我们的数据库。此应用程序需要通过web门户访问。web用户将在此应用程序上创建、修改或删除计划任务。因此,我们将此应用程序作为web服务进行了开发。
现在,我们必须扩展此应用程序并确保高可用性。
该应用程序是运行在Tomcat上的基于Axis2的web服务。我们已经想到了httpd + mod_jk + tomcat的组合来实现负载均衡。问题是,如果出现修改/删除请求,那么它应该落在最初创建任务的同一个tomcat服务器上。但是,由于请求可能来自从不同ip地址访问web门户的不同web用户,所以我们不能具有相同的会话id (粘性会话)。
有什么解决方案吗?不同的架构?什么都行。
我们还考虑使用Quartz调度器api。该网站表示,它支持负载均衡和集群。有谁有使用Quartz处理此类场景的经验吗?
发布于 2014-05-20 10:44:17
如果您正在使用Quartz进行调度,那么可以使用数据库作为后盾(请参阅JDBCJobStore)。然后,您可以访问任何Tomcat服务器,并且调度将是集中的。我建议在返回给Axis服务的数据库中使用一个键,这样用户就可以在调用之间引用相同的数据。
或者,将数据库用作作业调度器,然后在Tomcat (任何位置)上运行任务,并将结果放入数据库中,这并不困难。如果作业的结果(例如它的状态)很小,这将很好地工作。
https://stackoverflow.com/questions/23678722
复制相似问题