我在Amazon AWS云中运行了一个Java / Spring应用程序。 我的服务器实例正在使用负载平衡,并使用Tomcat应用程序服务器运行Linus OS的相同映像。 它们还作为共享文件系统(s3fs)和RDS数据库连接到S3。
我担心的是确保不同应用程序的状态是同步的。今天,同步点是数据库,但是当需要内存缓存时,会出现不同步问题。
我想要使用的解决方案是在应用程序之间建立消息传递系统。由于特定原因,我无法使用Amazon SQS服务,那么JMS似乎符合我的需求。经过一番阅读,HornetQ似乎也是一个非常好的实现。应用程序状态更改后,它会将更改传递给所有其他应用程序。每个应用程序都是同一队列的生产者和使用者。
由于我们处于自动创建和删除服务器和IP的动态系统中,因此实例的自动发现似乎是最佳解决方案。
但在AWS中,广播是不可能的!
对于HornetQ,我看到了另外一种使用JGroups的工作。但对我来说,这是第二个调查和学习的框架。两次工作。而且不再是开箱即用的解决方案。
你有什么看法?有没有人已经为类似需求构建解决方案? 也许存在其他开箱即用的解决方案?提前感谢您的回答!
答案 0 :(得分:2)
根据我的经验,你可以尝试使用TCPGOSSIP,这是一个HornetQ配置。 见https://docs.jboss.org/jbossclustering/cluster_guide/5.1/html/jgroups.chapt.html