文章转载自:https://blog.csdn.net/lzj3462144/article/details/90270755
最近项目在做优化,计划将项目中高频接口放入CDN,正好也趁此学习下。
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上内容分发网络,依靠在各地部署的缓存服务器,通过中心平台的负载均衡/内容分发/调度等功能模块,使用户可以就近获取所需要的内容,从而达到降低网络用塞,提高系统访问速度的技术。CDN的关键技术是内容存储和分发技术。
CDN的思路是:通过在网络各处放节点服务器,这个服务器构成在现有网络基础之上的一层智能虚拟网络,CDN能够将用户的请求分发到距离用户最近的服务器节点上,提高用户访问速度。比如:100台CDN服务器分布在全国各地,如果从广东访问,会从最近的节点返回资源,这就是核心。
1.为了实现跨运营商,跨地域的全网的覆盖
阿里云在国内有500+节点,在国外,也有很多节点保证了网络的顺畅的运行。
2.加快系统的响应速度,更快的响应用户的请求
浏览器输入域名——>解析服务器获取对应iP地址——>向该iP对应服务器发送访问请求——>返回给前端渲染页面——>展示给用户
和传统不同,CDN网络是在用户和服务器之间增加了一层缓存层,将用户的请求引导到最优的缓存节点而不是服务器源站,从而加块访问速度。
完整的CDN工作流程
(1)当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
(2)CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
(3)用户向CDN的全局负载均衡设备发起内容URL访问请求。
(4)CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
(5)区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
(6)全局负载均衡设备把服务器的IP地址返回给用户。
(7)用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
本部分内容,参考链接:https://www.zhihu.com/question/36514327/answer/184247188
类比:传统网站访问类似于淘宝购物,而CDN类似于京东购物。淘宝供应商中心是一个,从一个地方发货,发向全国各地;而京东的自营的电子产品,它会在全国各地建立各种仓库,然后根据下单的地点,寻找距离我们最近的仓库,从而降低送货的时间。
网站中有大量的css,html,js等文件,可以将这些静态内容推送到CDN
软件下载,视频点播等存储网站。
负载均衡是整个CDN的核心,负载均衡和准确性和效率性直接决定了CDN的效率和性能。
负载均衡将网络的流量尽可能均匀的分布在能完成相同任务的服务器或者网络节点上进行处理,避免出现网络分配忙闲不均的情况,这样可以提高网络流量,也可以提高网络性能。
cdn需要考虑两个方面的内容存储技术,一个是内容源的存储,一个是内容在cache节点中的分布式存储,由于内容的规模和吞吐量比较大,因此需要海量存 储架构来解决。
内容分发技术通过构建网络,将链接到IP网络上的内容,快速的传输到用户终端。
CDN主要由初始服务器,分布于各个节点的缓存服务器,重定向DNS服务器和内容交换服务器。
(1)初始服务器负责生成服务器信息内容
(2)缓存服务器负责存储初始服务器的部分或者全部的信息,距离用户近。
(3)重定向服务器 负责向用户提供最近的服务器iP地址,减轻骨干网络压力。
(4)内容交换服务器 负责完成服务器之间的负载均衡功能
做CDN之前的客户真正的服务器。
也成为CDN节点,Cache节点,指的是距离最终用户接入具有较少的中间节点的网络节点,以此来提高网站访问的速度。
CDN只是对网络的某一个具体的域名加速,如果同一个网网站由多个域名,则访客访问加入CDN的域名获得加速效果,访问未加速CDN的域名,或者直接访问IP地址,无法获取CDN的效果。
CDN采取的是各个节点缓存的机制,网站的静态网页和图片修改之后,如果CDN缓存尚未做更改,那么看到的还是旧的网页。项目中经常遇到这个问题,为了解决这个问题。CDN管理面板中提供了URL推送服务,手动来通知CDN各个节点刷新自己的缓存。在URL的推送地址栏中,输入具体的url地址或者目录,刷新缓存即可生效。
CDN百度百科
知乎讨论
使用CDN之后的网站访问过程变化
小结
大体上了解了CDN内容和原理,后续还会在使用过程中深入理解。处于初学阶段,若有出入,请多多指教?!