当前位置: 首页 > 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)进行预测是十分必要的。目前,如何准确地对滚动轴承剩余使用寿命进行预测,仍是一个具有挑战的课题。对滚动轴承剩余寿命评估…...

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

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

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时,需要使用外部低速晶振...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。​ 一、准…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...