3.CDN加速简介
什么是CDN
CDN的全称是Content Delivery Network,即内容分发网络。CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
CDN的访问流程
传统访问
访问流程:
- 北京联通用户访问www.a.com;
- 本地DNS向a.com的权威DNS发起查询;
- 权威DNS返回www.a.com的A记录;
- local把IP地址告诉用户的电脑;
- 用户通过IP进行访问想要访问网站;
- 网站返回用户请求的资源;
CDN访问
访问流程:
-
北京联通用户访问www.a.com;
-
本地DNS向a.com的权威DNS发起查询;
-
权威DNS返回给用户CNAME记录,指向CDN的智能调度系统cdn.com;
-
本地DNS请求cnd.com的A记录;
-
通过DNS视图或者其他的调度算法,返回距离本地DNS最近的节点的A记录;
-
本地DNS返回给用户要访问的IP,为CDN节点的IP
-
用户访问CDN节点;
-
CDN节点如果有数据,返回给用户数据;
-
如果CDN站点数据过期或者没有,向源站请求,之后返回给用户,同时自己保留一份副本。
-
local把IP地址告诉用户的电脑;
-
用户通过IP进行访问想要访问网站;
-
网站返回用户请求的资源;
在这些步骤里面,主要的有两个关键技术:
-
DNS视图:
通过定义ACL进行IP地址分类,通过 view 的 match-clients 配置不同的zone文件,从而达到调度至最近的CDN节点。 -
缓存:
通过Varnish,Squid等缓存类的服务,把后端节点的一些资源缓存在该节点,当用户请求资源时,如果CDN节点有的资源,直接返回,避免去后端请求。通过HTTP的一些缓存控制机制对缓存时效性进行控制,如果是资源过期,则会去后端请求,返回给用户,同时自己保留一份,当用户需要再次请求时,直接返回。
CDN数据刷新
-
主动刷新
设置时间策略。针对不同的内容设置不同的刷新时间,对于更新频率比较低的内容设置长时间如1天;对频繁更新的内容,我们可以设置成10分钟或更短,用来保持内容的一致。设置刷新时间可以按目录来设置,也可以按具体URL来设置,也可以按某个关键字段来设置。 -
被动刷新
当用户访问到数据之后,CDN没有,或者数据过期,然后去请求源站去拉取内容,使得自身内容保持一致