内容分发(Content Delivery Network,CDN)

概念

CDN=更智能的镜像+缓存+流量导流。

内容分发网络(英语:Content Delivery Network或Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。 (From wiki)

阿里云内容分发网络CDN(Content Delivery Network)是建立并覆盖在承载网之上,由遍布全球的边缘节点服务器群组成的分布式网络。阿里云CDN能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。(From aliyun)

CDN分发,仅支持静态数据,不支持动态数据。

原理

image

  1. 当终端用户向www.aliyundoc.com下的指定资源发起请求时,首先向Local DNS(本地DNS)发起请求域名www.aliyundoc.com对应的IP。
  2. Local DNS检查缓存中是否有www.aliyundoc.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS请求域名www.aliyundoc.com的解析记录。
  3. 当网站授权DNS解析www.aliyundoc.com后,返回域名的CNAME www.aliyundoc.com.example.com。
  4. Local DNS向阿里云CDN的DNS调度系统请求域名www.aliyundoc.com.example.com的解析记录,阿里云CDN的DNS调度系统将为其分配最佳节点IP地址。
  5. Local DNS获取阿里云CDN的DNS调度系统返回的最佳节点IP地址。
  6. Local DNS将最佳节点IP地址返回给用户,用户获取到最佳节点IP地址。
  7. 用户向最佳节点IP地址发起对该资源的访问请求。
    • 如果该最佳节点已缓存该资源,则会将请求的资源直接返回给用户(步骤8),此时请求结束。
    • 如果该最佳节点未缓存该资源或者缓存的资源已经失效,则节点将会向源站发起对该资源的请求。获取源站资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户(步骤8),此时请求结束。
  8. CND由 缓存系统、调度系统、链路质量系统和支撑系统 这四大系统组成。
    image

    DNS服务

    要了解cdn就先要了解一下dns。当我们在浏览器中输入一个域名时,首先需要将域名转换为ip地址,再将ip地址转换为mac地址,这样才能在网络上找到该服务器。我们先不看ip转换mac地址的过程,先来看看是怎么将一个域名转换为ip的。

当我们向dns服务器发起解析域名的请求时,dns服务器首先会查询自己的缓存中有没有该域名,如果缓存中存在该域名,则可以直接返回ip地址。如果缓存中没有,服务器则会以递归的方式层层访问。例如,我们要访问www.baidu.com,首先我们会先向全球13个根服务器发起请求,询问com域名的地址,然后再向负责com域名的名称服务器发送请求,找到baidu.com,这样层层递归,最终找到我们需要的ip地址。

刷新和预热资源

刷新

把CDN所有节点上对应的缓存资源标记为失效,当用户再次请求时,CDN会直接回源站获取对应的资源并返回给用户,同时将资源重新缓存到CDN节点。刷新功能会降低缓存命中率。
CDN刷新缓存的 方式有三种:

  • URL刷新: 用户可以在刷新任务中提交含有正则表达式的URL,阿里云CDN会对匹配该正则表达式的所有URL进行批量刷新,这样可以更有针对性地刷新URL。
  • 目录刷新
  • URL预热

    预热

    源站主动将对应的资源缓存到CDN节点,当您首次请求资源时,即可直接从CDN节点获取到最新的资源,无需再回源站获取。预热功能会提高缓存命中率。

缓存方式

cdn中缓存了服务器上的部分资源。那么服务器怎么去更新cdn节点的缓存呢?这里有两种方式,

  • 一种是服务器主动去更新缓存,cdn节点被动接受。
  • 另一种方式是当用户请求的资源不存在时,cdn服务器向上游服务器发起请求,更新缓存,然后将数据返回给用户,
    这种方式是cdn服务器主动,源站服务器被动。

显然第一种方式存在很多问题,例如很容易产生404等,所以一般采用第二种缓存方式。

服务端控制台

OCSP Stapling

可实现由CDN预先缓存在线证书验证结果并下发给客户端,无需浏览器直接向CA站点查询证书状态,从而减少用户验证时间。

一些优势

  1. 体验方面,加速了网站的访问——用户与内容之间的物理距离缩短,用户的等待时间也得以缩短;分发至不同线路的缓存服务器,也让跨运营商之间的访问得以加速。
  2. 安全方面,内容进行分发后,源服务器的IP被隐藏,受到攻击的概率会大幅下降。而且,当某个服务器故障时,系统会调用临近的健康服务器,进行服务,避免对用户造成影响。
  3. 对运营商,能以存储换带宽——通过服务“下沉”,减轻上层骨干网络的流量压力,避免硬件扩容,降低网络建设成本。

内容分发网络节点会在多个地点,多个不同的网络上摆放。这些节点之间会动态的互相传输内容,对用户的下载行为优化,并借此减少内容供应者所需要的带宽成本,改善用户的下载速度,提高系统的稳定性。 内容分发网络所需要的节点数量随着需求而不同,依照所需要服务的对象大小,有可能有数万台服务器。

CDN分类

  • DCDN(Dynamic Route for Content Delivery Network):全速加速(DCDN)是在CDN加速的基础上升级的产品,智能区分访问的是动态还是静态,静态直接调用阿里云CDN加速,动态会通过协议优化等快速回源拉取内容数据。相比于CDN加速只能静态加速资源,DCDN可同时进行静态和动态的加速。
  • SCDN(Secure Content Delivery Network):SCDN是有安全防护的CDN服务,体现在能够提前预判外界攻击行为,将恶意请求切换到高防IP,无需人工操作,目的是通过数据清洗将恶意流量移除,而让真实用户正常打开页面,这样就可以做到智能加速和安全运行。
  • PCDN(P2P CDN):直播视频等业务适用,可有效降低成本,其它场景忽略。

ACP考试相关外延知识点

  • CDN实际产生的流量比应用层统计到的流量高7%-15% , 是由于会出现TCP重传,和TCP/IP包头的消耗。
  • Range回源,指DCDN节点在回源的HTTP请求里面携带了Range信息,源站在收到DCDN节点的回源请求时,根据HTTP请求头中的Range信息返回指定范围的内容数据给DCDN节点。Range回源可有效提高文件分发效率,可以提高缓存命中率,减少回源流量消耗和源站压力,并且提升资源响应速度。

背景补充

上世纪80年代,互联网技术刚刚走入民用领域。人们主要通过拨号来访问网络,带宽很低,用户也很少,所以,没有对骨干网以及服务器带来压力。随着互联网的爆炸式发展,用户越来越多,加上宽带接入网的出现,内容源服务器和骨干网络的压力越来越大,无法及时响应用户的访问需求。

1995年,麻省理工学院教授、互联网的发明者之一,Tim Berners-Lee博士发现,网络拥塞越来越严重,将会成为互联网发展的最大障碍。于是,他提出一个学术难题,希望有人能发明一种全新的、从根本上解决问题的方法,来实现互联网内容的无拥塞分发。 当时Tim Berners-Lee博士的隔壁,是Tom Leighton教授的办公室。他是一位麻省理工学院应用数学教授。Tom Leighton 他被Berners-Lee的挑战激起了兴趣,于是他请研究生Danny C. Lewin和其他几位顶级研究人员一起破解这个技术难题。

最终,他们开发了利用数学运算法则来处理内容的动态路由算法技术,有效地解决了这个难题。这个技术,就是CDN。他们还为此专门成立了公司,发挥其商业价值。这个公司,就是后来鼎鼎大名的CDN服务鼻祖——Akamai公司。

参考资料

阿里云官方文档
内容分发网络
到底什么是CDN?

-------------本文结束感谢您的阅读-------------