背景:mysql
当下的互联网应用都包含大量的静态内容,但静态内容以及一些准动态内容又是最耗费带宽的,特别是针对全国甚至全世界的大型网站,若是这些请求都指向主站的服务器的话,不只是主站服务器受不了,单端口500M左右的带宽也扛不住,因此大多数网站都须要CDN服务。web
CDN,Content Delivery Network,基于内容的分布式分发网络。
那么什么是CDN服务?
简单的说CDN就是让本来上海的浏览器要访问北京主站内容的请求转而由部署在上海或南京的缓存来受理,这样请求的数据只需通过一跳或有限的几跳就能到达请求端,有效利用带宽而且下降主站压力,对于电子商务网站和搜索引擎网站以及门户网站,CDN的合理应用显得尤其重要。sql
通常须要CDN服务的网站会选择如下的组织方案:
1.经过租用的IDC提供额外的CDN服务;
2..购买专业的CDN服务商的服务;
3.本身组建CDN网络;成本依次增高。数据库
CDN设计目的是实现WEB内容的负载均衡,防止出现访问请求热点,延时响应等WEB请求通病。基于此,CDN的特色能够说有
1. 分布式存储
2. 经过智能DNS解析或http重定向实现内容分发的负载均衡
3. 全局负载均衡管理与内容管理浏览器
CDN网络通常分为中心与边缘节点两部分,中心负责全局负载均衡管理与内容管理;缓存
中心节点的功能以下:
1. 随时监控边缘节点的健康情况(可用性,拥塞程度);
2. 根据边缘节点到请求端的距离,以及边缘节点的健康情况,按必定的策略重定向请求;
3. 与客户主站进行数据同步。服务器
传统的未加缓存服务的访问过程:网络
- 用户向浏览器提供要访问的域名;
- 浏览器调用域名解析函数库对域名进行解析,以获得此域名对应的IP地址;
- 浏览器使用所获得的IP地址,域名的服务主机发出数据访问请求;
- 浏览器根据域名主机返回的数据显示网页的内容。
CDN网络是在用户和服务器之间增长Cache层, 如何将用户的请求引导到Cache上得到源服务器的数据,主要是经过接管DNS实现,访问使用CDN缓存后的网站的过程:负载均衡
- 用户向浏览器提供要访问的域名;
- 浏览器调用域名解析库对域名进行解析,因为CDN对域名解析过程进行了调整,因此解析函数库通常获得的是该域名对应的CNAME记录,为了获得实 际IP地址,浏览器须要再次对得到的CNAME域名进行解析以获得实际的IP地址;在此过程当中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
- 这次解析获得CDN缓存服务器的IP地址,浏览器在获得实际的IP地址之后,向缓存服务器发出访问请求;
- 缓存服务器根据浏览器提供的要访问的域名,经过Cache内部专用DNS解析获得此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
- 缓存服务器从实际IP地址得获得内容之后,一方面在本地进行保存,以备之后使用,二方面把获取的数据返回给客户端,完成数据服务过程;
1.用户向浏览器输入www.web.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求;
2.网站的DNS域名解析器设置了CNAME,指向了www.web.51cdn.com,请求指向了CDN网络中的智能DNS负载均衡系统;
3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;
4.用户向该IP节点(CDN服务器)发出请求;
5.因为是第一次访问,CDN服务器会向原web站点请求,并缓存内容;
6.请求结果发给用户。分布式
固然不少细节没有涉及到,好比第1步,首先向本地的DNS服务器请求。第5步,内容淘汰机制(根据TTL)等。但原理大致如此。
对于普通的Internet用户来说,每一个CDN节点就至关于一个放置在它周围的WEB。经过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器同样,响应用户的请求。因为它离用户更近,于是响应时间必然更快。
每一个CDN节点由两部分组成:负载均衡设备和高速缓存服务器
负载均衡设备负责每一个节点中各个Cache的负载均衡,保证节点的工做效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通讯,实现整个系统的负载均衡。CDN的管理系统是整个系统可以正常运转的保证。它不只能对系统中的各个子系统和设备进行实时监控,对各类故障产生相应的告警,还能够实时监测到系统中 总的流量和各节点的流量,并保存在系统的数据库中,使网管人员可以方便地进行进一步分析。经过完善的网管系统,用户能够对系统配置进行修改。
CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等。 具体的我就不深究了,若有机会接触,再继续深刻。