3

我有一个在 Amazon AWS 云中运行的 Java/Spring 应用程序。我的服务器实例正在使用负载平衡,并使用 Tomcat 应用程序服务器运行相同的 Linus OS 映像。它们还作为共享文件系统 (s3fs) 和 RDS 数据库连接到 S3。

我关心的是确保不同应用程序的状态是同步的。今天,同步的重点是数据库,但是当需要内存缓存时,就会出现不同步的问题。

我想使用的解决方案是在应用程序之间建立一个消息传递系统。由于特定原因,我无法使用 Amazon SQS 服务,那么 JMS 似乎适合我的需求。经过一番阅读,HornetQ 似乎也是一个很好的实现。一旦应用程序状态更改,它会将更改传达给所有其他应用程序。每个应用程序都是同一队列的生产者和消费者。

由于我们处于一个自动创建和删除服务器和 IP 的动态系统中,因此自动发现实例似乎是最好的解决方案。

但是在 AWS 中,广播是不可能的!

对于 HornetQ,我看到了一种额外使用 JGroups 的工作。但对我来说,这是第二个调查和学习的框架。工作的两倍。不再是开箱即用的解决方案。

你有什么意见?是否有人已经为类似需求构建了解决方案?也许存在其他开箱即用的解决方案?

提前感谢您的回答!

4

1 回答 1

2

根据我的经验,您可以尝试使用 TCPGOSSIP,这是一个 HornetQ 配置。见https://docs.jboss.org/jbossclustering/cluster_guide/5.1/html/jgroups.chapt.html

于 2016-12-20T10:06:19.253 回答