小宋爱睡觉 小宋爱睡觉
首页
  • HTML
  • CSS
  • JavaScript
  • Vue
  • React
  • 计算机网络
  • 浏览器原理
  • 性能优化
  • 设计模式
手写系列
  • 字符串
  • 数组
  • 链表
  • 树
  • 动态规划
  • 排序算法
  • GitHub (opens new window)
  • JueJin (opens new window)
首页
  • HTML
  • CSS
  • JavaScript
  • Vue
  • React
  • 计算机网络
  • 浏览器原理
  • 性能优化
  • 设计模式
手写系列
  • 字符串
  • 数组
  • 链表
  • 树
  • 动态规划
  • 排序算法
  • GitHub (opens new window)
  • JueJin (opens new window)
  • CDN
    • 介绍一下CDN
    • CDN工作原理
    • CDN使用场景
    • CDN加速是对网站所在服务器加速,还是对其域名加速
    • 能不能让CDN不缓存某些即时性要求很高的网页和图片
    • CDN和镜像站点比较有何优势
    • CDN和双线机房相比有何优势
  • 其他优化手段
  • Webpack优化
  • 性能优化
Crucials
2021-12-16

CDN

# CDN

# 介绍一下CDN

CDN

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

典型的CDN系统分为:

  • 分发服务系统: 最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户。同时cache还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache设备的数量、规模、总服务能力是衡量一个CDN系统服务能力的最基本的指标

  • 负载均衡系统:主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本地负载均衡(SLB)。全局负载均衡主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。本地负载均衡主要负责节点内部的设备负载均衡

  • 运营管理系统: 运营管理系统分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。

CDN的作用: 用来托管Web资源(包括文本、图片和脚本),可供下载的资源(媒体文件、软件、文档等)应用程序,使用cdn来加速这些资源等访问

  • 在性能方面:
    • 用户收到的内容来自最近的数据中心,延迟更低,内容加载更快
    • 部分资源请求分配给了CDN,减少了服务器的负载
  • 在安全方面,有助于防御DDos MITM等网络攻击
    • 针对DDoS,通过监控分析异常流量,限制其请求频率
    • 针对MITM,从源服务器到CDN节点到ISP(Internet Service Provider),全链路HTTPS通信

负载均衡

多台服务器共同协作,不让其中某一台或几台超额工作,发挥服务器的最大作用

  • http重定向负载均衡:调度者根据策略选择服务器以302响应请求,缺点只有第一次有效果,后续操作维持在该服务器 dns负载均衡:解析域名时,访问多个ip服务器中的一个(可监控性较弱)
  • 反向代理负载均衡:访问统一的服务器,由服务器进行调度访问实际的某个服务器,对统一的服务器要求大,性能受到 服务器群的数量

# CDN工作原理

CDN的原理: CDN和DNS有着密不可分的联系

DNS的解析域名的过程是在浏览器输入 www.crucials.cn的解析过程如下:

  1. 检查浏览器缓存

  2. 检查操作系统缓存,常见的如hosts文件

  3. 检查路由器缓存

  4. 如果前几步都没没找到,会向ISP(网络服务提供商)的LDNS服务器查询

  5. 如果LDNS器没找到,会向根域名服务器(Root Server)请求解析,分为以下几步:

  • 根服务器返回顶级域名(TLD)服务器如 .com ,.cn,.org 等的地址,该例子中会返回 .cn 的地址

  • 接着向顶级域名服务器发送请求,然后会返回次级域名(SLD)服务器的地址,本例子会返回 .crucials 的地址

  • 接着向次级域名服务器发送请求,然后会返回通过域名查询到的目标IP,本例子会返回 www.crucials.cn 的地址

  • Local DNS Server会缓存结果,并返回给用户,缓存在系统中

CDN的工作原理:

  1. 用户未使用CDN缓存资源的过程:

    • 浏览器通过DNS对域名进行解析(就是上面的DNS解析过程),依次得到此域名对应的IP地址

    • 浏览器根据得到的IP地址,向域名的服务主机发送数据请求

    • 服务器向浏览器返回响应数据

  2. 用户使用CDN缓存资源的过程:

    • 对于点击的数据的URL,经过本地DNS系统的解析,发现该URL对应的是一个CDN专用的DNS服务器,DNS系统就会将域名解析权交给CNAME指向的CDN专用的DNS服务器。

    • CDN专用DNS服务器将 CDN的全局负载均衡设备IP地址 返回给用户

    • 用户向CDN的全局负载均衡设备发起数据请求

    • CDN的全局负载均衡设备根据用户的IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求

    • 区域负载均衡设备选择一台合适的缓存服务器来提供服务,将该缓存服务器的IP地址返回给全局负载均衡设备

    • 全局负载均衡设备把服务器的IP地址返回给用户

    • 用户向该缓存服务器发起请求,缓存服务器响应用户的请求,将用户所需内容发送至用户终端。

如果缓存服务器没有用户想要的内容,那么缓存服务器就会向它的上一级缓存服务器请求内容,以此类推,直到获取到需要的资源。最后如果还是没有,就会回到自己的服务器去获取资源

img

补充说明

CNAME(意为:别名):在域名解析中,CNAME记录用于将一个域名(同名)映射到另一个域名(真实名称),域名解析服务器遇到CNAME记录会以映射到的目标重新开始查询,也就是充当一个中转站的意思

# CDN使用场景

  • 使用第三方的CDN服务:如果想要开源一些项目,可以使用第三方的CDN服务

  • 使用CDN进行静态资源的缓存:将自己网站的静态资源放在CDN上,比如js、css、图片等。可以将整个项目放在CDN上,完成一键部署。

  • 直播传送:直播本质上是使用流媒体进行传送,CDN也是支持流媒体传送的,所以直播完全可以使用CDN来提高访问速度。CDN在处理流媒体的时候与处理普通静态文件有所不同,普通文件如果在边缘节点没有找到的话,就会去上一层接着寻找,但是流媒体本身数据量就非常大,如果使用回源的方式,必然会带来性能问题,所以流媒体一般采用的都是主动推送的方式来进行

# CDN加速是对网站所在服务器加速,还是对其域名加速

CDN是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访客访问加入CDN的域名获得加速效果,访问未加入CDN的域名,或者直接访问IP地址,则无法获得CDN效果

# 能不能让CDN不缓存某些即时性要求很高的网页和图片

只需要使用动态页面,asp,php,jsp等动态技术做成的页面不被CDN缓存,无需每次都要刷新。或者采用一个网站两个域名,一个启用CDN,另外一个域名不用CDN,对即时性要求高的页面和图片放在不用CDN的域名下

# CDN和镜像站点比较有何优势

CDN对网站的访客完全透明,不需要访客手动选择要访问的镜像站点,保证了网站对访客的友好性。CDN对每个节点都有可用性检查,不合格的节点会第一时间剔出,从而保证了极高的可用率,而镜像站点无法实现这一点。CDN部署简单,对原站基本不做任何改动即可生效

# CDN和双线机房相比有何优势

常见的双线机房只能解决网通和电信互相访问慢的问题,其它ISP(譬如教育网,移动网,铁通)互通的问题还是没得到解决。而CDN是访问者就近取数据,而CDN的节点遍布各ISP,从而保证了网站到任意ISP的访问速度。另外CDN因为其流量分流到各节点的原理,天然获得抵抗网络攻击的能力

上次更新: 2022/03/05, 09:16:57
其他优化手段

其他优化手段→

Copyright © 2021-2025 粤ICP备2021165371号
  • 跟随系统
  • 浅色模式
  • 深色模式