二. 应用加速(微服务架构设计的cdn访问加速)

1. CDN的产生及作用

随着时代的发展,网民数量增多,访问路径过长,所以当用户与网站之间的链路被突发的大流量数据拥塞时,不同地区的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN。
CDN将内容推送到网络边缘,大量的用户访问被分散在网络边缘,不再构成网站出口、互联互通点的资源挤占,也不再需要跨越长距离IP路由,即减少了源服务器的资源占用,企业大大提升了用户访问的响应时间,从而使用户能以最快的速度,从最接近用户的地方获得所需的信息,彻底解决网络拥塞,提高响应速度。

1. 2. CDN(Content Delivery Network),即内容分发网络

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

2.访问源站的过程(DNS)

在浏览器中输入www.baidu.com,最终会将该域名解析为一个IP地址。
DNS:域名系统,Domain Name System,核心作用就是就是将一个域名解析为IP地址。
在这里插入图片描述
(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地址与源站进行通信。

2.1DNS的记录类型(以阿里云为例)

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

  • A记录(Address)
    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地址。
    在这里插入图片描述
    在这里插入图片描述

2.2通过CDN获取缓存内容的过程

CDN将我们对源站的请求导向了距离用户较近的最优缓存节点,而非源站。
下图所示是通过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.co
m/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字段为"www.baidu.com/";并且还找到另一条NAME字段为"www.baidu.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求:“https://www.baidu.com//index.html”;
  12. SLB综合考虑缓存服务器集群中各个节点的资源限制条件、健康度、负载情况等因素,筛选出最优的缓存节点后回应客户端的HTTP请求(状态码为302,重定向地址为最优缓存节点的IP地址);
  13. 客户端接收到SLB的HTTP回复后,重定向到该缓存节点上;
  14. 缓存节点判断请求的资源是否存在、过期,将缓存的资源直接回复给客户端,否则到源站进行数据更新再回复
    一个普通的DNS请求:
    ① 用户提交域名
    ② 客户端解析域名
    ③ DNS服务器解析出IP
    ④ 客户端请求IP
    ⑤ 返回结束
    加入了GSLB的请求:
    ① 提交域名
    ② 客户端解析域名
    ③ NS(name server,将域名解析到另一个)解析到GSLB
    ④ GSLB解析并返回IP
    ⑤ 客户端请求IP
    ⑥ 返回结束

3 CDN的网络架构

CDN网络架构主要由两大部分,分为中心和边缘两部分:
中心指CDN网关中心和DNS重定向解析中心,负责全局负载均衡,设备系统
安装在管理中心机房。边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。
中心:CDN网关中心、DNS重定向解析中心
边缘:Cache、负载均衡器
在这里插入图片描述

当用户访问加入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群协同工作

4 CDN相关术语

1、源站
指发布内容的原始站点,也就是做 CDN 之前客户真正的服务器。
2、边缘服务器(Edge Server)
对于边缘服务器,CDN提供了就近访问的能力,边缘服务器节点就是实际提
供给用户就近连接、访问的服务器。
3、CDN命中率
CDN一般提供的是静态加速能力,静态加速能力通常通过缓存架构来实现,
CDN命中指的是CDN服务器有该资源缓存存在,请求到达CDN节点时,CDN服务器可以在本地缓存获取资源直接返回客户端,如果没有命中,则需CDN节点到源站获取资源。CDN命中的概率即CDN命中率。
4、回源
当CDN没有命中缓存时,需要到源站去获取资源,这个过程称为回源,回源
需要从CDN节点层层代理访问,最终到源站获取资源。
5、中间层服务器
边缘节点比较松散,因此存在缓存穿透的问题。为了避免回源引起的性能大
幅下降,在CDN的中间层服务器将多个CDN节点的访问进行收敛,从而大幅提高命中率。

5 CDN应用场景

5.1 网页站点加速

在这里插入图片描述

5.2 下载加速

在这里插入图片描述

5.3 视频点播

在这里插入图片描述

5.4 视频直播

在这里插入图片描述

5.5 移动加速

在这里插入图片描述

6 阿里云CDN实践

(1)阿里云CDN主要的应用场景包括:

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

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

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

  • 全站加速:全站加速是阿里云一款独立产品,主要用于动态内容加速,也可以实现动静分离加速。

  • 安全加速:如果您的网站易遭受攻击且必须兼顾加速的业务场景,则需要使用安全加速功能,提升全站安全性

(2)阿里云CDN工作原理
假设加速域名为 www.a.com ,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下图所示。
在这里插入图片描述

  1. 当终端用户(北京)向 www.a.com 下的指定资源发起请求时,首先向
    LDNS(本地DNS)发起域名解析请求。
  2. LDNS检查缓存中是否有 www.a.com 的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
  3. 当授权DNS解析 www.a.com 时,返回域名CNAME www.a.tbcdn.com 对应IP地址。
  4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
  5. LDNS获取DNS返回的解析IP地址。
  6. 用户获取解析IP地址。
  7. 用户向获取的IP地址发起对该资源的访问请求。
    如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,
    例如,图中步骤7和8,请求结束。
    如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的
    请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节
    点,例如,图中的北京节点,并返回给用户,请求结束。

6.1 使用CDN

在这里插入图片描述
在这里插入图片描述

6.2 开通CDN服务

(1)前提条件:
执行本文操作之前,请确保您已完成阿里云账号注册和实名认证。
(2)操作步骤:
登录阿里云CDN平台。
单击立即开通。
选择适合您的计费类型,并选中服务协议
在这里插入图片描述

6.3 添加加速域名

在这里插入图片描述

如果需要使用CDN加速指定网站上的业务,则需要将该网站作为源站,为其创建加速域名。CDN通过加速域名将源站上的资源缓存到CDN的加速节点,实现资源访问加速 。
(1)操作步骤:

  • 登录CDN控制台。
    在左侧导航栏,单击域名管理。
    在域名管理页面,单击添加域名。
    配置加速域名、资源分组、业务类型、源站信息、端口和加速区域。
    在这里插入图片描述
    在这里插入图片描述
  • 单击下一步
  • 在这里插入图片描述
    当您加速域名审核通过后,会出现在域名管理的域名列表中。状态为正常运
    行,表示添加成功。

6.4 配置CNAME

加速域名添加成功后,阿里云CDN会分配对应的CNAME地址。如果启用CDN加速服务,则需要将加速域名指向CNAME地址,访问加速域名的请求才能转发到CDN节点上,达到加速效果。
获取加速域名的CNAME地址。
(1)获取加速域名的CNAME地址。

  • 登录CDN控制台。
  • 在左侧导航栏,单击域名管理。
  • 进入域名管理页面,复制加速域名对应的CNAME值。
    (2)添加CNAME记录。
    该步骤以在阿里云云解析DNS控制台添加CNAME记录为例,为您介绍
    CNAME的配置流程。如果您是在DNSPod、新网、Godaddy等其他域名解析服务商设置的域名解析,请前往对应的域名解析服务商添加CNAME记录,添加方法和本文介绍的方法类似。
  • 登录阿里云云解析DNS控制台。
  • 进入域名解析页面,在您需要设置的域名后面,单击解析设置。
  • 单击添加记录,添加CNAME记录。

在这里插入图片描述
在这里插入图片描述

  • 说明
    记录类型:选择 CNAME 。
    主机记录:加速域名的前缀。
    在这里插入图片描述
  • 解析线路:默认值。
  • 记录值:输入加速域名对应的CNAME地址。
  • TTL:默认值。

(3)验证CNAME配置是否生效。

  1. 打开Windows的CMD命令行程序。
  2. 在命令行中ping加速域名,如果返回的解析结果和CDN控制台上该加速域名的CNAME值一致,则表示CDN加速已经生效。
    在这里插入图片描述

6.5 服务管理

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

6.6 刷新预热

CDN提供资源的刷新和预热功能。通过刷新功能,可以强制CDN节点回源并获取最新文件;通过预热功能可以在业务高峰期预热热门资源,提高资源访问效率。
CDN提供的资源的刷新和预热功能的概念如下:

  • 刷新功能是指提交URL刷新或目录刷新请求后,CDN节点的缓存内容将会被强制过期,当向CDN节点请求资源时,CDN会直接回源站获取对应的资源返回给您,并将其缓存。刷新功能会降低缓存命中率。使用场景:通常是在源站点中进行了静态资源的更新。从边缘节点主动去源站加载最新资源。

  • 预热功能是指提交URL预热请求后,源站将会主动将对应的资源缓存到CDN节点,当首次请求时,就能直接从CDN节点缓存中获取到最新的请求资源,无需再回源站获取。预热功能会提高缓存命中率。
    操作步骤:

  1. 登录CDN控制台。
  2. 在左侧导航栏,单击刷新预热。
  3. 在刷新缓存页签,您可以根据所需,配置刷新或预热信息。
  4. 单击提交
  5. 单击操作记录
  6. 在操作记录页签,配置查询时间、操作类型、域名或URL,单击查询。
    在这里插入图片描述
    刷新和预热功能的详细说明如下表所示。
    在这里插入图片描述

7 域名管理

7.1 回源配置

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

7.2 缓存配置

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

7.3 访问控制

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

7.3 性能优化

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

7.4 视频相关

可以通过设置Range回源和拖拽播放功能,减少回源流量消耗,并且提升视音
频的播放效果。
可以通过视频相关功能,对域名执行如下操作。
在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_44949002/article/details/121528185