3

我在任何地方的 JBoss 文档中都找不到这个,所以在这里问。

多个集群 JBoss 实例能否访问和共享同一个 TIMERS 表(由 EJB2 定时器服务使用)而不互相干扰,或者每个实例都需要自己的表吗?

在集群的情况下,集群中的节点是否都必须能够访问 TIMERS 表,或者它们是否直接通过网络共享信息?

提前感谢您的澄清!

富有的

4

1 回答 1

1

这是一个老问题,但也许它对某人仍然有用,所以我会尝试回答它。

假设同一个 Timers 表可以在不在集群中执行的不同服务器之间共享(实际上我认为这是可能的),就会出现与 TimerService 实现相关的几个问题,例如:假设每个服务器都部署了相同的 Timer,将每个 Timer 的实例与此表上的不同记录相关联吗?如果是这样,当 Timers 过期时,业务逻辑将被执行多次。如果部署过程只为每个 Timer 生成一条记录,那么当不同的 TimerService 尝试同时访问/修改相同的信息时,TimerService 是否正确执行?

另一方面,如果这个想法背后的动机是为了实现某种容错,仍然存在你的所有服务器必须部署相同的 Timer 的问题,否则 TimerService 可以尝试执行未部署的 Timer服务器。

提供高可用性的解决方案已经实现,称为 HATimerService。

在一个集群中只有一个Table,但不同的是每次存在唯一一个活跃的TimerService,当执行TimerService的节点发生故障时,另一个节点成为master,因此节点之间不存在定时器信息交换。信息在数据库中可用

于 2013-07-06T22:45:21.567 回答