si1ent

CDN学习与介绍

2020-06-06

CDN 其实是 Content Delivery Network 的缩写,即“内容分发网络”源站内容(image、html、js、css等)一种合理解决因网络请求较大并自动分配因地域分开而实现的网络加速技术.

CDN 诞生于二十多年前,随着骨干网压力的逐渐增大,以及长传需求的逐渐增多,使得骨干网的压力越来越大,长传效果越来越差.于是在 1995 年,MIT 的应用数学教授 Tom Leighton 带领着研究生 Danny Lewin 和其他几位顶级研究人员一起尝试用数学问题解决网络拥堵问题.

他们使用数学算法,处理内容的动态路由安排,并最终解决了困扰 Internet 使用者的难题.后来,史隆管理学院的 MBA 学生 Jonathan Seelig 加入了 Leighton 的队伍中,从那以后他们开始实施自己的商业计划,最终于 1998 年 8 月 20 日正式成立公司,命名为 Akamai.

同年 1998 年,中国第一家 CDN 公司 ChinaCache成立.

1
蓝汛 是中国第一家CDN公司

在接下来的20年中,CDN行业历经变革和持续发展,行业也涌现出很多云CDN厂商.阿里云CDN是2008年从淘宝CDN起家,在2014年正式发展成为阿里云CDN的,它不仅为阿里巴巴集团所有子公司提供服务,同时也将自身的资源、技术以云计算的方式输出.

为什么有CDN

当下的互联网应用都包含大量的静态内容,但静态内容以及一些准动态内容又是最耗费带宽的,特别是针对全国甚至全世界的大型网站,如果这些请求都指向主站的服务器的话,不仅是主站服务器受不了,单端口500M左右的带宽也扛不住,所以大多数网站都需要CDN服务.

根本上的原因是,访问速度对互联网应用的用户体验、口碑、甚至说直接的营收都有巨大的影响,任何的企业都渴望自己站点有更快的访问速度.而HTTP传输时延对web的访问速度的影响很大,在绝大多数情况下是起决定性作用的,这是由TCP/IP协议的一些特点决定的.物理层上的原因是光速有限、信道有限,协议上的原因有丢包、慢启动、拥塞控制等.

这就是你使用CDN的第一个也是最重要的原因:加速网站访问

除网站加速外,还有其他作用

  • 实现跨运营商、跨地域的全网覆盖

互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问.CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点商,合理部署CDN边缘分发存储节点,充分利用带宽资源,平衡源站流量.阿里云在国内有500+节点,海外300+节点,覆盖主流国家和地区不是问题,可以确保CDN服务的稳定和快速.

  • 保障网站安全性

CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当无无形中给你的网站添加了一把保护伞,应对绝大部分的互联网攻击事件;防御系统也能避免网站遭到恶意攻击.

  • 异地备援

当某个服务器发生意外故障时,系统将会调用其他临近的健康服务器节点进行服务,进而提供接近100%的可靠性,这就让你的网站可以做到永不宕机.

  • 节约成本

投入使用CDN加速可以实现网站的全国铺设,你根据不用考虑购买服务器与后续的托管运维,服务器之间镜像同步,也不用为了管理维护技术人员而烦恼,节省了人力、精力和财力.

  • 让你更专注业务本身

CDN加速厂商一般都会提供一站式服务,业务不仅限于CDN,还有配套的云存储、大数据服务、视频云服务等,而且一般会提供7x24运维监控支持,保证网络随时畅通,你可以放心使用.并且将更多的精力投入到发展自身的核心业务之上.

 原理

通过域名解析IP分析

  1. 当用户请求URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器.
  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户.
  3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求.
  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求.
  5. 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址.
  6. 根据用户 IP 地址,判断哪一台服务器距用户最近.
  7. 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容.
  8. 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力.
  9. 全局负载均衡设备把服务器的 IP 地址返回给用户
  10. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端.如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地.

DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问.使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的全局负载均衡(GSLB)设备,将需要分发的内容注入 CDN,就可以实现内容加速了.

常用CDN软件

  • Varnish :可以认为是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的.
  • Squid:功能最全且比较传统的Web cache server,有自己的存储引擎.但是架构太老,性能一般.
  • nginx:本来是反向代理/web服务器,用了插件可以做这个副业,但是本身不支持的功能比较多(Nginx功能其实还有很多可以学习).
  • apache traffic server(ATS):很多单位都在使用,未来趋势.

    各厂家使用情况

  • 网宿:使用ATS,按照网宿的规模应该是有能力进行二次开发。
  • 蓝汛:早期是squid,当其余厂商拥抱ATS时,由于技术包袱未及时投入ATS,但目前也在使用ATS
  • 小米、京东等主要使用ATS
  • 腾讯:使用ATS
  • 百度:nginx + 自研缓存
  • 阿里:tengine + 自研swift,早起使用ATS,但由于某些原因放弃ATS使用自研,不过自研可能是C开发,应该是参考哪款开源软件,比如文件系统借鉴的是squid的文件系统。
  • 又拍云:之前使用ATS,最新的消息是自研BearCache,应该不是全量部署,从文章来看猜测是优化了网络框架和热重启架构,应该也是参考ATS等。
  • 新浪:Nginx + ncache,需要第三方模块并且插件化开发,性能损失比较大

适用场景

  • 应用加速

静态内容加速,如:html image js css 等

  • 大文件下载分发加速

基于视屏、MP4等大文件加速

  • 视频直播加速

视频直播加速,流媒体切片、转码、码流转换等等

  • 移动应用加速

移动APP更新文件(apk文件)分发,移动APP内图片、页面、短视频、UGC等内容的优化加速分发.

  • 抵抗DDoS

CDN提供了大型分布式服务器基础结构来吸收攻击量.

 扩展

流量劫持

CDN本身就是一种DNS劫持,只不过是良性的. 不同于黑客强制DNS把域名解析到自己的钓鱼IP上,CDN则是让DNS主动配合,把域名解析到临近的服务器上.

劫持分类

  • 域名劫持:又称DNS劫持,通常是指域名指向到非正常IP(恶意IP),该恶意IP通过反向代理的方式,在能返回网页正常内容的情况,可能插入恶意代码、监听网民访问、劫持敏感信息等操作.通常验证一个域名是否被劫持的方法是PING一个域名,如果发现PING出来的IP不是您的服务器真实IP,则可以确定被劫持了(当然如果使用了云安全等安全加速平台,得到的IP为平台IP,并非劫持这里需要知道).
  • 数据劫持:通常由电信运营商中某些员工等勾结犯罪分子,在公网中进行的数据支持插入,此类情况极隐蔽,不会改变用户域名解析IP,而是直接数据流经运营商宽带时在网页中挺入内容,此类情况,建议网页启用HTTPS加密,可以解决这一问题(通信是加密的,运营商无法插入恶意内容).

高防、流量清洗

CDN 可以通过分流 ,清洗掉恶意DDSS大部分的攻击流量.

参考

1
2
https://zhuanlan.zhihu.com/p/113037678

Tags: CDN
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章