目录
- 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地址。由这个节点给用户提供视频流化服务。