阅读 760

进阶知识体系之你不能不知道的CDN

前言

与代码交手这些年,你是否光采依旧,生机盎然?

索引

  • CDN的基本概念
  • CDN的作用/好处/优缺点
  • CDN的工作流程与访问原理
  • CDN的应用场景
  • 哪些情况推荐使用CDN
  • 哪些情况不适用CDN
  • CDN加速是对网站所在服务器加速,还是对其域名加速?
  • 能不能让CDN不缓存某些即时性要求很高的网页和图片?
  • CDN和镜像站点比较有何优势?
  • CDN和双线机房相比有何优势?

CDN的基本概念

CDN(Content Delivery Network)就是内容分发网络,是构建在现有网络基础之上的智能虚拟网络。依靠部署在各个地方的边缘服务器,通过分布式存储负载均衡、网络请求的重定向内容管理等功能模块,以就近性和服务器负载的判断,确保内容以一种极为高效的方式为用户请求提供所需要的资源。先看图:

没有CDN

11.png

有CDN

12.jpeg

CDN的作用/好处/优缺点

1. 加速访问提高用户体验

CDN可以使用户就近获取所需资源,降低网络堵塞,提高用户访问响应速度和命中率

2. 有利搜索排名和转化

网站打开速度是影响网站排名的一个重要指标,使用CDN网站打开速度变快有利于搜索引擎排名,减少跳出率,从而有利于网站的转化率和销售量等

3. 减轻源站服务器压力

解决了网站的并发量过大造成服务器过载问题,由此减轻了源服务器的访问压力,节省了骨干网络带宽,可以接收更多流量,从而提升了网站的性能、可扩展性以及安全性

4. 解决宕机问题

当某个CDN服务器发生意外挂了(过载,攻击等),不会影响全部,系统会调用临近的健康的CDN服务器节点继续服务,从而具有更高的稳定性

5. 保障网站安全

相当于为网站添加了一把防护伞,能有效应对绝大部分网络攻击(DDOS等),网站被攻击也只会打到CDN节点为上,不会影响源站服务器;在内容安全上也可以解决盗版网站通过盗链之类的方法窃取内容

6. 节约成本

使用VPS或购买服务器来托管网站都是有带宽限制的,而使用CDN不用考虑购买服务器和后续的托管运维,服务器之间镜像同步,也不用为了管理维护技术人员而劳心劳力,降低了网站建设和维护成本,节省了人力、精力和财力

缺点

由于CDN采用各节点缓存的机制,如网站的静态网页和图片修改后,CDN缓存没有及时做相应更新,则看到的还是旧的网页。即使用户在浏览器使用Ctrl+F5的方式使浏览器端的缓存失效,也会因为CDN边缘节点没有同步最新数据而导致用户访问看到的还是旧见网页。我一般都是自己登录服务器管理后台去刷新CDN或者喊运维刷新

CDN的工作流程与访问原理

当给一个域名开通了CDN,要先给这个域名的DNS解析设置的后台添加一条CDN专用的解析记录,这条解析记录会让域名被解析之后指向一个CDN网络专用的处理DNS请求的服务器。并在CDN后台设置域名对应的原始web服务器(源站)的IP地址

  1. 输入URL回车后 会先经过本地DNS解析,DNS系统会将域名的解析权给CDN处理DNS请求的服务器
  2. 这台CDN服务器会返回CDN负载均衡服务器的IP地址
  3. 浏览器访问这台负载均衡服务器,该服务器会根据浏览器的网络地址在CDN网络中找一台在各种条件下都比较适合提供服务的CDN服务器,把IP地址返回给浏览器
  4. 浏览器收到后去访问这台CDN服务器,向它请求网站中的文件资源
  5. 如果这台服务器上没有相关(没有缓存)的网站文件,就去CDN网络中的上层缓存服务器中拉取,如果上层还是没有就继续向上找,如果一直都找不到,最后就会去源站上拉取网站文件,就是 回源
  6. 然后在每一层刚才查不到的CDN服务器上做个缓存
  7. 最后这台指定为你提供服务的CDN服务器再发送网站文件给浏览器,打开网站

如果有其他设备也通过它来获取这个网站的资源文件,就可以在有缓存的CDN服务器上直接返回相应的文件数据了,并不需要每次都去源站上拉取,这就是CDN分发网络的基本工作机制

用户访问首先是来自客户端或者浏览器,这里也会有一层缓存(强缓存)。大家知道,浏览器的缓存都遵循标准的http协议,指定该header后,到了时间就会失效。所以我们可以在源站回源给CDN时,添加如Cache-Control:max-age=60协议头,CDN会原封不动的透给浏览器,这样浏览器就可以实现1分钟内缓存失效,重新到CDN拉新的资源。

CDN的应用场景

CDN技术广泛应用于互联网的各个场景,如:图片小文件、大文件下载、游戏加速、视音频点播、直播流媒体、全站加速、安全加速等。只有纯内网软件开发部署场景不需要使用CDN(PS:也有内网需要用到CDN的场景的,比如电信IPTV,移动OTT,广电数字电视这种大内容应用,服务属于广域网了。)

1. 网站站点/应用加速

站点或者应用中大量静态资源的加速分发,建议将站点内容进行动静分离,动态文件可以结合云服务器ECS,静态资源如各类型图片、HTML、CSS、JS文件等,建议结合对象存储OSS存储海量静态资源,可以有效加速内容加载速度,轻松搞定网站图片、短视频等内容分发

2. 视音频点播/大文件下载分发加速

支持各类文件的下载、分发,支持在线点播加速业务,如MP4、flv视频文件,主要的业务场景是视音频点播、大文件下载(如安装包下载)等,建议搭配对象存储OSS使用,可提升回源速度,节约近2/3回源带宽成本

3. 视频直播加速

视频流媒体直播服务,支持媒资存储、切片转码、访问鉴权、内容分发加速一体化解决方案。结合弹性伸缩服务,及时调整服务器带宽,应对突发访问流量;结合媒体转码服务,享受高速稳定的并行转码,且任务规模无缝扩展

4. 移动应用加速

移动APP更新文件(apk文件)分发,移动APP内图片、页面、短视频、UGC等内容的优化加速分发。提供httpDNS服务,避免DNS劫持并获得实时精确的DNS解析结果,有效缩短用户访问时间,提升用户体验

哪些情况推荐使用CDN

  • 一般来说以资讯、内容等为主的网站,具有一定访问体量的网站资讯网站、政府机构网站、行业平台网站、商城等以动态内容为主的网站论坛、博客、交友、SNS、网络游戏、搜索/查询、金融等。
  • 提供http下载的网站软件开发商、内容服务提供商、网络游戏运行商、源码下载等。
  • 有大量流媒体点播应用的网站拥有视频点播平台的电信运营商、内容服务提供商、体育频道、宽频频道、在线教育、视频博客等

哪些情况不适用CDN

  • 有针对性、特定性、服务少数用户的用户群
  • 给定地理区域,本地化的用户群
  • 用户数据敏感、数据管辖范围限制的有监管和复杂的治理要求的

CDN加速是对网站所在服务器加速,还是对其域名加速

CDN是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访客访问加入CDN的域名获得加速效果,访问未加入CDN的域名,或者直接访问IP地址,则无法获得CDN效果

能不能让CDN不缓存某些即时性要求很高的网页和图片

只需要使用动态页面,asp,php,jsp等动态技术做成的页面不被CDN缓存,无需每次都要刷新。或者采用一个网站两个域名,一个启用CDN,另外一个域名不用CDN,对即时性要求高的页面和图片放在不用CDN的域名下

CDN和镜像站点比较有何优势

CDN对网站的访客完全透明,不需要访客手动选择要访问的镜像站点,保证了网站对访客的友好性。CDN对每个节点都有可用性检查,不合格的节点会第一时间剔出,从而保证了极高的可用率,而镜像站点无法实现这一点。CDN部署简单,对原站基本不做任何改动即可生效

CDN和双线机房相比有何优势

常见的双线机房只能解决网通和电信互相访问慢的问题,其它ISP(譬如教育网,移动网,铁通)互通的问题还是没得到解决。而CDN是访问者就近取数据,而CDN的节点遍布各ISP,从而保证了网站到任意ISP的访问速度。另外CDN因为其流量分流到各节点的原理,天然获得抵抗网络攻击的能力

结语

点赞支持、手留余香、与有荣焉

参考

CDN是什么?使用CDN有什么优势?- 知乎

文章分类
前端
文章标签