跨服务器缓存失效

Cache invalidation across servers

我有 6 台 Web 服务器,由于缓存不一致,它们给我带来了问题。我正在考虑构建一个缓存失效服务,以便有一个主题,所有服务器都可以在该主题上发布消息以使对象失效。我正在考虑使用 Amazon SNS 来制作主题。

现在服务器接收无效消息,我对以下内容感到困惑:

  1. 我应该使用 SQS 队列让服务器接收消息吗?
  2. 我是否应该使用 HTTP 端点,然后在该路由上构建一个 api 使缓存无效。 您能否强调这两种方法或任何其他可能对我有益的方法的优缺点。

对于您的用例,http 端点是更好的解决方案。您将一条消息推送到 SNS,每个订阅的端点都将在您托管的新 api 端点上被调用,这会清除缓存。

SQS 在这里不是最佳用例 - 为了使用它,您需要有 6 个单独的队列(或每个服务器一个),并且您需要在每个队列上都有一个应用程序总是 运行 在后台检查新消息和 'pull' 消息 - http 端点是一个 'push' 操作,这就是你想要的。