Spring 由于内存缓存导致启动休息端点结果不一致?

Spring boot rest endpoint result inconsistent because of in memory caching?

我在 AWS FARGATE 上的 4 个 ECS 实例上部署了 Spring 启动应用程序。 (我是新手。)

在我的应用程序中,内存缓存中有纯 java。

假设我使用 /putdata 放置数据并使用 /getdata 获取数据

当我点击 /getdata 时,有时 returns 结果有时没有。

  1. 是否有可能我的 /putdata 进入了 4 个实例之一,并且只有内存缓存中有该数据,其他 3 个实例没有?

  2. 或者我的 spring 引导对象状态在所有 4 个实例上保持同步?

综上所述,rest 请求是否落在不同的 ECS 容器上,如果下次落在其他 ECS 实例上,行为可能会有所不同?

为此,您需要一个集中缓存服务器并将所有 ECS instance/spring 引导应用程序指向该缓存服务器。

您可以使用 A​​WS 的托管缓存服务器 (ElsticCache),它完全由 AWS 管理,或者您需要旋转一些 EC2 实例并在其中安装一些分布式缓存服务器。这些是您可以尝试的几个 Hazelcast、Redis、Apache Ignite 等

我建议使用 AWS ElasticCache(Redis),这样您就不必管理任何东西。祝你好运。