详解 CDN 加速

2021-07-01 10:14:26 浏览数 (1)

背景

  • 本来是为了深入了解 CDN 的,结果发现前置知识:IP、域名、DNS 都还不算特别熟,所以先写了他们
  • 现在终于来聊一聊 CDN 啦
  • 本文素材均出自:https://www.bilibili.com/video/BV12T4y1P7Fh,动画仍然满分

如何打开一个网站

前面说过了

  1. 浏览器访问域名
  2. DNS 负责解析域名,找到域名对应的 IP 地址
  3. 浏览器访问 IP 地址对应的服务器,渲染响应内容

存在两个问题

问题一
  • 服务器有地理位置
  • 无论是云服务器,还是传统服务器,它都有一个地理位置
  • 如果请求它的设备离它很远,那么它的请求时间肯定会更长
  • 假设同时有很多个设备同时请求,带宽有限的情况下,即使离服务器很近,那请求时间也会被拉长
问题二
  • 服务器稳定性,会小概率出现宕机
  • 假设原始服务器出现宕机问题,会导致网站无法正常访问
  • 如果是小公司,还没有专业的运维人员的话,那么宕机发生的时候可能会无法及时告警

CDN 介绍

全称

Content Delivery Network,内容分发网络

为什么会出现

就是为了解决上述两个问题:限于地理位置、服务器稳定性

场景类比

用过京东网购都知道,为什么京东物流能当天/隔日到?因为它有前置仓、区域仓的仓储配送机制

电商物流进化历程

  • 第一阶段:只有商家仓库,无论在哪购买,都从仓库发货,所以快递时间需要 3-10 天
  • 第二阶段:建立区域仓,在一些关键城市建立区域仓,然后从商家仓库囤点货,当下单购买后,会就近选择区域仓进行发货
  • 第三阶段:建立前置仓,就是京东那种,就在你家旁边建一个仓库,送货速度极快

CDN 其实就是类似第三阶段,让离你最近的服务器发送数据,这样无论在哪访问网站,速度都是杠杠的

CDN 实现原理

一开始已经复习了下是如何打开一个网站的,其实 CDN 跟 DNS 也是有关系的

前提:没有 CDN 的情况下

跟开头讲的顺序一样

  1. 浏览器查询 DNS 服务器域名对应 IP 地址是什么
  2. DNS 服务器返回 IP 地址
  3. 浏览器访问 IP 地址对应的服务器
  4. 服务器返回网站数据给浏览器
添加 CDN 专用解析记录
  • 在域名的 DNS 解析设置中,添加一条 CDN 专用的解析记录
  • 这条解析记录会让域名被解析之后, 会指向一个 CDN 网络专用的处理 DNS 服务器
CDN 专用的 DNS 服务器
  1. 浏览器发送 DNS 查询请求到 DNS 服务器
  2. DNS 服务器会返回 CDN 专用的处理 DNS 请求的服务器的 IP 地址给浏览器(上面说的 CDN 专用解析记录)
  3. 浏览器拿到 IP 地址后访问 CDN 专用 DNS 服务器
  4. 然后呢,CDN 专用 DNS 服务器就会返回 CDN 负载均衡服务器的 IP 地址
  5. 浏览器拿到 IP 地址后访问 CDN 负载均衡服务器
  6. CDN 负载均衡服务器会根据浏览器的网络地址,在 CDN 网络中返回最适合的 CDN 服务器的 IP 地址,可能是没什么人用的服务器,也可能是比较近的服务器
CDN 负载均衡服务器的作用

它会给请求设备分配合适的 CDN 服务器的 IP 地址

获取网站数据
  1. 浏览器拿到 CDN 服务器的 IP 地址之后,就会访问它
  2. 假设第一个 CDN 服务器没有需要的网站文件(缓存中没有),就会去 CDN 网络中的上层 CDN 服务器中拉取
  3. 如果上层 CDN 服务器没有还会继续往上层找
  4. 如果所有上层 CDN 服务器都没有找到,就会去源站中拉取
  5. 拉取成功之后,就会在刚刚经过的所有 CDN 服务器中缓存这些网站文件
  6. 最后第一个 CDN 服务器会将网络文件发送给浏览器
源站 IP
  • 浏览器需要访问的域名的网站服务器的 IP 地址
  • 在开通 CDN 的时候,就需要在 CDN 后台设置源站 IP
  • 网站的文件就是放在源站上的,比如静态资源文件、视频、音频
CDN 服务器的缓存机制
  • 通过 CDN 服务器的缓存机制,这样下次其他设备要去访问 www.bilibili.com 的时候,就能直接从 CDN 服务器的缓存中拉取到对应的网站文件了
  • 不需要访问源站的话,可以减少源站压力,还能加快请求速度
CDN 服务器的稳定性
  • CDN 的缓存机制除了能让用户快速打开一个网站,还可以提高网站的稳定性
  • 假设源站宕机,或者 CDN 服务器节点宕机了之后,CDN 网络中还有其他 CDN 服务器可用,这样访问网站就可以从可用的 CDN 服务器上拉取网站文件,不至于访问不了网站

待更新更深入的内容

0 人点赞