计算机网络-CDN
计算机网络-CDN
CDN概念
CDN是一种地理分布式网络,由高速主干网络连接的数据中心内的代理和文件服务器组成。CDN 用于减少网站或服务中一组指定文件和对象的延迟和加载时间。CDN可能有数千个节点,以最佳方式处理来自任何位置的传入请求。
解决了什么问题
CDN主要可以解决以下问题:
- 性能问题
- 离用户远(如服务器在美国,用户在中国、欧洲访问),内容分发效率低(访问速度慢)
- 当大量用户同时访问这一台服务器时,系统可能瘫痪
- 安全问题
- 当服务器客户端直连分发时,攻击者可以直接定位到源站,进行攻击。当采用CDN之后,攻击者可能攻击的不是源站,而是源站的拷贝节点。
访问的局部性
注:上图是zipf定律的累计分布函数
网页的访问遵循zipf定律:
- 80-20准则:20%的内容吸引80%的访问
- 排名第i位的内容访问次数yi~1/i^s(Log-log坐标中,是一条直线)
- zipf定律给予的启示:
- Web Cache:在靠近用户网络的地方缓存流行内容(20%),后续请求不需要再到原服务器(被动)
- 运营商采用(如电信),节省流量
- CDN:把内容拷贝到不同地域的多台服务器,减轻服务器负载,提升用户感知的质量(主动)
- 内容提供商(如PPTV),提升服务质量
- Web Cache:在靠近用户网络的地方缓存流行内容(20%),后续请求不需要再到原服务器(被动)
Web Cache
原理图
Web Cache的不足
- 存在版权、内容更新问题
- 很多类型的内容不能缓存(缓存后不起作用)
- 动态数据:股票信息、交互数据等
- 依赖于参数或者Cookies的数据(不同类型的客户端导致数据不同,即使缓存,如果缓存的数据与访问的客户端不对应,也无效)
- 加密的数据(HTTPS):80%以上的流量
CDN核心问题及方案
选择哪个CDN服务器?
也就是说,如果一个客户端访问采用CDN加速的站点,那么这个客户端会优先访问该站点的哪个服务器?
- 负载轻的服务器
- 性能高的处理器
- 较高的处理能力、带宽等
- 距离客户端近的服务器
- 距离可以是物理距离(IP地址的地理位置),也可以用RTT来衡量
- 成本(包括带宽、能耗等)较低的服务器
以下是大模型的答案:
当客户端访问CDN(内容分发网络)加速的站点时,确定客户端所访问的CDN服务器的过程涉及多个步骤和因素。以下是这一过程的概述:
DNS解析:
客户端首先会通过DNS(域名系统)查询站点的IP地址。由于站点使用了CDN服务,其DNS记录通常会指向CDN提供商的DNS服务器。
CDN提供商的DNS服务器会根据客户端的地理位置、网络状况、CDN节点的负载情况等因素,选择一个最优的CDN节点(即CDN服务器)来服务该客户端。
HTTP请求:
一旦DNS解析完成,客户端会向选定的CDN节点发起HTTP请求。
在HTTP请求中,客户端的IP地址、请求的URL、浏览器类型等信息都会被发送到CDN服务器。
CDN服务器选择:
CDN网络通常具有多个分布在全球各地的服务器节点。这些节点存储了站点内容的缓存副本。
CDN提供商的调度系统会根据一系列算法(如负载均衡算法、地理位置算法等)来确定哪个CDN节点最适合为该客户端提供服务。这个决策过程会考虑到网络延迟、服务器负载、内容缓存的可用性等因素。
响应返回:
一旦选定了CDN服务器,该服务器就会处理客户端的请求,并返回所请求的内容。
如果CDN服务器上没有缓存所请求的内容,它可能会向源服务器(即站点的原始服务器)发起回源请求,以获取内容并缓存到本地,然后再返回给客户端。
在这个过程中,客户端通常不需要直接知道它正在访问哪个CDN服务器。整个过程对客户端来说是透明的,客户端只需要通过DNS解析和HTTP请求来获取站点内容即可。而CDN提供商的DNS服务器和调度系统则负责确保客户端能够高效地访问到最近、最快的CDN节点。
CDN服务器缓存什么内容?
- 缓存经常访问的内容(20%)(预测流行度)
- 如果存不下怎么办?
- 部分缓存(减少不必要的存储)
- 内容级别:不流行的内容不要存多份
- 内容块级别:只存部分内容块(例如:只存储视频开头的一部分)
- 缓存替换(算法)
- B-LRU:大部分内容(~70%)只请求一次,用Bloomfilter(一种数据结构)记录是否请求过,请求大于2次进入缓存。
- LRU:即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。
- LFU:即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。
- Belady:假设已知后续请求序列,替换最晚被访问的(最佳置换算法,无法实现)
- 部分缓存(减少不必要的存储)
CDN与视频
DASH概念(了解)
DASH:基于HTTP的动态自适应流
QOS VS QOE
- QOS:服务质量,主要关注网络传输的技术指标,包括带宽、延迟、抖动、丢包率等。这些指标可以通过网络测量工具进行客观测量和评估。(客观)
- QOE:体验质量(用户体验),从用户的角度出发来衡量网络质量的好坏(用户的主观感受)(例如:关注用户的满意度)。
QOE视频主要关注哪些参数
- 高码率
- 少卡顿
- 少切换
直播时延分类
- 采集和编码
- 发送
- 分发(比重很大)
- 接收
- 解码+渲染
视频高卡顿
视频高卡顿主要分为:
- 卡顿次数(更重要)
- 卡顿时间
致谢
[1] https://learn.microsoft.com/zh-cn/microsoft-365/enterprise/content-delivery-networks?view=o365-worldwide
[2] 上图的课件来自于孙毅老师的计算机网络课程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义