CDN

简介

CDN(Content Delivery Network)即“内容分发网络”,使用它能够将源站内容分发至全国所有的节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术。它能够有效解决网络带宽小、用户访问量大、网点分布不均等问题。

源站内容(指image、html、js、css等) 这个属于内容分发

为什么有CDN

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

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

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

除了加速网站的访问之外,CDN还有一些作用

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

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

  • 为了保障你的网站安全

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

  • 为了异地备援

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

  • 为了节约成本

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

  • 为了让你更专注业务本身

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

img

原理(必须懂)

img

通过域名解析IP分析(加分)

img

  1. 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME百科 指向的 CDN 专用 DNS 服务器。

    (什么是CNAME:https://blog.csdn.net/DD_orz/article/details/100034049)

  2. CDN 专用 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。

  3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。

  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

  5. 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:

    • 根据用户 IP 地址,判断哪一台服务器距用户最近;
    • 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;

    +查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

  6. 全局负载均衡设备把服务器的 IP 地址返回给用户。

  7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

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

其它原理图

img

img

img

img

常用的CDN缓存软件

Varnish :可以认为是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的;

squid是功能最全面的比较传统的web cache server,有自己的存储引擎。,但是架构太老,性能不怎样。

nginx本来是反向代理/web服务器,用了插件可以做做这个副业,但是本身不支持的功能比较多

适用场景

  • 网站站点/应用加速

通俗讲就是static 内容加速,静态内容加速,如:html image js css 等

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

基本上都是视频点播,MP4、flv等视频文件,例如国内的优酷、土豆、腾讯视频、爱奇艺都是一样。

  • 视频直播加速

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

熊猫TV、斗鱼、淘宝直播

  • 移动应用加速

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

ios、安卓 端 APP 、微信小程序、支付宝小程序等。

题外内容

流量劫持

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

劫持分类

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

高仿、洗流量

CDN 可以通过分流 ,洗掉来自Ddos 大部分的攻击 。

那什么是CNAME呢?

简单来说就是域名的一个别名
https://blog.csdn.net/DD_orz/article/details/100034049

参考

原文地址:https://www.jianshu.com/p/e08a803fae93

原文作者架构师奇哥的博客地址:http://www.liuwq.com/views/other/jiagou.html#nginx

扩展内容

tengine

阿里根据nginx官方包衍生产品,作为一个搞运维的人员,相信大家都不对阿里云都不陌生吧,阿里云做的两个字NB,这款产品给我的印象,最牛逼的是可以动态加载库,无需编译。当然本人确实没怎么研究。以后会加深研究,看看有什么能在现有的项目中用到把。

openresty

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

posted @ 2022-10-07 22:32  黄河大道东  阅读(123)  评论(0编辑  收藏  举报