Spring 由于内存缓存导致启动休息端点结果不一致?
Spring boot rest endpoint result inconsistent because of in memory caching?
我在 AWS FARGATE 上的 4 个 ECS 实例上部署了 Spring 启动应用程序。 (我是新手。)
在我的应用程序中,内存缓存中有纯 java。
假设我使用 /putdata 放置数据并使用 /getdata 获取数据
当我点击 /getdata 时,有时 returns 结果有时没有。
是否有可能我的 /putdata 进入了 4 个实例之一,并且只有内存缓存中有该数据,其他 3 个实例没有?
或者我的 spring 引导对象状态在所有 4 个实例上保持同步?
综上所述,rest 请求是否落在不同的 ECS 容器上,如果下次落在其他 ECS 实例上,行为可能会有所不同?
为此,您需要一个集中缓存服务器并将所有 ECS instance/spring 引导应用程序指向该缓存服务器。
您可以使用 AWS 的托管缓存服务器 (ElsticCache),它完全由 AWS 管理,或者您需要旋转一些 EC2 实例并在其中安装一些分布式缓存服务器。这些是您可以尝试的几个 Hazelcast、Redis、Apache Ignite 等
我建议使用 AWS ElasticCache(Redis),这样您就不必管理任何东西。祝你好运。
我在 AWS FARGATE 上的 4 个 ECS 实例上部署了 Spring 启动应用程序。 (我是新手。)
在我的应用程序中,内存缓存中有纯 java。
假设我使用 /putdata 放置数据并使用 /getdata 获取数据
当我点击 /getdata 时,有时 returns 结果有时没有。
是否有可能我的 /putdata 进入了 4 个实例之一,并且只有内存缓存中有该数据,其他 3 个实例没有?
或者我的 spring 引导对象状态在所有 4 个实例上保持同步?
综上所述,rest 请求是否落在不同的 ECS 容器上,如果下次落在其他 ECS 实例上,行为可能会有所不同?
为此,您需要一个集中缓存服务器并将所有 ECS instance/spring 引导应用程序指向该缓存服务器。
您可以使用 AWS 的托管缓存服务器 (ElsticCache),它完全由 AWS 管理,或者您需要旋转一些 EC2 实例并在其中安装一些分布式缓存服务器。这些是您可以尝试的几个 Hazelcast、Redis、Apache Ignite 等
我建议使用 AWS ElasticCache(Redis),这样您就不必管理任何东西。祝你好运。