一、CDN简介

CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络,这个概念始于1996年,是美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。为了能在传统IP网上发布丰富的宽带媒体内容,他们提出在现有互联网基础上建立一个内容分发平台专门为网站提供服务,并于1999年成立了专门的CDN服务公司,为Yahoo提供专业服务。由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。 --摘自百度百科

二、通俗易懂理解CDN

看了上面的话不知道 CDN 用来干啥的?不要紧,这不是有小二在吗。小二这就给小伙伴们娓娓道来。

先不说 CDN,相信小伙伴们都在京东自营店买过东西吧,要是没有的话扣 1 哈。

CDN 加速 架构 cdn加速业务_服务器

相信用过京东自营的小伙伴都知道,购买的商品基本隔天就到我们手中,这是为啥呢?

细心的小伙伴都可以看到发货地址都离自己很近,京东将商品存储在全国的八个大仓库里面,当我们从就京东自营店购买一个商品,那么京东会从离你最近的仓库发货,就近发货减少了道路的拥堵和长距离运输,基本隔天就能收到商品,速度非常的快,再也不用漫长的等待。

那么我们访问一个网站时,如果站点服务器是在广州,而访问的用户在北京,那么不同时间段的运营商网络状态和经过长距离的网络传输,访问速度会变慢,那么访问网站时有没有办法类似京东买商品可以快速到货呢,当然有,解决办法之一就是 CDN。

所以说人话, CDN 就是一个你的网站缓存, 而 CDN 节点就类似京东在全国的八大仓库,提前把网站内容存到了 CDN 节点,然后每个请求网站的用户从就近节点获取网站数据,大大减短了网络的长距离传输和网络拥堵的状况下的访问速度,类似下图的效果。

CDN 加速 架构 cdn加速业务_负载均衡_02

同时不同 CDN 服务商还会针对电信、移动、联通等网络专门设置 CDN 节点,减少网络服务商之间的切换。

三、CDN的好处

  • 隐藏服务器源ip。
  • 连接所响应速度最快的节点提高访问速度。
  • CDN节点缓存减少网站服务器访问压力。

四、CDN原理解析

因为小二是程序猿嘛,所以肯定要扯一扯 CDN 原理的。以我的域名 itwxe.com 为例看看一个请求走的解析路线,目前我的解析服务商是 DNSPod,CDN 使用的是百度云加速。

不使用 CDN 时

CDN 加速 架构 cdn加速业务_网络_03

  1. 用户输入访问的域名 itwxe.com,操作系统向 LocalDNS 查询域名的 IP 地址。
  2. LocalDNS 向 RootDNS 查询域名的授权服务器 (这里假设 LocalDNS 缓存过期)。
  3. RootDNS 将域名授权 DNS 记录返回给 LocalDNS,我的是 DNSPod。
  4. LocalDNS 得到域名的授权 DNS 记录后,继续向域名授权 DNS (DNSPod)查询域名的 IP 地址。
  5. 域名授权 DNS (DNSPod)查询域名记录后,返回给 LocalDNS。
  6. LocalDNS 将得到的域名映射的 IP 地址,返回给用户端。
  7. 用户端得到域名 IP 地址后,访问站点服务器。
  8. 站点服务器接收请求,将内容返回给客户端。

使用 CDN 时

CDN 加速 架构 cdn加速业务_负载均衡_04

  1. 用户输入访问的域名 itwxe.com,操作系统向 LocalDNS 查询域名的 IP 地址。
  2. LocalDNS 向 RootDNS 查询域名的授权服务器 (这里假设 LocalDNS 缓存过期)。
  3. RootDNS 将域名授权 DNS 记录返回给 LocalDNS,我的是 DNSPod。
  4. LocalDNS 得到域名的授权 DNS 记录后,继续向域名授权 DNS (DNSPod)查询域名的 IP 地址。
  5. 域名授权 DNS (DNSPod)查询域名记录后(一般是CNAME,例如我的是itwxe.com.cname.yunjiasu-cdn.net.),返回给 LocalDNS。
  6. LocalDNS 得到域名记录后,向智能调度 DNS 查询域名的 IP 地址。
  7. 智能调度 DNS 根据一定的算法和策略,将最适合的 CDN 节点 IP 地址返回给 LocalDNS。
  8. LocalDNS 将得到的域名 IP 地址,返回给用户端。
  9. 用户得到域名 IP 地址后,访问站点服务器。
  10. 站点服务器接收请求,将内容返回给客户端。

使用 dig 命令可以看到请求的 cname 地址和 最终访问的 CDN 节点 IP,如下图访问我的博客访问的节点。

CDN 加速 架构 cdn加速业务_CDN 加速 架构_05