【计网 CDN】计算机网络 CDN(Content Delivery Network)分布式网络架构详解:中科大郑烇老师笔记 (八)
目录
- 0 引言
- 1 为什么需要分布式的网络架构?
- 2 视频流化服务
- 2.1 多媒体:视频
- 2.2 存储视频的流化(Streaming)服务
- 2.3 流媒体传输协议:DASH
- 2.4 面临挑战:服务器如何向上百万用户同时提供视频流化内容?CDN
- 2.5 CDN的一个简单应用案例
- 2.6 真实CDN应用场景 Netflix(网飞)

- 🙋♂️ 作者:海码007
- 📜 专栏:计算机四大基础专栏
- 📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
- 💥 标题:【计网 CDN】计算机网络 CDN(Content Delivery Network)分布式网络架构详解:中科大郑烇老师笔记 (八)
- ❣️ 寄语:人生的意义或许是可以发挥自己全部的潜力,所以加油吧!
- 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正
0 引言
CDN是一种分布式的网络架构,上一章节讲的P2P也是一种网络架构,接下来总结一下其他的网络架构有哪些:
- P2P(Peer-to-Peer)网络:P2P网络是一种分布式网络架构,其中每个节点都可以充当客户端和服务器。在P2P网络中,节点之间可以直接通信和共享资源,而不需要传统的客户端-服务器模式。P2P网络常用于文件共享和流媒体传输等场景。
- 客户端-服务器(Client-Server)模式:这是最常见的网络架构之一。在客户端-服务器模式中,客户端发送请求,并从服务器接收响应。服务器提供服务、资源或数据,并等待客户端的请求。这种模式适用于许多互联网应用,如网站、电子邮件和数据库。
- 对等网格(Grid):对等网格是一种分布式计算架构,将许多计算资源组合在一起,形成一个大规模的虚拟计算机。这些计算资源可以是计算机、存储设备或其他设备。对等网格允许任务在多个节点上并行执行,从而提高计算效率和性能。
- SOA(Service-Oriented Architecture):SOA是一种基于服务的软件架构,其中应用程序通过服务的组合来实现特定的功能。服务是可独立访问和使用的软件组件,可以通过网络进行通信。SOA可以提高系统的灵活性、可扩展性和重用性,使不同的应用程序可以相互协作。
- 边缘计算(Edge Computing):边缘计算是一种将计算和数据处理推向网络边缘的架构。在边缘计算中,计算任务和数据处理可以在靠近数据源和终端设备的边缘节点上进行,减少了数据传输的延迟和网络拥塞。边缘计算常用于物联网(IoT)应用和对实时性要求较高的场景。

1 为什么需要分布式的网络架构?
目前视频流量占据着互联网大部分的带宽(例如YouTube,占据16%的ISP下行流量,同时有~1B YouTube用户),这就面临新的挑战:
- 挑战一(规模性):如何服务 ~1B级别的用户。假如是单个超级服务器是无法给这么多用户提供并发的服务的(可以思考一下为什么)。
- 挑战二(异构性):不同用户拥有不同的能力(例如:有线接入和移动用户:带宽丰富和带宽受限用户)
- 解决方案:分布式,应用层面的基础设施CDN。
CDN就是分布式的网络架构,来看看CDN是如何解决互联网杀手级应用高并发视频服务的。
2 视频流化服务
首先介绍一下互联网中视频是如何进行传输的
2.1 多媒体:视频


2.2 存储视频的流化(Streaming)服务
- 假如要将视频先全部下载完再观看的话,那样效率低、用户体验也很差。所以就需要一个新的方案解决视频内容传输服务(视频流化服务)。
- 视频流化服务是将视频内容实时传输给用户的服务,用户可以在不需要下载整个视频的情况下即时播放。下载一部分放入缓冲区中,然后用户在缓冲区中读取数据播放视频。下载和读取是并行的。

2.3 流媒体传输协议:DASH
- DASH(Dynamic Streaming over HTTP)是一种流媒体传输协议,用于在 HTTP协议 上实现动态自适应的视频流传输。DASH可以根据用户的网络条件和设备能力,在不同的比特率和分辨率之间进行自动切换,以提供流畅的视频播放体验。
所以使用DASH协议实现动态自适应的视频流传输服务,客户端和服务器需要如何工作:
- 服务器使用DASH协议需要做的工作:
- 将视频文件分割成多个块
- 每个块读取存储,编码与不同码率(8-10种)
- 告示文件(manifest file):提供不同块的URL,以及块的编码、描述信息等等信息
- 客户端使用DASH协议需要做的工作:
- 先获取告示文件
- 周期性地测量服务器到客户端的带宽
- 查询告示文件,在下一个时刻请求一个块,HTTP头部指定字节范围
- 如果带宽足够,选择最大码率的视频块
- 会话中的不同时刻,可以切换请求不同的编码块(取决于当时的可用带宽)
- “智能”客户端:客户端自适应决定:
- 什么时候 去请求块(不至于缓冲挨饿,或者溢出)
- 请求 什么编码速率 的视频块(当带宽够用时,请求高质量的视频块)
- 哪里 去请求块(可以向离自己近的服务器发送URL,或者向高可用带宽的服务器请求)
2.4 面临挑战:服务器如何向上百万用户同时提供视频流化内容?CDN
- 方法一:单个的、大的超级服务中心“mega-server”,该方法存在下面几点问题
- 服务器到客户端路径上跳数较多,瓶颈链路的带宽小导致停顿
- “二八定律”决定了网络同时充斥着同一个视频的多个拷贝,效率低(付费高、带宽浪费、效果差)
- 单点故障,性能瓶颈
- 周边网络的拥塞
- 总结:该方法简单,但是这个不可扩展
- 方法二:通过CDN全网部署缓存节点,存储服务内容,就近为用户提供服务,提高用户体验。CDN运营商有下面两种部署策略,分别是enter deep、bring home。
- enter deep:将CDN服务器深入到许多接入网
- 更接近用户,数量多,离用户近,管理困难
- Akamai,1700个位置
- bring home:部署在少数(10个左右)关键位置,如将服务器簇安装于POP附近(离若干1st ISP POP较近)
- 采用租用线路将服务器簇连接起来
- Limelight
网络应用商购买CDN运营商(例如,中国蓝汛)购买内容加速服务,CDN将其内容缓存到其他服务器上,用户通过域名解析,寻找跳数最少或者带宽相对较大的链路的中间服务器。
2.5 CDN的一个简单应用案例
下图中的一些名词解释:
- netcinema.com:是一种ICP(互联网内容提供商)提供的服务的原始服务器
- netcimem’s authoritive DNS:ICP的权威名字服务器
- KingCDN.com:CDN网络运营商加速服务的开始节点
- KingCDN authoritive DNS:CDN的权威名字服务器

步骤:
- Bob用户浏览netcinema.com网页,页面中有个视频链接,点击进去了。
- 浏览器解析视频链接,向Local Name Server 本地名字服务器解析IP地址,返回了netcimem’s authoritive DNS域名地址(没有直接返回IP地址,而是进行了重定向)
- 解析重定向URL后,重定向到KingCDN authoritive DNS服务器,然后该服务器返回了离用户最近的CDN服务器IP地址。由这个节点给用户提供视频流化服务。

2.6 真实CDN应用场景 Netflix(网飞)

相关文章:
【计网 CDN】计算机网络 CDN(Content Delivery Network)分布式网络架构详解:中科大郑烇老师笔记 (八)
目录 0 引言1 为什么需要分布式的网络架构?2 视频流化服务2.1 多媒体:视频2.2 存储视频的流化(Streaming)服务2.3 流媒体传输协议:DASH2.4 面临挑战:服务器如何向上百万用户同时提供视频流化内容࿱…...
C# 图解教程 第5版 —— 第9章 表达式和运算符
文章目录 9.1 表达式(*)9.2 字面量9.2.1 整数字面量9.2.2 实数字面量9.2.3 字符字面量9.2.4 字符串字面量 9.3 求值顺序9.3.1 优先级9.3.2 结合性 9.4 简单算术运算符9.5 求余运算符9.6 关系比较运算符和相等比较运算符9.7 递增运算符和递减运算符&#…...
TIA博途_Profinet通信故障诊断及常见错误解决方法汇总
TIA博途_Profinet通信故障诊断及常见错误解决方法汇总 1. 在线诊断报硬件组件的用户数据错误,设备组态不支持 解决方法: (1)检查模块终端盖板; (2)检查组态模块与实际组装模块顺序型号是否一致。 2. 网络视图,设备视图界面显示黑色感叹号 解决方法: PLC转离线,下载硬…...
Windows server部署filebeat到kafka
需求:Windows dhcp日志需要实时传输到elk或者其他告警平台。 1、filebeat下载地址:https://www.elastic.co/cn/downloads/beats/filebeat 2、下载后解压后配置filebeat.yml文件, 3、README.md文件中有运行的操作方法:cmd上进入f…...
Interview of ING internship for master thesis: LLM
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. Background2. Interview2.1 Intro2.2 project experience2.3 问题2.4 Q&A 总结 Interview of ING internship for master thesis: LLM 1. Background Proje…...
华为校招第三题 找最小数
给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。 示例 1 : 输入:num "1432219", k 3 输出:"1219" 解…...
大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)
文章目录 SQL 表值聚合函数(Table Aggregate Function) SQL 表值聚合函数(Table Aggregate Function) Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与…...
php+JavaScript实现callback跨域请求jsonp数据
摘要 JSONP 是 JSON with Padding 的缩写,是一种解决跨域数据获取的方案。由于浏览器的同源策略限制,不同域名之间的前端JS代码不能相互访问到对方的数据,JSONP通过script标签的特性,实现在不同域名的网页间传递数据。 其原理是…...
荣电集团与钕希科技签署全面战略合作
10月26日,荣电集团(以下简称荣电)与钕希科技南京有限公司(以下简称钕希科技)今天在合肥市签署全面战略合作协议,联合进军混合现实(Mixed Reality,以下简称MR)空间计算高科…...
C语言_文件_进程_进程间通讯 常用函数/命令 + 实例
文件相关命令: ps -aux|grep init? //搜索包含init名称的进程 top //linux下的资源管理器(动态)//open 返回的int 是给后面的读/写/光标移动 用的fd,没有open就不能进行后面的操作; int op…...
力扣第406题 根据身高重建队列 c++ 贪心思维
题目 406. 根据身高重建队列 中等 相关标签 贪心 树状数组 线段树 数组 排序 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &am…...
postgresSQL 数据库本地创建表空间读取本地备份SQL文件
使用pgAdmin4,你安装PG得文件夹****/16/paAdmin 4 /runtime/pgAdmin4.exe 第一步:找到Tablespaces 第二步:创建表空间名称 第三步:指向数据文件 第四步:找到Databases,创建表空间 第五步:输入数…...
贝锐花生壳内网穿透推出全新功能,远程业务连接更安全
贝锐旗下内网穿透兼动态域名解析品牌花生壳目前推出了全新的“访问控制”功能,可精确设置访问权限,充分保障信息安全,满足更多用户安全远程访问内网服务的需求。 通过这一功能,可实现指定时间、IP、地区等条件下才能远程访问映射的…...
NIO和BIO编程
一、网络通信编程基本常识 1、什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,一般由操作系统提供。 2、短连接 短连接是指socket建立连接之后传输数据确定接收完后关闭连接 3、长连接 长连接是指建立so…...
嵌入式系统设计师考试笔记之操作系统基础复习笔记二
目录 3、任务管理 (1)嵌入式操作系统的任务管理可以分为 (2)进程 (3)线程 (4)任务 (5)任务的创建与中止 (6)任务的状态任务有三…...
读图数据库实战笔记01_初识图
1. 图论 1.1. 起源于莱昂哈德欧拉在1736年发表的一篇关于“哥尼斯堡七桥问题”的论文 1.2. 要解决这个问题,该图需要零个或两个具有奇数连接的节点 1.3. 任何满足这一条件的图都被称为欧拉图 1.4. 如果路径只访问每条边一次,则该图具有欧拉路径 1.5…...
K-Means和KNN
主要区别 从无序 —> 有序 从K-Means —> KNN KNN:监督学习,类别是已知的,对已知分类的数据进行训练和学习,找到不同类的特征,再对未分类的数据进行分类。K-Means:无监督学习,事先不知道…...
【Python】【Flask】flask_login的初始化
【背景】 想要更高效地用现有的Flask_login包来实现用户管理方面的常用功能会话管理等。不想再手搓了。 【要点】 首先引入flask_login from flask_login import LoginManager, login_user, login_required, logout_user,current_user然后进行app级别的设置和初始化 login…...
Spring Cloud之API网关(Gateway)
目录 API网关 好处 解决方案 Gateway 简介 特征 核心概念 Route(路由) Predicate(断言) Filter(过滤器) 工作流程 Route(路由) 路由配置方式 1.yml配置文件路由 2.bean进行配置 3.动态路由 动态路由 Predicate(断言) 特点 常见断言 示例 Filter(过滤器) …...
nodejs+vue 电子书阅读系统
本文首先介绍了电子书阅读系统的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,随着网络技术的不断发展,多媒体技术应用渐渐的出现在教育领域中,电子书阅读已经成为社会的一个热…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

