# 应用加速


<!--more-->


## 1.cdn工作原理

### 1.1 cdn的产生及作用

随着时代的发展，网民数量增多，访问路径过长，所以当用户与网站之间的链路被突发的大流量数据拥塞时，不同地区的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN。

CDN将内容推送到网络边缘，大量的用户访问被分散在网络边缘，不再构成网站出口、互联互通点的资源挤占，也不再需要跨越长距离IP路由，即减少了源服务器的资源占用，企业大大提升了用户访问的响应时间，从而使用户能以最快的速度，从最接近用户的地方获得所需的信息，彻底解决网络拥塞，提高响应速度。

CDN（Content Delivery Network），即**内容分发网络**。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层，将网站的内容发布到最接近用户的网络”边缘“的节点，使用户可以就近取得所需的内容，提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因，提高用户访问网站的响应速度。

### 1.2 访问源站的过程

DNS：域名系统，Domain Name System，核心作用就是就是将一个域名解析为IP地址。

![img_49](https://img.zhaojq.top/20260727091808734.png "img_49")

### 1.3 dns的记录类型

在DNS系统中，最常见的资源记录方式是Internet类记录，该记录由包含4个字段的数据构成：Name、Value、Type、TTL。其中Name和Value可以理解为一对键值对，但是其具体含义取决于Type的类型，TTL记录了该条记录应当从缓存中删除的时间。在资源记录的类型中中，最为常见且重要的类型Type主要有：

- A记录

  A记录用于描述目标域名到IP地址的映射关系，将目标域名与A记录的Name字段进行匹配，将成功匹配的记录的Value字段的内容（IP地址）输出到DNS回应报文中。

- NS记录（Name Server）

  NS记录用于描述目标域名到负责解析该域名的DNS的映射关系，根据目标域名对NS记录的Name字段进行匹配，将成功匹配的记录的Value字段（负责解析目标域名的DNS的IP地址）输出到DNS回应报文中。

- CNAME记录

  CNAME记录用于描述目的域名和别名的对应关系，如果说A记录可以将目标域名转换为对应主机的IP地址，那么CNAME记录则可以将一个域名（别名）转换为另一个域名，如果多条CNAME记录指向同一个域名，则可以将多个不同的域名的请求指向同一台服务器主机。并且，CNAME记录通常还对应了一条A记录，用于提供被转换的域名的IP地址。



### 1.4 通过cdn获取缓存内容的过程

**CDN将我们对源站的请求导向了距离用户较近的最优缓存节点，而非源站**

![img_50](https://img.zhaojq.top/20260727091808886.png "img_50")

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

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

**GSLB** ：Global Server Load Balancing，全局负载均衡服务器。

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

>为了更清晰地说明CDN的工作原理，下面以客户端发起对"www.edu.baidu.com/index.html"的HTTP请求为例进行说明：
>
>1.	用户发起对"www.edu.baidu.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发现域名的前缀为"baidu.com"，在本地记录中查找负责该前缀的权威DNS的IP地址并进行回复；
>6.	本地DNS向权威DNS发送DNS查询报文；
>7.	权威DNS查找到一条NAME字段为"edu.baidu.com"的 CNAME记录 （由服务提供者配置，阿里云、网宿科技），该记录的Value字段
>为"edu.baidu.cdn.com"；并且还找到另一条NAME字段
>为"edu.baidu.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.htm l"；
>12. SLB综合考虑缓存服务器集群中各个节点的资源限制条件、健康度、负载情况等因素，筛选出最优的缓存节点后回应客户端的HTTP请求（状态码为302，重定向地址为最优缓存节点的IP地址）；
>13. 客户端接收到SLB的HTTP回复后，重定向到该缓存节点上；
>
>14. 缓存节点判断请求的资源是否存在、过期，将缓存的资源直接回复给客户端，否则到源站进行数据更新再回复。

### 1.5 cdn的网络架构

CDN网络架构主要由两大部分，分为中心和边缘两部分:

- 中心指CDN网关中心和DNS重定向解析中心，负责全局负载均衡，设备系统安装在管理中心机房。
- 边缘主要指异地节点，CDN分发的载体，主要由Cache和负载均衡器等组成。

![img_51](https://img.zhaojq.top/20260727091809082.png "img_51")

当用户访问加入CDN服务的网站时，域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略，将当时最接近用户的节点地址提供给用户，使用户能够得到快速的服务。同时，它还与分布在世界各地的所有CDN节点保持通信，搜集各节点的通信状态，确保不将用户的请求分配到不可用的CDN节点上，实际上是通过DNS做全局负载均衡。

对于普通的Internet用户来讲，每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制，用户的请求被透明地指向离他最近的节点，节点中CDN服务器会像网站的原始服务器一样，响应用户的请求。由于它离用户更近，因而响应时间必然更快。

每个CDN节点由两部分组成：**负载均衡设备**和高速缓存服务器

- 负载均衡设备负责每个节点中各个Cache的负载均衡，保证节点的工作效率；同时，负载均衡设备还负责收集节点与周围环境的信息，保持与全局负载DNS的通信，实现整个系统的负载均衡。
- 高速缓存服务器（Cache）负责存储客户网站的大量信息，就像一个靠近用户的网站服务器一样响应本地用户的访问请求。

理论上，最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache，即可运行。DNS支持根据用户源IP地址解析不同的IP，实现就近访问。为了保证高可用性等，需要监视各节点的流量、健康状况等。一个节点的单台Cache承载数量不够时，才需要多台Cache，多台Cache同时工作，才需要负载均衡器，使Cache群协同工作。



### 1.6 cdn相关术语

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

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

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

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

- 中间层服务器

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



## 2.cdn应用场景

### 2.1 网页站点加速

网站或应用App的主要业务为图片和小文件下载，包括各类型图片、html、 css、js小文件等。

### 2.2 下载加速

网站或应用App的主要业务为大文件下载，平均单个文件大小在20M以上，如游戏、各类客户端下载和App下载商店等。

### 2.3 视频点播

网站或应用App的主要业务为视频点播或短视频类。支持MP4、FLV等主流视频格式。

### 2.4 视频直播

### 2.5 移动加速



## 3.阿里云cdn实践

主流的CDN服务提供商有阿里云、华为云、腾讯云、网宿科技、蓝汛云等等。

### 3.1 阿里云cdn简介

阿里云在全球拥有2800+节点。中国内地（大陆）拥有2300+节点，覆盖31个省级区域，大量节点位于省会等一线城市。

海外、中国香港、中国澳门和中国台湾拥有500+节点，覆盖70多个国家和地区。

同时，阿里云所有节点均接入万兆网卡，单节点存储容量达40TB~1.5PB，带宽负载达到40Gbps~200Gbps，具备130Tbps带宽储备能力。

使用场景：

- 图片小文件：如果您的网站或应用App的主要业务为图片和小文件下载，包括各类型图片、html、css、js小文件等。
- 大文件下载：网站或应用App的主要业务为大文件下载，平均单个文件大小在20M以上，如游戏、各类客户端下载和App下载商店等。
- 视音频点播：网站或应用App的主要业务为视频点播或短视频类。支持MP4、FLV等主流视频格式。
- 全站加速：全站加速是阿里云一款独立产品，主要用于动态内容加速，也可以实现动静分离加速。
- 安全加速：如果您的网站易遭受攻击且必须兼顾加速的业务场景，则需要使用安全加速功能，提升全站安全性。

工作原理：

![img_52](https://img.zhaojq.top/20260727091809293.png "img_52")



### 3.2 使用cdn

开通cdn服务-->添加加速域名-->配置cname-->停止cdn服务

具体查看阿里云文档说明。。。

### 3.3 服务管理

如果需要通过监控、统计分析、用量查询、刷新预热、日志分析等对CDN资源进行管理，则可以使用阿里云CDN控制台提供的服务管理功能。通过该功能可以实时有效的分析CDN运行状况，并及时做出业务决策。

### 3.4 域名管理

具体配置可参考阿里云文档使用！

- 回源配置

  当通过客户端请求访问资源时，如果CDN节点上未缓存该资源，则会到源站获取，同时缓存到CDN节点。可以根据所需配置回源的相关功能，提升资源访问效率。

- 缓存配置

  CDN加速静态资源时，将源站上的资源缓存到距离客户端最近的CDN节点上。当访问该静态资源时，直接从缓存中获取，避免通过较长的链路回源，提高访问效率。

- 访问控制

  可以通过设置Referer、IP、UsageAgent黑名单和白名单，以及URL鉴权，来实现对访客身份的识别和过滤，从而限制访问CDN资源的用户，提升CDN的安全性。

- 性能优化

  设置加速域名的性能优化功能，缩小访问文件的体积，提升加速业务的效率和页面可读性。
  扛住双11流量洪峰：凭借全国加速节点、智能弹性调度系统及安全防护能力，完美支持过亿QPS峰值，保证全球数亿买家快速浏览高清图片和视频，流畅下单。可以通过性能优化功能，对域名执行如下操作。

- 视频相关

  可以通过设置Range回源和拖拽播放功能，减少回源流量消耗，并且提升视音频的播放效果。








