定义: cdn(Content Delivery Network) 基于内容的分布式分发网络.
什么是cdn服务呢,简单来说,就是让原本的访问主站服务器的流量或者浏览器,去访问部署在理他较近的地方上的缓存服务器来处理,这样,就可以大大减轻主服务器的压力,而且同时能够提高用户的访问速度,降低带宽的压力.
一般需要cdn服务的网站会选择一下的组织方案:
通过租用的IDC提供额外的CDN服务;
2..购买专业的CDN服务商的服务;
3.自己组建CDN网络;成本依次增高。
Cdn设计的目的就是实现web内容的负载均衡,防止出现访问请求热点,延时响应,等情况,也可以用在游戏架构中,提高游戏的访问拉去资源的速度.
Cdn的特点:
1,分布式的存储,2,通过智能的dns解析或者http重定向实现内容的分发的负载均衡,3,全局负载均衡管理与内容管理,
Cdn的组成:
cdn网络中包含的功能实体包括了内容缓存设备,内容路由器,cdn内容管理系统等组成,
内容缓存:为CDN网络节点,位于用户接入点,是面向最终用户的内容提供设备,可缓存静态WEB内容和流媒体内容,实现内容的边缘传播和存储,以便用户的就近访问。
内容交换机: 处于用户接入集中点,可以均衡单点说个内容缓存设备的负载,并对内容进行负载均衡的访问控制.
内容路由器负责将用户的请求调度到适当的设备上,动态的均衡各个内容缓存站点的载荷分配,为用户的请求选择最佳的访问站点,同时来提高网站的可用性,内容路由器可根据多种因素制定路由,包括站点与用户的临近度、内容的可用性、网络负载、设备状况等.
注意:负载均衡是整个cdn的核心,负载均衡的准确性和效率将直接决定整个cdn的效率.
Cdn缓存: cdn缓存就是一个给网络信号暂时存储的寄存器,在cdn数据库中会缓存这大量的网络请求信号,然后cdn数据库会根据目前网络服务器的状态,进行不同的网络请求信号的分配,这样就能够使得很多闲置的网络服务器也能够工作起来,.
Cdn的网络结构:
Cdn网络一般分为中心与边缘节点,中心负责全局的负载均衡管理与内容管理..
架构图:
这里cdn进行层级的划分: 在cdn系统中,负责给用户提供内容服务的cache设备都部署在整个cdn网络I边缘,所以成为边缘节点.
Cdn的中心层是负责全局的管理和控制,同时保存着最多的cache,当边缘层未命中时,就会将中心层进行请求,如果中心层也没有命中则向源站进行请求数据.如果源站返回给了中心层,或者说中心层本身有对应的数据返回给了边缘层,边缘就会返回给用户同时自己会在本地进行一份缓存.
如果系统比较庞大,边缘层向中心请求内容太多,则需要区域节点,进行代理,负责一个区域的管理和控制.
CDN的工作原理
Cdn网络是在用户和服务器之间增加了一层cache,如何将用户的请求引导到cache上,那么就需要用dns,通过dns的解析调整进行请求的一个转发.
大致的流程: 1,用户请求一个域名, 2,浏览器对域名进行解析,这里详细的dns解析过程就不在阐述,由于cnd对域名的解析过程进行了调整,通过函数解析库得到的是该域名对应的cname记录之后的域名,所以浏览器会再次对cname的域名进行访问,请求ip,这个过程中,使用全局的负载均衡策略进行dns解析,其中根据地理位置等信息解析到就近的位置上,让用户对它进行访问.
3,得到缓存的服务器的ip地址,浏览器发起访问请求,
4,缓存服务器根据请求通过cache内部专用的dns解析后,得到域名的真实ip,再向真实的服务器发送请求,请求对应的数据,
5,源站服务器发出应答数据,缓存服务器得到数据后,在本地进行缓存一份备用,然后返回给用户一份,完成流程.
内容分发技术:
当源站需要分发内容的时候,可以将分发内容分发到CDN中间源 再由CDN中间源转发内容到各个CDN节点 如果CDN节点需要请求某个URL内容请求时,会将请求先发送到CDN中间源 再由CDN中间源主动向源站发送请求内容,最后将获取到的数据存储到中间源和内容节点上,从而达到节点加速的效果.
主要分为两种方式,主动推送:源站服务器向各个节点推送最新数据,进行更新.
被动推送:被动访问就是在用户访问时,向镜像服务器发送请求,如果镜像服务器上有内容,就直接返回给用户,如果没有,就到服务器源站获取后在返回给用户.
同时cdn边缘节点上的内容不是实时更新的,文件是以键值对的方式进行存储的,键值对的key通常是文件的url,值中保存了文件在服务器中的位置,或者文件的二进制值,同时保存了文件的http头部信息.