什么是CDN
CDN 的全城是 Content Delivery Network,即内容分发网络,尽可能避开互联网上有可能影响数据传输速度和稳定性的平静和环节,是内容传输的更快、更稳定。
在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层只能虚拟网络,比如说我们现在有一个服务器的集群,现在在北京,有几台服务器在北京,在上海访问北京服务器就会比较慢,我们就可以使用 CDN 解决这样的问题,可以在香港、上海建立一个 CDN 节点,这样当我的用户在某一个节点访问我们的网站时,可以去请求香港的 CDN 节点,这样距离他比较近,CDN 已经把真实服务器的数据缓存到了 CDN 当中,相当于一个镜像。
CDN 系统能够实时地根据网络流量和各节点的连接、敷在情况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
使用 CDN 的优势
本地 Cache 加速,提高企业站点(尤其含有大量图片和静态资源页面站点)的访问速度。
跨运营商的网络加速,保证不同网络的用户能得到最好的访问质量。
远程访问用户根据 DNS 负载均衡技术只能选择 Cache 服务器。
自动生成服务器的远程 Mirror(镜像)Cache 服务器,远程用户访问时从 Cache 服务器上读取数据,减少远程访问的带宽、分带网络流量、减轻原站点 WEB 服务器负载等能力。
广泛分布的 CDN 节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵。
CDN 的工作原理
传统访问
用户在浏览器输入域名发起请求-->解析域名获取服务器 IP 地址-->根据 IP 地址找到对应的服务器—>服务器响应并返回。
使用 CDN 访问
用户发起请求-->只能 DND 解析(根据 IP 判断地理位置、接入网类型、选择路由最短和负载最轻的服务器)-->获得缓存服务器 IP-->把内容返回给用户(如果缓存中有)—>向源站发起请求—>将结果返回给用户—>将结果存入缓存服务器。
CDN 适用场景
- 站点或者应用中大量静态资源的加速分发,例如:CSS,JS,图片和 HTML。
- 大文件下载
- 直播网站
CDN 的实现
BAT 等都有提供 CDN 服务。
可用 LVS 做4层负载均衡。
可用 Nginx,Varnish,Squid,Apache TrafficServer 做7层负载均衡和 Cache。
使用 squid 反向代理,或者 Nginx 等的反向代理