什么是CDN?
CDN(Content Delivery Network 内容分发网络)技术通过在各个地区部署缓存节点加速用户对静态资源的获取速度,提升用户体验,降低运营成本。CDN公司有网宿(ChinaNet)、蓝讯(ChinaCache)等
CDN的基本架构和访问流程
企业使用CDN的准备:
1.静态资源有独立的域名
2.删除授权DNS服务器A记录,添加CNAME记录
3.在CDN后台进行域名绑定
用户访问CDN的过程:
1.用户查询本地DNS缓存,本地没有则请求LDNS查询,LDNS本地没有缓存则请求授权DNS解析;
2.授权DNS返回CNAME记录;
3.LDNS请求CDN公司的智能DNS系统解析CNAME别名;
4.智能DNS返回A记录,LDNS返回IP给用户;
5.用户根据IP请求静态资源,Cache节点本地有缓存则返回资源;
6.若Cache节点本地无缓存则请求源站,源站返回资源后Cache节点再返回给用户。
简单概括:用户通过两轮DNS查询获得IP,访问Cache节点获得资源。
CDN实现的核心技术
1.DNS视图技术:
DNS视图技术,就是对同一个域名根据请求来源(LDNS)IP地址的不同返回不同的解析结果。
#BIND视图技术(DNS View) #定义用户来源 vim public.def acl "SD_CTC" { 58.56.0.0/15; 58.58.0.0/16; 60.235.0.0/16; 123.168.0.0/14; ... } #匹配IP来源,设置不同域名解析文件 vim view.def include "public.def"; view "view_SD_CTC" { match-clients { SD_CTC; }; zone "cache.com" IN { type master; file "zone/cache.zone"; } } vim named.conf include view.def;
2.CDN集群缓存和代理技术
LVS负载均衡使用DR模式达到高并发高吞吐量,同时屏蔽后面的Nginx反向代理服务器;
Nginx使用反向代理(Upstream)功能,采用url_hash方式分发流量,提高缓存的命中率同时节约缓存空间;
Squid缓存服务器根据HTTP协议中有关缓存设置的规定,实现对页面和资源进行缓存以及对源站的代理。关于HTTP头部信息中的缓存规则,下次有机会再单独聊。