我们有一个 Web (Rails) 应用程序,管理员可以上传少量较大的 (1 - 10MB) 业务逻辑文件。内容文件不会频繁更改,大概每周一次。
当用户与应用程序交互时,另一个后端(Java)EC2 实例将频繁(每分钟多次)处理同一个(单个)文件的内容。
我正在考虑使用 S3 存储桶来存储文件,并使用 AWS SDK 来检索文件。
目标是使应用程序性能良好,并避免反复读取文件内容。如果对文件的更改不能立即显示,这是可以接受的,尽管这样会更好。
纯 S3 是这里的正确方法吗?我应该自己用 Java 实现缓存,从而阻止 S3 请求吗?还是应该在这里利用另一种 AWS 方法?
答案1
似乎内存缓存比较合适。我只是将其读入内存中的数据结构。例如,如果您有许多 GB 的数据不想存储在每个应用程序服务器的 RAM 中,则可以交替使用 memcached/redis 服务器。在 Java 内存中会更快。
您可以通过检查文件修改日期并与上次读取数据的日期进行比较,来检查每次访问数据时或者按照您要求的间隔访问时文件是否发生了更改。
从 S3 读取可能比从 EBS 卷读取慢,我真的没有看到任何优势。