推荐阅读1??:https://mp.weixin.qq.com/s/ldENrXohUUhTUGvKof6T6w
推荐阅读2??:https://mp.weixin.qq.com/s/MMvMKl4c4yk8Y3Fyp9hKNA
推荐阅读3:https://blog.csdn.net/qq_35642036/article/details/82792061
前言:前两天朋友公司六寸地图项目使用CDN加速之后反而变慢了,表现上看怎么都解释不了,虽然后来排查了下不是CDN问题,但还是决定好好研究一下CDN是什么,及其实现原理。
一、什么是CDN?
1、CDN全称Content Delivery Network,即内容分发网络(腾讯云购买的时候也是从内容分发进去的)。
2、基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。(主要实现就是在用户和服务器之间建立一个缓存中转CDN,使用户能以最快的速度,从最接近用户的地方获得所需的信息)
3、注意:指定使用CDN服务是在DNS解析的过程,让DNS解析出CDN的地址,再让浏览器去访问这个地址(这个地址一般是又服务提供商给分配的一个CNAME地址)
二、CDN流程
- 用户向浏览器提供要访问的域名;
- 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库得到的是该域名对应的CNAME记录(由于现在已经是使用了CDN服务,CNAME为CDN服务商域名),为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。(CDN服务来提供最近的机器)
- 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
- 缓存服务器接收到请求后,查询本地缓存是否存在此请求数据,存在直接返回数据,不存在,进行下一步。(这里猜测是根据请求的路径作为key在缓存服务器进行了数据缓存。)
- 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
- 缓存服务器从实际IP地址得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程;
- 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
三、CDN关键技术
1. 缓存算法[Squid];2. 分发能力;3. 负载均衡[Nginx](4. 基于DNS[BIND]);5. 支持协议;
1、缓存算法决定命中率、源服务器压力、POP节点存储能力
2、分发能力取决于IDC能力和IDC策略性分布
3、负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量
4、基于DNS的负载均衡以CNAME实现[to cluster],智取最优节点服务,
5、缓存点有客户端浏览器缓存、本地DNS服务器缓存
6、缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存
7、支持协议如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速.