读书笔记:CDN技术
需求背景
技术的出现是为了解决现实世界的问题,CDN也不例外。全球网络互通,用户分散在世界各地,如何保证用户可以快速稳定地获取到所需资源?CDN技术(Content Delivery Network,内容分发网络)由此应运而生。
什么是CDN
CDN系统由分散在各地的CDN节点组成,当用户访问网站时,该请求被调度到离用户最近的CDN节点,CDN节点接受用户请求并判断是否需要访问源站,最后把结果返回给用户。CDN节点是源站的代理,是用户与源站之间的缓存层。
CDN用户访问流程
1.用户浏览器输入www.jianshu.com
2.浏览器询问域名系统www.jianshu.com对应的ip地址
3.域名系统根据策略返回离用户最近的CDN节点的ip地址
4.浏览器根据得到的ip地址发起请求
5.CDN节点接受用户请求,判断该请求是否可以直接从缓存中获取数据
6.如果缓存命中,则直接返回给用户,否则向源站发起请求
7.源站收到CDN节点的请求并响应
8.CDN节点缓存源站返回的数据,并返回给用户
两个关键技术
1.DNS的视图技术:该技术使得来自不同区域、运营商的用户被调度到距用户最近的CDN节点。
2.CDN节点的缓存和代理技术:缓存是构建高并发网站必备的技术,在CDN中,如果节点上有未过期的资源如图片、CSS等,则它直接返回给用户从而缩小用户的等待时间。缓存和代理优化了已缓存文件的传输效率,同时对于未被缓存的文件,在某些情况下,在一定程度上可以优化用户到源站之间的网络链路。
CDN节点典型架构
LVS主备负载均衡服务器组
Nginx代理服务器组
Squid缓存服务器组
HTTP中的缓存控制协议
HTTP协议中有部分Header字段代表资源缓存时间,可以此判断是否需要向源站发起请求
1.Last-Modified: 表示该文件的最后修改时间
2.ETag:相当于静态资源的身份ID
3.Expries:资源到期时间
4.Cache-Control:资源被缓存的秒数,由于不同机器的时钟可能存在差别,相比于Expires,Cache-Control更加合理
缓存软件Squid
Squid是对http协议遵从性最好的缓存软件,因此它在CDN中得到了大量的部署,是众多CDN公司使用到的核心缓存软件
对squid有兴趣的可以进一步深入了解
结语
CDN技术是目前使用到的优化用户访问体验的最重要的手段之一。学习和理解CDN技术是有必要的。