计算机网络-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
原理图
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] 上图的课件来自于孙毅老师的计算机网络课程。