【计算机网络】CDN内容分发网络

news/2025/4/1 16:33:28/文章来源:https://www.cnblogs.com/blknemo/p/16160444.html

背景

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

如何打开一个网站

前面说过了

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

img

存在两个问题

问题一

  • 服务器有地理位置
  • 无论是云服务器,还是传统服务器,它都有一个地理位置
  • 如果请求它的设备离它很远,那么它的请求时间肯定会更长
  • 假设同时有很多个设备同时请求,带宽有限的情况下,即使离服务器很近,那请求时间也会被拉长

img

问题二

  • 服务器稳定性,会小概率出现宕机
  • 假设原始服务器出现宕机问题,会导致网站无法正常访问
  • 如果是小公司,还没有专业的运维人员的话,那么宕机发生的时候可能会无法及时告警

img

CDN 介绍

全称

Content Delivery Network,内容分发网络

为什么会出现

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

场景类比

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

电商物流进化历程

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

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

CDN 实现原理

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

前提:没有 CDN 的情况下

img

跟开头讲的顺序一样

  1. 浏览器查询 DNS 服务器域名对应 IP 地址是什么
  2. DNS 服务器返回 IP 地址
  3. 浏览器访问 IP 地址对应的服务器
  4. 服务器返回网站数据给浏览器

添加 CDN 专用解析记录

  • 在域名的 DNS 解析设置中,添加一条 CDN 专用的解析记录
  • 这条解析记录会让域名被解析之后, 会指向一个 CDN 网络专用的处理 DNS 服务器

img

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 地址,可能是没什么人用的服务器,也可能是比较近的服务器

img

CDN 负载均衡服务器的作用

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

获取网站数据

  1. 浏览器拿到 CDN 服务器的 IP 地址之后,就会访问它
  2. 假设第一个 CDN 服务器没有需要的网站文件(缓存中没有),就会去 CDN 网络中的上层 CDN 服务器中拉取
  3. 如果上层 CDN 服务器没有还会继续往上层找
  4. 如果所有上层 CDN 服务器都没有找到,就会去源站中拉取
  5. 拉取成功之后,就会在刚刚经过的所有 CDN 服务器中缓存这些网站文件
  6. 最后第一个 CDN 服务器会将网络文件发送给浏览器

img

源站 IP

  • 浏览器需要访问的域名的网站服务器的 IP 地址
  • 在开通 CDN 的时候,就需要在 CDN 后台设置源站 IP
  • 网站的文件就是放在源站上的,比如静态资源文件、视频、音频

CDN 服务器的缓存机制

  • 通过 CDN 服务器的缓存机制,这样下次其他设备要去访问 www.bilibili.com 的时候,就能直接从 CDN 服务器的缓存中拉取到对应的网站文件了
  • 不需要访问源站的话,可以减少源站压力,还能加快请求速度

img

CDN 服务器的稳定性

  • CDN 的缓存机制除了能让用户快速打开一个网站,还可以提高网站的稳定性
  • 假设源站宕机,或者 CDN 服务器节点宕机了之后,CDN 网络中还有其他 CDN 服务器可用,这样访问网站就可以从可用的 CDN 服务器上拉取网站文件,不至于访问不了网站

待更新更深入的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908065.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于electron如何获取dropAndDrag的文件全路径

问题 当托放文件到窗口时,React应用无法获取文件的全路径,因为新版本去掉了“path”属性。那么如何在托放文件时,获取全路径呢? 参考链接 https://www.electronjs.org/docs/latest/api/web-utils 使用webUtils 如下图,preload.js里面把webUtils.getPathForFile暴露给渲染进…

Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件

this.$emit()是 Vue.js 中一个很有用的方法,可以帮助子组件向父组件传递事件前言 在Vue中,this.$emit()方法用于触发自定义事件。它是Vue实例的一个方法,可以在组件内部使用。 使用 this.$emit() 方法,可以向父组件发送自定义事件,并传递数据给父组件。父组件可以通过监听这…

Unity 运用新输入方法进行移动 (input System)

首先在包管理器中添加 input System重启后进入编辑项目中 找到玩家-配置 将Api兼容级别 改成 .NET Framework 活动输出处理改成 输入系统包(新)创建瓦片地图矩形 添加调色板 为瓦片地图添加Tilemap Collider 2D组件以及Composite Collider 2D(会自动添加Rigidbody 2d组件)组…

C#之Bitmap

SetPixel和GetPixel private void btnC_Click(object sender, RoutedEventArgs e) {OpenFileDialog dia = new OpenFileDialog();dia.Filter = "图像文件|*.png;*.bmp;*.jpg|所有文件|*.*";dia.Multiselect = false;if (dia.ShowDialog() == true){var fileName=dia.…

DVWA靶场 - Command Injection

Low 代码审计: 从源码中可以看出,代码只是执行了一个ping 命令,并没有对后面的参数做限制因此我们可以分别使用 ;、 |、||、&、&&进行注入;,命令行可以使用whoami、ipconfig/ifconfig、ls/dir 等Medium 代码审计: 对比代码发现,;和&& 被加入了黑名…

Linux基本使用-2

用户权限操作 1.su和exit命令 su [-] [用户名] 和 exit ==> 切换用户,不写默认为root;可用exit或者快捷键(ctrl+d)退至上一个用户 -表示切换用户后加载环境变量,建议带上 2.sudo和visudo命令 sudo 其他命令 ==> 为该命令临时授root权限,需为该用户==配置sudo认证 v…

leetcode每日一题:向字符串添加空格

题目 2109. 向字符串添加空格 给你一个下标从 0 开始的字符串 s ,以及一个下标从 0 开始的整数数组 spaces 。 数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前 。例如,s = "EnjoyYourCoffee" 且 spaces = [5, 9] ,那…

jmeter 压测过程

测试策略 1、基准测试,获取无压力情况下,系统的平均响应时间; 2、采用持续并发的策略,获取系统的在不同压力下平均响应时间,TPS ; 3、在现有硬件资源下,获取到最高TPS; 4、在现有硬件资源下,持续较高TPS运行,验证系统的稳定性; 5、资源增加时,最大TPS是否可以线性增…

BaseMultiTableInnerInterceptor源码解读

本文首发在我的博客:https://blog.liuzijian.com/post/mybatis-plus-source-multi-table-inner-interceptor.html 一、概述 BaseMultiTableInnerInterceptor是MyBatis-Plus中的一个抽象类,位于mybatis-plus-jsqlparser-4.9模块中com.baomidou.mybatisplus.extension.plugins.…

test_your_nc 1(含前提简要)

前提简要: 虚拟机版本:Ubuntu24.04 pwn环境搭配如下(后面若有其他这个链接没有配置上的工具,都会在相应题目部分给出更新/分享/提示) Pwn环境搭建 都是基于个人理解,不一定完全正确!!! 题目:先启动靶机 方法一: 常规测试 直接在虚拟机nc与靶机进行连接 这道题连接后可能…

双向可控硅的基本原理阐述

双向可控硅的基本原理阐述正向--第1象限 (1)当T2、T1极间加正方向电压(即UT2〉UT1)时,如下图1-13(a)所显示。在这样的情况下,若G极无电压,则T2、T1极间不导通;若在G、T1极间加正方向电压(即UG〉UT1),T2、T1极间马上导通,电流由T2极流入,从T1极流出,这时移去G极…