我有一个使用redis进行缓存的应用程序,到目前为止效果很好。但是,我们需要将我们的应用程序传播到不同的区域(通过用户位置通过动态DNS调度程序,本地用户可以访问最近的服务器)。 考虑到网络限制和带宽,它不可能构建集中式redis。所以我们必须为不同的区域分配不同的redis。所以这里的问题是我们如何处理漫游案例。用户在位置1打开应用程序,同时继续使用位置2中的应用程序,而不会错过位置1中的缓存。
答案 0 :(得分:2)
您必须使用分层架构。这就是大多数CDN如Akamai或Amazon Cloudfront的工作方式。 简而言之,这就是它的工作原理:
请求对象时,查看它是否存在于为位置L1分配的redis缓存服务器S1中。
如果在S1中不存在,请检查它是否存在于其他位置的缓存服务器中,即S2,S3 .... SN。
如果在S2 ... SN中找到,也将对象存储在S1中,并提供对象。
如果在S2 ... SN中也找不到,请从后端获取新鲜对象,然后存储在S1中。
如果您使用memcached进行缓存,那么facebook的开源mcrouter项目将有所帮助,因为它会进行集中缓存。