Open linwu-hi opened 1 year ago
CDN (全称 Content Delivery Network),即内容分发网络。
CDN是构建在现有网络基础之上的智能虚拟网络,通过部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户能够就近获取所需内容,从而降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
简单来说,CDN就是根据用户位置分配最近的资源,让用户在上网的时候不用直接访问源站,而是访问离他“最近的”一个CDN节点,该节点其实是缓存了源站内容的代理服务器。如下图所示:
在没有应用CDN时,我们使用域名访问某个站点的路径为:
用户提交域名→浏览器对域名进行解释→DNS解析得到目的主机的IP地址→根据IP地址发出请求→得到请求数据并回复
应用CDN后,DNS解析不再返回IP地址,而是一个CNAME (Canonical Name) 别名记录,指向CDN的全局负载均衡。
CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键。
由于没有返回IP地址,本地DNS会向负载均衡系统发送请求,然后进入CDN的全局负载均衡系统进行智能调度:
综合上述因素,找到最合适的边缘节点,然后将该节点返回给用户,用户就能够就近访问CDN的缓存代理。
整体流程如下图所示:
缓存系统是CDN的另一个关键组成部分,缓存系统会有选择地缓存那些最常用的资源。
其中有两个衡量CDN服务质量的指标:
缓存系统也可以划分成层次,分为一级缓存节点和二级缓存节点。一级缓存配置高一些,直连源站,二级缓存配置低一些,直连用户。
回源的时候二级缓存只找一级缓存,一级缓存没有才回源站,这样可以有效地减少真正的回源。
现在的商业CDN命中率通常在90%以上,相当于把源站的服务能力放大了10倍以上。
CDN的目的是为了改善互联网的服务质量,通俗一点说其实就是提高访问速度。
CDN构建了全国、全球级别的专网,让用户就近访问专网里的边缘节点,降低了传输延迟,实现了网站加速。
通过CDN的负载均衡系统,智能调度边缘节点提供服务,相当于CDN服务的大脑,而缓存系统相当于CDN的心脏,缓存命中直接返回给用户,否则回源。
面试官:如何理解CDN?说说实现原理?
一、CDN是什么?
CDN (全称 Content Delivery Network),即内容分发网络。
CDN是构建在现有网络基础之上的智能虚拟网络,通过部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户能够就近获取所需内容,从而降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
简单来说,CDN就是根据用户位置分配最近的资源,让用户在上网的时候不用直接访问源站,而是访问离他“最近的”一个CDN节点,该节点其实是缓存了源站内容的代理服务器。如下图所示:
二、CDN实现原理
在没有应用CDN时,我们使用域名访问某个站点的路径为:
应用CDN后,DNS解析不再返回IP地址,而是一个CNAME (Canonical Name) 别名记录,指向CDN的全局负载均衡。
CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键。
负载均衡系统
由于没有返回IP地址,本地DNS会向负载均衡系统发送请求,然后进入CDN的全局负载均衡系统进行智能调度:
综合上述因素,找到最合适的边缘节点,然后将该节点返回给用户,用户就能够就近访问CDN的缓存代理。
整体流程如下图所示:
缓存代理
缓存系统是CDN的另一个关键组成部分,缓存系统会有选择地缓存那些最常用的资源。
其中有两个衡量CDN服务质量的指标:
缓存系统也可以划分成层次,分为一级缓存节点和二级缓存节点。一级缓存配置高一些,直连源站,二级缓存配置低一些,直连用户。
回源的时候二级缓存只找一级缓存,一级缓存没有才回源站,这样可以有效地减少真正的回源。
现在的商业CDN命中率通常在90%以上,相当于把源站的服务能力放大了10倍以上。
三、总结
CDN的目的是为了改善互联网的服务质量,通俗一点说其实就是提高访问速度。
CDN构建了全国、全球级别的专网,让用户就近访问专网里的边缘节点,降低了传输延迟,实现了网站加速。
通过CDN的负载均衡系统,智能调度边缘节点提供服务,相当于CDN服务的大脑,而缓存系统相当于CDN的心脏,缓存命中直接返回给用户,否则回源。
参考文献