【问题标题】:Cluster-aware Tomcat web application集群感知 Tomcat Web 应用程序
【发布时间】:2013-05-31 14:07:00
【问题描述】:

我相信这个任务没有太大的异国情调,但由于缺乏集群经验,我觉得很难找到答案。
我们的网络应用程序按计划执行一些后台操作(数据查询和传输)。 现在,运行它的 Tomcat 服务器已集群化。我们只需要集群中的一个实例来执行这些后台操作,而不是全部。
我看到以下选项:

  • 理想的解决方案是集群的主/从模型,其中 Tomcat 的从属实例使我们的应用程序处于非活动状态(未部署)。如果从机成为主机,应用程序将被部署并开始工作。是否可以 ?

  • 如果没有,那么我们需要一些可以实现侦听器的通知/事件,以便了解某个节点何时启动/关闭。然后,我们将以编程方式使第一个提升节点中的应用程序成为主节点,并阻止其他(从)节点中不需要的进程。此外,我们将监听来自节点的启动/关闭事件,以始终保持一个活动的主节点。我一直在 Tomcat 中寻找这样的事件 API,但到目前为止还没有运气。

有没有人有这样的任务经验?你是怎么解决的?
谢谢你。

【问题讨论】:

  • 你能修改一下文本吗?有点难理解

标签: java tomcat cluster-computing


【解决方案1】:

我不知道Tomcat集群中是否有主从行为设置,因为我认为所有节点都需要相等。但是使用Quartz Clustering with JDBC-JobStore 呢?您可以在共享数据库中定义任务,如果触发了任务,则第一个可用节点将执行它。因此,集群中的所有节点都将具有相同的行为,而一次只有一个节点会执行相同的任务:

“每次触发时只有一个节点会触发作业。...不一定每次都是同一个节点 - 哪个节点运行它或多或少是随机的。负载平衡机制是近乎随机的对于繁忙的调度程序(很多触发器),但对非繁忙(例如,很少触发器)调度程序有利于相同的节点。”

如果一个节点在执行任务时失败,下一个可用节点将重试:

“当一个节点在执行一个或多个作业的过程中发生故障时,就会发生故障转移。当一个节点发生故障时,其他节点会检测到该条件并识别数据库中在故障范围内正在进行的作业节点。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多