CDN全称Content Delivery Network,即内容分发网络。其基本思路是尽量避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。经过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统可以实时地根据网络流量和各节点的链接、负载情况以及到用户的距离和响应时间等综合信息将用户的请求从新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的情况,提升用户访问网站的响应速度。算法
在不一样地域的用户访问网站的响应速度存在差别,为了提升用户访问的响应速度、优化现有Internet中信息的流动,须要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方得到所需的信息,完全解决网络拥塞,提升响应速度,是目前大型网站使用的流行的应用方案.浏览器
由上图可见,用户访问未使用CDN缓存网站的过程为:缓存
2浏览器调用域名解析函数库对域名进行解析,以获得此域名对应的IP地址;3浏览器使用所获得的IP地址,域名的服务主机发出数据访问请求;4浏览器根据域名主机返回的数据显示网页的内容。
经过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。CDN网络是在用户和服务器之间增长Cache层,如何将用户的请求引导到Cache上得到源服务器的数据,主要是经过接管DNS实现,下面让咱们看看访问使用CDN缓存后的网站的过程:网络
对于CDN客户来讲,不须要改动网站架构,只须要修改本身的DNS解析,设置一个CNAME指向CDN服务商便可。原理在下面会解释经过上图,咱们能够了解到,使用了CDN缓存后的网站的访问过程变为:架构
用户向浏览器提供要访问的域名; 浏览器调用域名解析库对域名进行解析,因为CDN对域名解析过程进行了调整,因此解析函数库获得的是该域名对应的CNAME记录(因为如今已是使用了CDN服务,CNAME为CDN服务商域名) ,为了获得实际IP地址,浏览器须要再次对得到的CNAME域名进行解析以获得实际的IP地址;在此过程当中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。(CDN服务来提供最近的机器) 这次解析获得CDN缓存服务器的IP地址,浏览器在获得实际的IP地址之后,向缓存服务器发出访问请求; 缓存服务器根据浏览器提供的要访问的域名,经过Cache内部专用DNS解析获得此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求; 缓存服务器从实际IP地址得获得内容之后,一方面在本地进行保存,以备之后使用,二方面把获取的数据返回给客户端,完成数据服务过程; 客户端获得由缓存服务器返回的数据之后显示出来并完成整个浏览的数据请求过程。
1. 缓存算法[Squid];2. 分发能力;3. 负载均衡[Nginx](4. 基于DNS[BIND]);5. 支持协议;负载均衡
缓存算法决定命中率、源服务器压力、POP节点存储能力函数
分发能力取决于IDC能力和IDC策略性分布优化
负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量网站
基于DNS的负载均衡以CNAME实现[to cluster],智取最优节点服务,
缓存点有客户端浏览器缓存、本地DNS服务器缓存
缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存
支持协议如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速
既然CDN的核心做用是提升网络的访问速度,那么其用户也就是访问量很大的网站,例如ICP 、ISP、大型企业、电子商务网站和政府网站等。利用CDN技术,这些网站无需投资昂贵的各种服务器,设立分站点。经过采用CDN,CDN将负责信息传递工做,保证信息正常传输,而技术人员只须要维护网站内容,不须要考虑流量问题。这样,网站可保证用户获得更多的新业务,能够快速访问网络上的内容,得到更好的服务质量。举个例子来说,对于访问量比较大,而被访问内容更新周期比较长的网站,如政府网站,用户每每进行大量的查询工做。这类网站比较适合采用CDN。还有,你们是否注意到,在所谓的宽带社区中,瓶颈是社区的对外出口。这样,若是采用CDN无疑对社区用户使用视频点播、网络教育等宽带应用提供了保证。
任何一个新事物,在给现有模式带来改进的同时,也必然存在必定的局限,CDN也是这样。实时性不太好是CDN的致命缺陷。随着对CDN需求的逐渐升温,这一缺陷将获得改进,使来自于远程服务器的网络内容网页与复本服务器或缓存器中的网页保持同步。解决方法是在网络内容发生变化时将新的网络内容从服务器端直接传送到缓存器,或者当对网络内容的访问增长时将数据源服务器的网络内容尽量实时地复制到缓存服务器。