我有一个实现 REST API 的 ECS,它可以执行一些相当繁重的计算,但可以从请求级别的缓存中获得大量收益(因为它会收到许多相同的请求)。
我目前已经在 ECS 映像本身上实现了缓存,但这并不是最佳的,因为缓存显然既不会在 ECS 任务之间共享,也不会在任务停止时永久存在。
那么,在 AWS 中解决这个问题的最佳方法是什么?我可以使用 Redis 集群或类似的东西并将其放在 ECS 集群前面吗?
答案1
你没有把 Redis在...前面ECS,但是你可以让你的 ECS 任务查询 Redis 缓存查看所需的结果是否存在。如果是,则将其返回给调用者,如果否,则计算结果,返回给调用者并将其存储到 Redis 以供下次使用。这是一个非常标准的模式,但需要 ECS 上运行的应用程序的支持 - 它需要知道如何与 Redis 通信。或者与 Memcache 通信(更简单,可能足以进行简单的缓存)。
或者你可以将你的 REST API 放在CloudFront CDN和启用缓存在这个层面上。如果操作正确,CloudFront 将识别类似的请求并立即返回缓存的响应,甚至无需联系 ECS。这可以是透明的,不需要应用程序支持。
希望有帮助:)