CDN优化

什么是CDN

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

CDN将源站资源缓存到遍布全球的CDN加速节点,当终端用户请求访问和获取源站资源时无需回源,可就近获取CDN节点上已经缓存的资源,提高资源访问速度,同时分担源站压力。目前CDN部分节点已支持通过IPv6访问。

CDN接入快捷、简单,您不需要调整现有业务结构,也不需要进行复杂的配置,只需要在CDN控制台进行简单操作,

比如阿里云只需要配置cdn域名和源站的映射

什么是LocalDns

Local DNS(本地域名系统)是一种用于解析域名的服务,它运行在用户的计算机上,可以帮助用户访问网络上的网站和服务。

Local DNS 的工作原理是,当用户访问一个网站时,先向本地域名系统请求解析域名。如果本地域名系统已经缓存了该域名的解析结果,则直接返回结果,否则会向公共域名系统(如 DNS)请求解析。

Local DNS 的优点是可以提高访问网络的速度,因为本地域名系统的响应速度通常比公共域名系统快得多。此外,本地域名系统还可以提供域名劫持保护、恶意网站过滤等功能,帮助用户保护自己的网络安全。

不过,本地域名系统也有一些缺点,比如当用户更换网络时,本地域名系统可能无法正常工作,或者由于缓存的解析结果过期导致无法访问某些网站。因此,用户使用本地域名系统时需要注意这些问题。

总的来说,本地域名系统是一种可以提高访问网络的速度,并提供域名劫持保护、恶意网站过滤等功能的服务。但是,用户使用本地域名系统时也需要注意一些问题,以保证其正常使用。

CDN工作过程

传统访问过程

如上图所示,如果要访问的网站名为:"www.edu.lagou.com"

(1)客户端首先会在本机的hosts文件和hosts缓存中查找该域名对应的IP地址;

(2)如果本机中没有此信息,则会到我们的本地DNS 进行询问该域名对应的IP地址;

(3)如果本地DNS中仍然没有该域名的IP信息时,则会由本地DNS依次向根DNS 、顶级域DNS、权威DNS 进行询问,最终本地DNS 将IP地址发送给客户端。

(4)客户端通过IP地址向远程的源站服务器发出HTTP请求并获取相应的数据内容。

以上是通过DNS的迭代解析模式获取域名对应的IP地址并发送HTTP请求的过程。源站的提供商通过配置权威DNS将源站的域名与提供服务的服务器主机进行绑定,使客户端通过DNS服务可以顺利地获取源站域名对应的IP地址并通过IP地址与源站进行通信。

 CDN工作过程

在DNS解析域名时新增了一个全局负载均衡系统(GSLB) ,GSLB的主要功能是根据用户的本地DNS(通常距离用户的物理位置较近)的IP地址判断用户的位置,筛选出距离用户较近的本地负载均衡系统(SLB) ,并将该SLB的IP地址作为结果返回给本地DNS。

SLB主要负责判断缓存服务器集群中是否包含用户请求的资源数据,如果缓存服务器中存在请求的资源,则根据缓存服务器集群中节点的健康程度、负载量、连接数等因素筛选出最优的缓存节点,并将HTTP请求重定向到最优的缓存节点上。

GSLB :Global Server Load Balancing,全局负载均衡服务器。

SLB(Server load balancing):负载均衡服务器是对集群内物理主机的负载均衡,而GSLB是对物理集群的负载均衡。

为了更清晰地说明CDN的工作原理,下面以客户端发起对"www.edu.lagou.com/index.html"的HTTP请求为例进行说明:

  1. 用户发起对"www.edu.lagou.com/index.html"的HTTP请求,首先需要通过本地DNS通过"迭代解析"的方式获取域名"edu.lagou.com"的IP地址;
  2. 如果本地DNS的缓存中没有该域名的记录,则向根DNS 发送DNS查询报文;
  3. 根DNS 发现域名的前缀为"com",则给出负责解析com 的顶级DNS 的IP地址;
  4. 本地DNS向顶级DNS 发送DNS查询报文;
  5. 顶级DNS 发现域名的前缀为"lagou.com",在本地记录中查找负责该前缀的权威DNS 的IP地址并进行回复;
  6. 本地DNS向权威DNS 发送DNS查询报文;
  7. 权威DNS查找到一条NAME字段为"edu.lagou.com"的CNAME记录(由服务提供者配置,阿里云、网宿科技),该记录的Value字段为"edu.lagou.cdn.com";并且还找到另一条NAME字段为"edu.lagou.cdn.com"的A记录(域名-->IP),该记录的Value字段为GSLB的IP地址;
  8. 本地DNS向GSLB发送DNS查询报文;
  9. GSLB根据本地DNS 的IP地址判断用户的大致位置为北京,筛选出位于海淀区且综合考量最优的SLB的IP地址填入DNS回应报文,作为DNS查询的最终结果;
  10. 本地DNS回复客户端的DNS请求,将上一步的IP地址作为最终结果回复给客户端;
  11. 客户端根据IP地址向SLB发送HTTP请求:"www.edu.lagou.com/index.html";
  12. SLB综合考虑缓存服务器集群中各个节点的资源限制条件、健康度、负载情况等因素,筛选出最优的缓存节点后回应客户端的HTTP请求(状态码为302,重定向地址为最优缓存节点的IP地址);
  13. 客户端接收到SLB的HTTP回复后,重定向到该缓存节点上;
  14. 缓存节点判断请求的资源是否存在、过期,将缓存的资源直接回复给客户端,否则到源站进行数据更新再回复。

CDN相关术语

源站:

  指发布内容的原始站点,也就是做 CDN 之前客户真正的服务器。

边缘服务器(Edge Server):

  对于边缘服务器,CDN提供了就近访问的能力,边缘服务器节点就是实际提供给用户就近连接、访问的服务器。

CDN命中率:

  CDN一般提供的是静态加速能力,静态加速能力通常通过缓存架构来实现,CDN命中指的是CDN服务器有该资源缓存存在,请求到达CDN节点时,CDN服务器可以在本地缓存获取资源直接返回客户端,如果没有命中,则需要CDN节点到源站获取资源。CDN命中的概率即CDN命中率。

回源:

  当CDN没有命中缓存时,需要到源站去获取资源,这个过程称为回源,回源需要从CDN节点层层代理访问,最终到源站获取资源。

中间层服务器:

  边缘节点比较松散,因此存在缓存穿透的问题。为了避免回源引起的性能大幅下降,在CDN的中间层服务器将多个CDN节点的访问进行收敛,从而大幅提高命中率。

 

CDN应用场景

图片小文件

图片小文件适用于网站或应用中小文件的加速分发,例如各种门户网站、电子商务类网站、新闻资讯类网站、娱乐游戏类网站等。您需要将源站内容进行动静态分离,静态内容使用阿里云CDN加速,例如图片、CSS、JS小文件等;

解决问题

  • 终端用户访问慢:网站小文件内容多、打开速度太慢。

  • 跨区域访问质量差:终端用户分布在不同区域,不同区域的访问速度和质量高低不一。

  • 高并发压力大:运营推广期间,源站服务器压力大,服务器容易崩溃,造成服务不可用。

  • 图片格式分辨率处理复杂:无法根据适合的终端情况进行图片压缩和优化。

大文件下载

大文件下载适用于各类大文件的下载和分发加速,例如游戏安装包、应用更新、手机ROM升级、应用程序包下载等,平均单个文件大小在20 MB以上。

CDN加速大文件下载业务可以帮您解决以下问题:

  • 终端用户无法下载或者下载太慢。

  • 网络环境不稳定时,下载容易中断,重新下载会耗费额外的资源。

  • 网站内容不安全,容易被劫持或者盗链,对业务造成额外的损失。

  • 高并发下载或者下载突增场景下对源站性能要求非常高,且源站的带宽成本也较高。

视音频点播

视音频点播适用于各类视音频网站,例如影视类视频网站、在线教育类视频网站、新闻类视频网站、短视频社交类网站以及音频类相关网站和应用,您可以使用阿里云CDN产品实现对音视频内容的文件分发和访问加速。

CDN加速视音频点播业务可以帮您解决以下问题:

  • 终端用户访问视频时打不开视频或容易卡顿,观看不流畅。

  • 视频资源容易被劫持或盗用,版权得不到有效保护。

  • 高并发访问或者访问突增场景下对源站性能要求非常高,且源站的带宽成本也较高。

CDN鉴权

参考阿里云:https://help.aliyun.com/zh/cdn/user-guide/configure-url-signing?spm=a2c4g.11186623.0.i20

 

URL鉴权

 

http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}

CDN服务器接到资源访问请求后,判断最终生成鉴权URL请求中的timestamp+鉴权URL有效时长是否小于当前时间。

  • 如果timestamp+鉴权URL有效时长小于当前时间,服务器判定过期失效,并返回HTTP 403错误。

  • 如果timestamp+鉴权URL有效时长大于当前时间,则以sstring方式构造出一个字符串(参考表格中sstring构造方式),然后使用MD5算法算出md5hash的值,再将计算出的md5hash值与用户访问请求中携带的md5hash的值进行比对。

    • 结果一致,鉴权通过,返回资源请求。

      说明当鉴权通过时,会去掉URL中与鉴权相关的那部分参数,可以提高缓存命中率,减少回源流量:
      • 实际生成缓存key的URL格式:http://DomainName/FileName

      • 实际回源的URL格式:http://DomainName/FileName

    • 结果不一致,鉴权失败,返回HTTP 403错误。

远程鉴权

可以通过配置远程鉴权,将用户请求转发至您指定的鉴权服务器,由鉴权服务器对用户请求进行校验。

 

 

 

posted @ 2024-02-22 19:04  意犹未尽  阅读(33)  评论(0编辑  收藏  举报