本博客 hjy-xh,转载请申明出处
基本概念
CDN 全称 Content Delivery Network,即内容分发网络,它的主要作用:为了加速网站的访问
它是一组分布在各个地区的服务器,这些服务器存储着数据副本,因此服务器可以根据服务器与用户的距离来判断使用使用哪些服务器最优,使用户就近获取所需内容
为什么有 CDN
当下的互联网应用都包含大量的静态内容,但静态内容以及一些准动态内容又是最耗费带宽的,特别是针对全国甚至全世界的大型网站,如果这些请求都指向主站的服务器的话,不仅是主站服务器受不了,单端口500M左右的带宽也扛不住,所以大多数网站都需要CDN服务。
根本上的原因是,访问速度对互联网应用的用户体验、口碑、甚至说直接的营收都有巨大的影响(尤其是电商网站),任何的企业都渴望自己站点有更快的访问速度。而 HTTP 传输时延对 web 的访问速度的影响很大,在绝大多数情况下是起决定性作用的:
- 物理层上的原因是光速有限、信道有限
- TCP/IP 协议的一些特点:协议上的原因有丢包、慢启动、拥塞控制等
前端开发中的应用
在前端开发中,CDN允许快速传输加载互联网内容所需的资产,包括HTML页面、JavaScript文件、样式表、图像和视频,有以下几点好处:
- 通过 CDN 向用户分发传输相关库的静态资源文件,可以降低我们自身服务器的请求压力
- 大多数 CDN 在全球都有服务器,所以 CDNs 上的服务器在地理位置上可能比你自己的服务器更接近你的用户(地理距离会按比例影响延迟)
- CDNs 已经配置了恰当的缓存设置(使用 CDN 节省了在你的服务器中对静态资源文件的配置)
CDN 的其它作用
- 跨运营商、跨地域的全网覆盖
互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问。CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点商,合理部署CDN边缘分发存储节点,充分利用带宽资源,平衡源站流量。阿里云在国内有500+节点,海外300+节点,覆盖主流国家和地区不是问题,可以确保CDN服务的稳定和快速 - 保障网站安全
CDN 的负载均衡和分布式存储技术,可以增强网站的可靠性,相当于无形中给主站加了一道屏障,应对绝大部分的互联网攻击 - 异地备援
当某个服务器发生意外故障时,系统会调用其它临近的正常的服务器节点进行服务 - 节约成本
投入使用 CDN 加速可以实现网站的全国铺设,不用考虑购买服务器和后续托管运维,服务器之间的镜像同步,节省了人力、精力和财力 - 可以更专注业务本身
CDN 加速厂商一般都会提供一站式服务,业务不仅局限于 CDN,还有配套的云存储、大数据服务等,全天运维监控支持,保证网络随时畅通,能够放心使用
工作原理
从上面的描述中不难看出 CDN 的工作原理:将主站的资源缓存在 CDN 的各节点,当请求命中某个节点的资源缓存时,就能立即返回客户端,这样不仅可以减轻主站服务器的压力,也能一定程度上避免网络拥塞,提高了用户访问资源的速度和体验
- 当用户访问某个URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器。
- CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
- 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。
- CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:
- 根据用户 IP 地址,判断哪一台服务器距用户最近;
- 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;
- 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
- 全局负载均衡设备把服务器的 IP 地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。