• 3. CDN 概念、作用和原理?


    3. CDN 概念、作用和原理?

    CDN 的概念

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

    典型的 CDN 系统由下面三个部分组成:

    • 分发服务系统: 最基本的工作单元就是 Cache 设备, cache(边缘 cache)负责直接响应最终用户的访问请求, 把缓存在本地的内容快速地提供给用户。同时 cache 还负责与源站点进行内容同步, 把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache 设备的数量、规模、总服务能力是衡量一个 CDN 系统服务能力的最基本的指标
    • 负载均衡系统: 主要功能是负责对所有发起服务请求的用户进行访问调度, 确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本地负载均衡(SLB)。全局负载均衡主要根据用户就近性原则, 通过对每个服务节点进行“最优”判断, 确定向用户提供服务的 cache 的物理位置。本地负载均衡主要负责节点内部的设备负载均衡
    • 运营管理系统: 运营管理系统分为运营管理和网络管理子系统, 负责处理业务层面的与外界系统交互所必须地收集、整理、交付工作, 包含客户管理、产品管理、计费管理、统计分析等功能

    CDN 的作用

    CDN 一般会用来托管 Web 资源(包括文本、图片和脚本等), 可供下载的资源(媒体文件、软件、文档等), 应用程序(门户网站等)。使用 CDN 来加速这些资源的访问。

    在性能方面

    引入 CDN 的作用在于:

    • 用户收到的内容来自最近的数据中心, 延迟更低, 内容加载更快
    • 部分资源请求分配给了 CDN, 减少了服务器的负载

    在安全方面

    CDN 有助于防御 DDoSMITM网络攻击:

    • 针对 DDoS: 通过监控分析异常流量, 限制其请求频率
    • 针对 MITM: 从源服务器到 CDN 节点到 ISP(Internet Service Provider), 全链路 HTTPS 通信

    除此之外, CDN 作为一种基础的云服务, 同样具有资源托管、按需扩展(能够应对流量高峰)等方面的优势。

    CDN 的原理

    CDN 的工作过程:

    CDNDNS 有着密不可分的联系, 先来看一下 DNS 的解析域名过程, 在浏览器输入 www.test.com 的解析过程如下:

    1. 检查浏览器缓存
    2. 检查操作系统缓存, 常见的如 hosts 文件
    3. 检查路由器缓存
    4. 如果前几步都没找到, 会向 ISP(网络服务提供商)的 LDNS 服务器查询
    5. 如果 LDNS 服务器没找到, 会向根域名服务器(Root Server)请求解析, 分为以下几步:
      • 根服务器返回顶级域名(TLD)服务器如 .com, .cn, .org 等的地址, 该例子中会返回 .com 的地址
      • 接着向顶级域名服务器发送请求, 然后会返回次级域名(SLD)服务器的地址, 本例子会返回 .test 的地址
      • 接着向次级域名服务器发送请求, 然后会返回通过域名查询到的目标 IP, 本例子会返回 www.test.com 的地址
      • Local DNS Server 会缓存结果, 并返回给用户, 缓存在系统中

    CDN 的工作原理:

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

    1. 浏览器通过 DNS 对域名进行解析(就是上面的 DNS 解析过程), 依次得到此域名对应的 IP 地址
    2. 浏览器根据得到的 IP 地址, 向域名的服务主机发送数据请求
    3. 服务器向浏览器返回响应数据

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

    1. 对于点击的数据的 URL, 经过本地 DNS 系统的解析, 发现该 URL 对应的是一个 CDN 专用的 DNS 服务器, DNS 系统就会将域名解析权交给 CNAME 指向的 CDN 专用的 DNS 服务器
    2. CND 专用 DNS 服务器将 CND 的全局负载均衡设备 IP 地址返回给用户
    3. 用户向 CDN 的全局负载均衡设备发起数据请求
    4. CDN 的全局负载均衡设备根据用户的 IP 地址, 以及用户请求的内容 URL, 选择一台用户所属区域的区域负载均衡设备, 告诉用户向这台设备发起请求
    5. 区域负载均衡设备选择一台合适的缓存服务器来提供服务, 将该缓存服务器的 IP 地址返回给全局负载均衡设备
    6. 全局负载均衡设备把服务器的 IP 地址返回给用户
    7. 用户向该缓存服务器发起请求, 缓存服务器响应用户的请求, 将用户所需内容发送至用户终端

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

    CDN 的使用场景

    • 使用第三方的 CDN 服务: 如果想要开源一些项目, 可以使用第三方的 CDN 服务
    • 使用 CDN 进行静态资源的缓存: 将自己网站的静态资源放在 CDN 上, 比如 jscss、图片等。可以将整个项目放在 CDN 上, 完成一键部署
    • 直播传送: 直播本质上是使用流媒体进行传送, CDN 也是支持流媒体传送的, 所以直播完全可以使用 CDN 来提高访问速度。CDN 在处理流媒体的时候与处理普通静态文件有所不同, 普通文件如果在边缘节点没有找到的话, 就会去上一层接着寻找, 但是流媒体本身数据量就非常大, 如果使用回源的方式, 必然会带来性能问题, 所以流媒体一般采用的都是主动推送的方式来进行
  • 相关阅读:
    GTK在drawable区域绘图
    Unity Shader LightMode 标签
    基于springboot的小说阅读网站设计与实现【附源码】
    Mycat
    LangChain(2):基于自己的文档构建一个问答系统
    喜报丨迪捷软件入选浙江省2023年省级产业数字化服务商
    【虹科干货】TWAMP:什么是双向主动测量协议?
    JVM调优篇:探索Java性能优化的必备种子面试题
    J1—Vivado调试技巧VIO IP
    云原生相关概念
  • 原文地址:https://blog.csdn.net/m0_51180924/article/details/126946248