开头

这篇文章通过 FCC 上海线下和成都微信的分享,整理成文字稿顺便凑一下更新,考虑到吃瓜读者们不知道都了解到啥程度,以及我科普作者的身份(自己定的),我决定从入门到放弃的介绍一下,大致涉及:

由于每个地方都事无巨细讲起来非常费劲,费劲就容易跳票,而且会导致篇幅过长,所以其实都是科普向的,如果想要深入,在每个地方都会给出链接,可以进行针对性的深入阅读。

如果有说的不对的地方请各位大佬指摘,粗体部分为超链接。

什么是 CDN

从一个简单的栗子说起:

cdn相关知识总结(和大家科普一下什么是CDN)(1)

非洲农业不发达,人人都要金坷垃」——相信大家基本上都看过来自美国圣地亚哥的视频,美国人、非洲人和日本人在一起抢来抢去。如果金坷垃只在一个地方生产,那么非洲的运输成本和生产者的产能压力都很大。

那么很简单,我们在世界的每个需要金坷垃的国家都开代工厂,都生产金坷垃——我们的 CDN 就是生产金坷垃的公司,而一个个「节点」就是代工厂。

CDN,中文名叫做「内容分发网络」,它的作用是减少传播时延,找最近的节点,实际上,尽管互联网帮助我们实现了地球村,但是从中国到日本和从中国到台湾的时延仍旧是不一样的,这一点可以从 ping 和 traceroute 中看出。

CDN 的优点

访问加速

CDN 作为前端性能经典手段,相信大家已经无脑使用了,正如前面所说的,减少了时延,从很大程度上就能作为加速手段了。实际上,真正的 CDN 并不是前面举例的一个国家一个节点,甚至是一个运营商,一个省份乃至地区都会有节点。

cdn相关知识总结(和大家科普一下什么是CDN)(2)

减轻源站(服务器)负载

一个非常简单就能想明白的问题,如果 CDN 已经能帮我返回数据了,那么请求就不会到达源站,源站(服务器)的负载就减轻了。可以看看这篇文章(谈一谈腾讯云服务器被DDOS攻击解决办法)

访问原理

从我们发起请求,到到达 CDN 节点,到底经过了哪些东西,CDN 是怎么加速我们的请求的呢?

cdn相关知识总结(和大家科普一下什么是CDN)(3)

这张图也是我爱技术网从网上找来的。

首先我们在地址栏键入一个网址,浏览器发现本地没有关于这个网址的 DNS 缓存,所以向网站的 DNS 服务器发起请求。

网站的 DNS 服务器设置了 CNAME,指向了某个 CDN 服务器,也就是我们常见的阿里云、腾讯云、Cloudflare 之类的,去请求 CDN 中的智能 DNS 均衡负载系统。

均衡负载系统解析域名,把对用户响应最快的节点返回给用户,然后用户向该节点发出请求。

如果是第一次访问该内容,CDN 服务器会向源站请求数据并缓存,否则的话,直接在缓存节点中找到该数据,将请求结果发给用户。

对于最简单的 CDN 系统而言,只要一台 DNS 调度服务器和一个节点服务器即可,但在复杂的应用中,会存在多级缓存,多台 Cache 来协同工作。

,