gpt4 book ai didi

java - 两个tomcat在故障情况下共享缓存并相互支持

转载 作者:行者123 更新时间:2023-11-28 23:16:36 24 4
gpt4 key购买 nike

请告知,因为我遇到了以下场景,假设有一个客户端将请求发送到 Apache 服务器。

集群的另一端有两台tomcat服务器并行运行在不同的端口上,并且在两台tomcat服务器上都部署了同一个war文件。

现在的问题是,假设客户端将请求发送到 apache 服务器,而 apache 服务器将请求发送到第一个 tomcat,并且在第一个 tomcat 缓存中写入,然后第一个 tomcat 在写入缓存后关闭。

然后来自客户端的第二个请求再次转到 apache 服务器,然后 apache 服务器将它重定向到两秒钟的 tomcat,因为第一个 tomcat 已关闭,它还将第一个 tomcat 的缓存发送到第二个 tomcat 请告知我们如何才能实现这种情况,

目的是即使第一个 tomcat 出现故障,我也不希望应用程序受到影响。而且我正在寻找可以在 tomcat 中发生的最佳集群,因为我期待来自最终客户端的大量流量

最佳答案

看看分布式缓存。他们解决了这类挑战。

选项是:

  • Ehcache/ Terracotta
  • Redis
  • 内存缓存
  • 淡褐色

Bozho's tech blog有一个很好的和当前的概述。您可能想阅读它。

更新

您面临的挑战是缓存数据需要对所有 Tomcat 实例可用,并且如果在多个 Tomcat 实例上修改和查询缓存数据需要保持一致。

这正是这些分布式缓存所提供的:

  1. 他们将修改后的数据写入共享存储或将其发送到其他实例,以便在需要时可供其他实例使用。

  2. 它们使分布式数据保持一致,因此没有 Tomcat 实例使用过时的数据或以破坏一致性的方式修改数据。

分布式缓存通常使用两阶段概念,其中一些数据保存在内存中,所有数据都保存在磁盘上。

因此,通过使用分布式缓存,您的第二个 Tomcat 实例可以为第一个实例的客户端提供服务,以防第一个实例出现故障。

关于java - 两个tomcat在故障情况下共享缓存并相互支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48599782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com