请告知我,我对此以下情况感到困惑,可以说有一个客户端将请求发送到Apache服务器。
另一方面,有两个tomcat服务器在集群中的不同端口上并行运行,并且在两个tomcat服务器上都部署了相同的war文件。
现在的问题是,如果客户端将请求发送到apache服务器并且apache服务器将请求发送到第一个tomcat并且写入第一个tomcat缓存然后第一个tomcat在写入后关闭缓存。
然后来自客户端的第二个请求再次进入apache服务器,然后apache服务器将其重定向为两秒tomcat,因为第一个tomcat已关闭,它还将第一个tomcat的缓存发送到第二个tomcat请告知我们如何才能实现这种情况,
目的是即使第一个tomcat发生故障,我也不希望应用程序遭受损失。而且我正在寻找可以在tomcat中发生的最佳聚类,因为我期待来自终端客户端的大量流量
答案 0 :(得分:0)
查看分布式缓存。他们解决了这种挑战。
选项包括:
Bozho's tech blog有一个很好的当前概述。你可能想读它。
<强>更新强>
您面临的挑战是,缓存数据需要对所有Tomcat实例可用,并且如果在多个Tomcat实例上修改和查询缓存数据,则需要保持一致。
这正是这些分布式缓存提供的内容:
他们将修改后的数据写入共享存储或将其发送到其他实例,以便在需要时可供其他实例使用。
它们保持分布式数据的一致性,以便没有Tomcat实例使用过时数据或以破坏一致性的方式修改它。
分布式缓存通常使用两阶段概念,其中一些数据保存在内存中,一切都保存在磁盘上。
因此,通过使用分布式cahce,您的第二个Tomcat实例可以在实例发生故障时为第一个实例的客户端提供服务。