【计网 CDN】计算机网络 CDN(Content Delivery Network)分布式网络架构详解:中科大郑烇老师笔记 (八)

本文主要是介绍【计网 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

  • DASHDynamic 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的权威名字服务器

在这里插入图片描述

步骤:

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

在这里插入图片描述

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

在这里插入图片描述

这篇关于【计网 CDN】计算机网络 CDN(Content Delivery Network)分布式网络架构详解:中科大郑烇老师笔记 (八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287780

相关文章

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Java中的record使用详解

《Java中的record使用详解》record是Java14引入的一种新语法(在Java16中成为正式功能),用于定义不可变的数据类,这篇文章给大家介绍Java中的record相关知识,感兴趣的朋友... 目录1. 什么是 record?2. 基本语法3. record 的核心特性4. 使用场景5. 自定

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R