CDN (Content Delivery Network,即内容分发网络)指的是一组分布在各个地区的服务器。这些服务器存储着数据的副本,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
资源上传CDN(内容分发网络)后,当用户访问CDN的资源地址之后会经历下面的步骤:
- 首先经过本地的dns解析,请求cname指向那台cdn专用的dns服务器。
- dns服务器返回全局负载均衡的服务器ip给用户
- 用户请求全局负载均衡服务器,服务器根据ip返回所在区域的负载均衡服务器ip给用户。
- 用户请求区域负载均衡服务器,负载均衡服务器根据用户ip选择距离近的,并且存在用户所需内容的,负载比较合适的一台缓存服务器ip给用户。当没有对应内容的时候,会去上一级缓存服务器去找,直到找到资源所在的源站服务器,并且缓存在缓存服务器中。用户下一次在请求该资源,就可以就近拿缓存了。
注意:因为CDN的负载均衡和就近选择缓存都是根据用户的ip来的,服务器只能拿到local dns的ip,也就是网络设置中设置的dns ip,如果这个设置的不合理,那么可能起不到加速的效果。可能就近找到的缓存服务器实际离得很远。
“缓存”:就是说我们把资源 copy 一份到 CDN 服务器上这个过程;
“回源”:就是说 CDN 发现自己没有这个资源(一般是缓存的数据过期了),转头向根服务器(或者它的上层服务器)去要这个资源的过程。
回源原理
源站内容有更新的时候,源站主动把内容推送到CDN节点。
常规的CDN都是回源的。即:当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取。如果没有人访问,那么CDN节点不会主动去源站拿的。
回源域名一般是cdn领域的专业术语,通常情况下,是直接用ip进行回源的,但是如果客户源站有多个ip,并且ip地址会经常变化,对于cdn厂商来说,为了避免经常更改配置(回源ip),会采用回源域名方式进行回源,这样即使源站的ip变化了,也不影响原有的配置。
总结
cdn的原理主要答出负载均衡和缓存再就是dns解析这三部分。
通过dns解析到全局负载均衡服务器,然后再到区域的负载均衡,之后根据一些条件来找合适的缓存服务器。
如果第一次访问就从源站拿过来缓存。
需要注意的是一切都是根据请求的ip来的,如果ip不合理,那么可能起不到加速效果。
缓存和负载均衡的思想在减轻服务器压力方面其实是很常见的。
网友评论