0

我有一个使用 redis 进行缓存的应用程序,到目前为止它运行良好。但是,我们需要将我们的应用程序分散到不同的区域(通过用户位置的动态 DNS 调度程序,本地用户可以访问最近的服务器)。考虑到网络限制和带宽,不太可能建立一个中心化的redis。所以我们要为不同的区域分配不同的redis。所以这里的问题是我们如何处理漫游情况。用户打开位置 1 中的应用程序,同时继续使用位置 2 中的应用程序,而不会丢失位置 1 中的缓存。

4

1 回答 1

2

您将不得不使用分层架构。这就是大多数 CDN(如 Akamai 或 Amazon Cloudfront)的工作方式。简单地说,这就是它的工作原理:

  1. 当请求一个对象时,查看它是否存在于分配给位置 L1 的 redis 缓存服务器 S1 中。

  2. 如果S1中不存在,则检查其他位置的缓存服务器中是否存在,即S2,S3....SN。

  3. 如果在 S2...SN 中找到,则将该对象也存储在 S1 中,并为该对象提供服务。

  4. 如果在 S2...SN 中也找不到,则从后端获取新鲜的对象,并存储在 S1 中。

如果您使用 memcached 进行缓存,那么 facebook 的开源mcrouter项目将有所帮助,因为它可以进行集中式缓存。

于 2015-12-09T10:32:08.840 回答