cdn 有什么用?怎么选择 cdn 使用


cdn 有什么用?怎么选择 cdn 使用

文章插图
 
如果说访问量上升对网站性能有很大考验 , 那突发事件 , 则是检验网站架构的试金石 。从某 L 和某 G 谈恋爱 , 至某 W 和某 M 离婚 , 到某 F 和某 Z“官宣“事件 , 都导致某 SNS 网站宕机崩溃 , 无法为广大网民提供正常服务 。互联网圈有一句比较有名谜之反问:
你的网站能承受几个明星出轨?
由此可见 , 想做好一个网站 , 远远没有看起来那么简单 。
无论你将 WEB 前端进行何种方式的优化 , 是页面动静分离?各种文件压缩算法?还是将 Web Server 从老牌 Apache 换成性能之王 Nginx(以及其变种)?在绝对的访问量面前 , 一切都变得脆弱无比 , 不堪一击!更可怕的是 , 除了热点爆料会导致海量、合法的用户访问请求 , 还有隐藏在暗处的黑客们源源不断发起的各种 DDoS/HTTP Flood 攻击 , 这些都会分分钟让你的网站瞬间瘫痪 。无论是合法的 , 还是非法的 , 这些流量就像一支庞然大军 , 具有摧枯拉朽的绝对实力 。
因此 , 在互联网+追求合作共赢的时代 , 热门网站更加需要专业团队的安全保障 。安全防护类产品可在网站前面砌起一座城墙 , 将流量大军挡在城门之外 , 同时将被访问网站的真实服务器隐藏起来 , 只接受少量、合法的流量的请求访问 。专业团队固然能够提供 DDoS/CC/WAF 等各种防护手段来过滤异常流量 , 但这不是我们今天的主题 , 我们要说的 , 是在防护的同时对网站的优化手段:CDN 缓存优化 。
首先让我们来看一张 CDN 的整体架构图:
cdn 有什么用?怎么选择 cdn 使用

文章插图
 
我们知道 , 对网站请求返回的文件 , 有动态文件和静态文件两类 。所谓静态文件 , 具有一个特点 , 有点类似数学中“幂等”的概念 。请求静态文件好比掷骰子 , 每次都能掷到六点 。而请求动态文件 , 则不然 , 这次掷到六点 , 下次可能是五点 , 也可能是一点 。所以 , 对于静态文件 , 只要在 Web Server 上不更新 , 在响应同样的请求时(主要是 HTTP GET 请求) , 不管请求多少次 , 都会返回一样的文件内容 。动态文件则反之 , 对于每个请求(HTTP GET/POST) , 都可能会返回不一样的文件内容 。Web Server 返回的图片 , 文档 , 点播视频 , 一般都是静态文件 , 而像 html , php , jsp 文件 , 一般都是动态文件 。
静态文件都可以被 CDN 系统缓存下来 , 甚至某些动态文件 , 也可以在很短时间(比如 1 秒内)将其看成是静态的 , 从而缓存下来 。一旦这些文件被缓存到 CDN 系统中 , 那流量大军期望通过攻击这些文件从而达到使网站宕机的目的 , 难度将大大提升 , 甚至毫无希望!
cdn 有什么用?怎么选择 cdn 使用

文章插图
 
我们知道 , CDN 系统是分布式的 。就拿云防护来说 , 我们在全国各地都部署了缓存节点 , 每个节点都有同一份文件的拷贝 , 流量通过智能 DNS 系统调度 , 用户会优先访问距离自己最近的缓存文件 , 从而得到想获取的内容 。这样 , 从全国各地发起集中涌现到源站的突增流量 , 就被分散到了各地的分布式节点上 。在文件过期之前 , Web Server 甚至不会感知到这些访问请求 。这就好比 , 静态文件真身坐镇大本营 , 各分身负责接待这些流量小分队 。当分身能正常分发给访客时 , 其真身可以高枕无忧 。
但这并不是万无一失的完美解决方案 , 我们还需要考虑到缓存文件会过期的可能性 。这就好比 , 我们的真身在一段时间后(从几分钟到几天不等) , 任期结束了 , 换了一位新的继任者 。此时 , CDN 缓存节点需要重新向 Web Server 重新发起请求 , 获取新文件 , 生成新的分身 。另外 , 当网站刚接入 CDN 缓存系统时 , 也是需要向 Web Server 发起请求拷贝文件的 。此时此刻 , 如果有流量部队刚好“造访” , CDN 缓存节点没法直接响应 , 只能将流量导向 Web Server , 在这短暂的瞬间 , Web Server 中的真身会被暴露 , 其可能会被打垮!


推荐阅读