当前位置: 首页 > news >正文

中科大计网学习记录笔记(十一):CDN

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容😊😊😊

文章目录

      • 2.7 CDN
        • 2.7.1 视频流化服务
        • 2.7.2 多媒体流化服务:DASH
        • 2.7.3 CDN

2.7 CDN

💡 CDN(内容分发网络)是一种 分布式的网络架构,旨在 有效地交付互联网上的内容到最终用户。CDN通过将内容存储在全球各地的服务器上,并利用就近性原则,使用户能够从距离更近、性能更好的服务器获取所需的内容,从而提高内容传输的速度和可靠性。

2.7.1 视频流化服务

👉 视频播放可以说是杀手级的应用,因为它占用的带宽很大,同时需要服务的用户又非常多,所以设计这种应用需要解决这两个问题:

  • 并发问题
    因为带宽很大且用户量很多所以单个服务器显然是不可行的,需要分布式的架构
  • 异构性
    对于不同的设备,比如手机和电脑,要求的视频的分辨率是不同的,这就导致给不同的设备也许要传输不同的内容

💡 视频服务知识补充

  1. 视频:以固定速度显示的 图像 序列
  2. 空间冗余和时间冗余:因为视频资源较大,传输的时候可以利用图像内和图像间的冗余来降低编码的比特数目
    • 空间冗余: 空间冗余指的是在 同一时刻不同位置 的信号值之间的冗余关系。
    • 时间冗余: 时间冗余指的是在信号的 不同时间点 上存在的冗余关系。
  3. 视频的编码方式(CBR 和 VBR):
    • VBR(可变比特率):
      • 优点:VBR 可以根据视频内容的复杂度和运动情况动态调整比特率,从而在保持视频质量的前提下实现更高的压缩率
      • 缺点:VBR 编码算法通常更复杂,需要更多的计算资源。此外,在网络传输和存储时,由于比特率的变化,可能会导致难以预测的带宽需求或者存储空间占用。
    • CBR(恒定比特率):
      • 优点:CBR 提供了恒定的比特率,使得视频流的传输更加 稳定,适用于对带宽要求较为严格的场景,如实时直播、视频会议等。
      • 缺点:对于内容复杂度较高的视频,CBR 可能会导致过度分配比特率,浪费带宽,或者在内容复杂度较高时造成 视频质量损失
  4. 视频播放的缓冲:视频播放的缓冲是指在观看在线视频时,视频播放器会预先加载一段时间的视频数据到缓冲区中,以确保在播放过程中能够平滑地播放视频,避免因为网络波动或者服务器响应延迟而导致的视频卡顿或者停顿现象。这也就是为什么即使断网视频仍然可以持续一段时间的原因,因为缓冲区内仍有资源。
2.7.2 多媒体流化服务:DASH

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

💡 DASH(Dynamic Adaptive Streaming over HTTP)是一种 流媒体传输协议,允许服务提供商根据客户端的网络情况和设备性能动态调整 视频流的质量和码率

👉 服务器端:将视频分割成多个 ,每个块独立的存储,编码与不同的码率,同时生成一个告示文件,告示文件中包含每个块的 URL 地址。

👉 客户端:先获取告示文件,周期性的测试自己与服务器之间的带宽,用于选择接收何种码率的文件;客户端查询告示文件,在一个时刻请求一个块,这个请求是自适应的,请求的时机会使得缓存不会溢出但是又不会不足以支持播放。

通过这种方式可以解决上面提到的异构的问题,但是对于高并发和高带宽占用的问题还需要解决,这就需要 CDN 来解决

👉 CDN 解决了如下的问题

  1. 服务端到客户端之间的跳数比较多
  2. 网络中相同的资源很多(比如不同的人再看相同的节目),导致传输资源的浪费
  3. 服务器引发的单点故障和性能瓶颈的问题
2.7.3 CDN

💡 CDN 为购买其服务的公司提供内容加速的服务,让内容更加靠近用户。

👉 CDN 服务的提供商会在全网部署缓存节点,存储服务内容,从而将服务分散开来,解决并发的问题,同时就近为用户提供低延迟的服务,CDN 提供商通常将缓存节点部署在以下两种地方:

  • enter deep:深入到 ISP 提供的接入网中,距离用户更近,但节点较多,管理困难
  • bring home:部署在少数(十个左右)的关键节点位置

客户端通过告示文件中的地址来请求资源,通过域名的重定向来使得客户端能够找到距离最近的节点来接收数据。

简单的 CDN 案例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

👉 在用户的角度看:用户访问了网页,在网页中点击了链接,网页为其提供了视频播放服务

👉 实际的业务流程:

  • 用户点击了链接,浏览器调用 Local DNS 来解析 IP 地址

  • 定位到播放服务提供方的权威 DNS 服务器(负责管理特定域名区域信息的DNS服务器)

  • DNS 服务器通过重定向将请求定位到 CDN 的权威 DNS 服务器

  • CDN 的服务器再提供一个能够提供最优服务的 IP 地址给用户

  • 最终浏览器请求到这个 IP 地址。

相关文章:

中科大计网学习记录笔记(十一):CDN

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…...

[缓存] - 2.分布式缓存重磅中间件 Redis

1. 高性能 尽量使用短key 不要存过大的数据 避免使用keys *:使用SCAN,来代替 在存到Redis之前压缩数据 设置 key 有效期 选择回收策略(maxmemory-policy) 减少不必要的连接 限制redis的内存大小(防止swap,OOM) slowLog …...

1191. 家谱树(拓扑排序,模板题)

活动 - AcWing 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。 给出每个人的孩子的信息。 输出一个序列,使得每个人的孩子都比那个人后列出。 输入格式 第 11 行一个整数 n,表示家族的人数; 接下来 …...

CSS之BFC

BFC概念 BFC(Block Formatting Context)即块级格式化上下文,是Web页面的可视CSS渲染的一部分。它是一个独立的渲染区域,让其中的元素在布局上与外部的元素互不影响。简单来说,BFC提供了一个环境,允许内部的…...

2024 年合并 PDF 文件的免费 PDF 合并软件榜单

合并 PDF 是当今人们寻找的最重要的功能之一。在本文中,您将了解前五名的 PDF 合并软件以及详细的介绍,以便您选择最佳的。如果您想将所有重要信息都放在一个文件中,而不是在不同的文件中查找,那么合并 PDF 文件是必要的。通过这种…...

Python教程56:海龟画图turtle画kitty猫

---------------turtle源码集合--------------- Python教程91:关于海龟画图,Turtle模块需要学习的知识点 Python教程51:海龟画图turtle画(三角形、正方形、五边形、六边形、圆、同心圆、边切圆,五角星,椭…...

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。 在前面讨论传值和传址的时候,我们就已经开始使用了指针来传递地址。 在正式介绍指针之前,我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道,每个房子都有自己的地址&#…...

pwn学习笔记(3)ret2syscall

pwn学习笔记(3) ROP原理: ​ ROP(Return Oriented Programming)返回导向编程,主要思想是通过在程序中已有的小片段(gadgets)来改变某些寄存器或者变量的值,从而控制程序的执行流程。 栈溢出–…...

React18原理: 生命周期中特别注意事项

概述 生命周期就是一个组件从诞生到销毁的全过程(包含错误捕获,这里暂且不聊这个)react 在组件的生命周期中注册了一系列的钩子函数支持开发者在其中嵌入代码,并在适当的时机运行生命周期本质上就是组件中的钩子函数,主要有三个主要的钩子 挂…...

【C语言】Linux内核bind系统调用代码

一、Linux 4.9内核bind系统调用代码注释 int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen) {struct socket *sock; // 定义socket对象的指针struct sockaddr_storage address; // 用于存储从用户空间复制过来的地址int err…...

Ubuntu下Anaconda+PyCharm搭建PyTorch环境

这里主要介绍在condapytorch都正确安装的前提下,如何通过pycharm建立开发环境; Ubuntu下AnacondaPyCharm搭建PyTorch环境 系统环境:Ubuntu22.04 conda: conda 23.11.0 pycharm:如下 condapytorch的安装教程介绍,请点击这里&…...

酷开科技荣获“消费者服务之星”称号后的未来展望

恭喜酷开科技荣获2023年第四季度黑猫平台“消费者服务之星”称号!这是对酷开科技长期以来坚持用户至上、用心服务的肯定和认可。作为OTT行业的佼佼者,酷开科技一直秉承着“以用户为中心”的服务理念,不断追求卓越品质,为用户提供更…...

UVA1449 Dominating Patterns 题解

UVA1449 Dominating Patterns 题解 板子题诶。 解法 AC 自动机模板题,因为数据范围比较小,所以不加拓扑排序优化建图即可通过本题。这里简单介绍一下拓扑排序优化建图。 在查找时,每次都暴力的条 f a i l fail fail 指针是很消耗时间的&…...

【C语言】数据结构#实现堆

目录 (一)堆 (1)堆区与数据结构的堆 (二)头文件 (三)功能实现 (1)堆的初始化 (2)堆的销毁 (3)插入数据 …...

AES加密中的CBC和ECB

目录 1.说明 2.ECB模式(base64) 3.CBC模式 4.总结 1.说明 AES是常见的对称加密算法,加密和解密使用相同的密钥,流程如下: 主要概念如下: ①明文 ②密钥 用来加密明文的密码,在对称加密算…...

【C++】类和对象(四)

前言:在类和对象中,我们走过了十分漫长的道路,今天我们将进一步学习类和对象,类和对象这块荆棘地很长,各位一起加油呀。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量&a…...

XGB-5: DART Booster

XGBoost 主要结合了大量的回归树和一个小的学习率。在这种情况下,早期添加的树是重要的,而晚期添加的树是不重要的。 Vinayak 和 Gilad-Bachrach 提出了一种将深度神经网络社区的 dropout 技术应用于梯度提升树的新方法,并在某些情况下报告了…...

HiveSQL——不使用union all的情况下进行列转行

参考文章: HiveSql一天一个小技巧:如何不使用union all 进行列转行_不 union all-CSDN博客文章浏览阅读881次,点赞5次,收藏10次。本文给出一种不使用传统UNION ALL方法进行 行转列的方法,其中方法一采用了concat_wsposexplode()方…...

Python环境下基于指数退化模型和LSTM自编码器的轴承剩余寿命预测

滚动轴承是机械设备中关键的零部件之一,其可靠性直接影响了设备的性能,所以对滚动轴承的剩余使用寿命(RUL)进行预测是十分必要的。目前,如何准确地对滚动轴承剩余使用寿命进行预测,仍是一个具有挑战的课题。对滚动轴承剩余寿命评估…...

无人机竞赛视觉算法开发流程开源计划(询问大家意见)

本科中参加过一系列的无人机机器人竞赛,像电赛、工训赛、机器人大赛这些,有一些比较常用的方案打算开源一下。现在读研了,也算是对本科的一个总结,但是还是想看看大家意见,大家有什么需求可以在评论区说,我…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...