Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

使用两层 CDN 解决 CDN 超时洪峰问题

  之前有介绍过把 API 数据也放 CDN 上的做法。这种做法虽然可以挡掉很大一部分流量,但依然有一个潜在的风险。由于 API 上 CDN 无法像静态资源那样设置一个长期缓存,我们只能为资源过期设置一个较短的时间,而如果资源过期的瞬间恰好遇上洪峰,服务器依然可能被打爆。
  对于秒杀这种精心挑选时间的业务而言,如果所有资源只有一份过期时间的话,资源同时过期是非常有可能的。为了避免这种问题,我的一个方案是使用两层 CDN。
  外层 CDN 回源到内层 CDN,内层 CDN 直接回到源站。但如果只是简单地这样处理并没有解决什么问题,因为外层 CDN 失效后,如果内层 CDN 上没有缓存,那么所有流量就会直接打到源站上。所以这两层 CDN 的缓冲时间不能是一样长的,而且内层 CDN 要有办法在缓存超时后自动更新。因此我们的内层 CDN 不仅作为外层 CDN 的源站,还直接接收终端访问。
  
  我们让大部分用户访问到外层 CDN,只有少部分用户会直接访问到内层 CDN,这么做的目的就是让内层 CDN 可以自己更新失效的缓存,无需等到外层 CDN 失效后流量涌进来了再去更新。具体的策略可以在前端逻辑中实现(推荐),也可以使用 DNS 轮询的优先级实现(需要考虑 DNS 缓存)。然后两个 CDN 的超时设置为一对不要太接近且互质的秒数,这样可以尽可能地避免冲突。
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^