gpt4 book ai didi

java - 集群感知 Tomcat Web 应用程序

转载 作者:行者123 更新时间:2023-11-28 22:03:13 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

"Only one node will fire the job for each firing. ... It won't necessarily be the same node each time - it will more or less be random which node runs it. The load balancing mechanism is near-random for busy schedulers (lots of triggers) but favors the same node for non-busy (e.g. few triggers) schedulers."

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

"Fail-over occurs when one of the nodes fails while in the midst of executing one or more jobs. When a node fails, the other nodes detect the condition and identify the jobs in the database that were in progress within the failed node."

关于java - 集群感知 Tomcat Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com