我们有一个分布式架构,我们的应用程序在四个 Tomcat 实例上运行。我想知道可用于在这些 Tomcat 实例之间进行通信的各种选项。
详细信息:假设用户发送停止侦听传入队列的请求,这需要与其他 Tomcat 实例进行通信,以便它们也停止侦听器。如何跨 Tomcat 进行这种通信?
谢谢, 米顿
我们有一个分布式架构,我们的应用程序在四个 Tomcat 实例上运行。我想知道可用于在这些 Tomcat 实例之间进行通信的各种选项。
详细信息:假设用户发送停止侦听传入队列的请求,这需要与其他 Tomcat 实例进行通信,以便它们也停止侦听器。如何跨 Tomcat 进行这种通信?
谢谢, 米顿
看起来你正面临协调问题。
我建议您使用Apache ZooKeeper来解决此类问题。考虑将您的配置放入 ZooKeeper。ZooKeeper 允许您监视更改,如果 ZooKeeper 中的配置发生更改,则将通知 tomcat 实例,并且您可以调整应用程序在每个节点上的行为。
不过,您可以使用任何类型的外部持久存储来解决此问题。
其他可能的方法是自己实现 tomcat 节点之间的通信,但在这种情况下,您将在管理部署拓扑时遇到问题:每个 tomcat 节点都应该知道集群中的其他节点。
我们在这种情况下使用Hazelcast 。他们有一个方便的Http Session Clustering
表面上是 RMI,HTTP 请求。同样,恕我直言,您可以尝试使用 MBean。还有一件事,你可以使用一些非java相关的东西,比如DBus之类的,甚至是平面文件……如果所有的tomcat都在同一台机器上运行。很多选择...