面试官:说一说CDN的实现原理?

379 阅读3分钟

CDN是什么

CDN(全称 Content Delivery Network)是一种分布式服务器系统,通过在全球各地部署服务器,并在这些服务器上缓存站点的静态内容,以提高用户访问站点时的速度和性能。通过 CDN,网站的内容可以更快地传送给用户,从而改善用户体验、降低延迟和提高网站的稳定性。简而言之,CDN 就是一种通过在全球范围内分布服务器来缓存网站内容并将其提供给用户的技术。 简单来讲,CDN就是根据用户位置分配最近的资源。

CDN的工作原理

在没有应用CDN时,我们使用域名访问某一个站点时的路径为

用户提交域名→浏览器对域名进行解释→DNS 解析得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复

应用CDN后,DNS 返回的不再是 IP 地址,而是一个CNAME(Canonical Name ) 别名记录,指向CDN的全局负载均衡

负载均衡系统

由于没有返回IP地址,于是本地DNS会向负载均衡系统再发送请求 ,则进入到CDN的全局负载均衡系统进行智能调度:

  • 看用户的 IP 地址,查表得知地理位置,找最近的边缘节点
  • 看用户所在的运营商网络,找相同网络的边缘节点
  • 检查边缘节点的负载情况,找负载较轻的节点
  • 其他,比如节点的“健康状况”、服务能力、带宽、响应时间等

结合上面的因素,得到最合适的边缘节点,然后把这个节点返回给用户,用户就能够就近访问CDN的缓存代理。

整体流程如下图:

缓存代理

缓存系统是 CDN的另一个关键组成部分,它通过在CDN边缘节点上缓存和管理网站的静态内容,提供了更快速、高效的内容传输给用户,从而改善了用户体验、降低了延迟,并减轻了源服务器的负载压力。

其中有两个衡量CDN服务质量的指标:

  • 命中率:用户访问的资源恰好在缓存系统里,可以直接返回给用户,命中次数与所有访问次数之比
  • 回源率:缓存里没有,必须用代理的方式回源站取,回源次数与所有访问次数之比

缓存系统也可以划分出层次,分成一级缓存节点和二级缓存节点。一级缓存配置高一些,直连源站,二级缓存配置低一些,直连用户。回源的时候二级缓存没有只找一级缓存,一级缓存没有才回源站,可以有效地减少真正的回源。

总结

CDN 目的是为了改善互联网的服务质量,通俗一点说其实就是提高访问速度。 它构建了全国、全球级别的专网,让用户就近访问专网里的边缘节点,降低了传输延迟,实现了网站加速。通过CDN的负载均衡系统,智能选择边缘节点提供服务,相当于CDN服务的大脑,而缓存系统相当于CDN的心脏,缓存命中直接返回给用户,否则回源。