CDN加速

技术博客 > 正文

一篇文章让你看懂CDN服务究竟是什么

2020-11-23

CDN的全称是Content Delivery Network,直译过来是“内容分发网络”,从字面意思来看,是对内容进行传递的网络。通俗来讲,CDN是一种网络加速技术,其实现的原理是在现有网络上再搭建一层网络。

看到这里,一定有人会问,现有网络为什么还要再建一层网络进行加速,这概念听起来就头皮发麻,网络卡的时候我把自家宽带从10M升级到100M不香吗?

香,当然香!起码看剧能从原来只能看高清以下跃升到HDR+杜比。但如果说没有CDN,只是基于常规网络,iphone12发布后你想买一个呢?

你会发现即使升到500M,旧手机刷坏了购买页面都出不来。要说清这个原因,就需要理解原有网络和部署CDN后的网络连接原理。先假设没有CDN,用户在浏览器输入网址后,网络的响应方式如下图所示:

网宿互联网安全报告之Web篇:超10亿攻击“盯上”这个与你我息息相关的行业

用户在浏览器输入网址后,域名将通过本地DNS(Local DNS/LDNS,例如ISP提供的DNS或公共DNS服务器)进行解析。如果都无法解析出IP地址,网址会递归地请求上游DNS服务器进行解析。最终,请求可以传递到托管区域的权威DNS服务器,此DNS服务器解析地址并将其返回给浏览器。

随后,浏览器直接连接到源站服务器(web或应用服务器)并下载内容。而每个后续请求都将由源服务器直接提供服务,并将静态内容进行本地缓存。如果来自相似或其他位置的另一个用户试图访问同一个站点,他也将执行同样的操作。

整个过程中的每一步都会增加延迟。如果源站位于远离用户的位置,则响应时间将受到显著延迟的影响,从而提供较差的用户体验。

网宿互联网安全报告之Web篇:超10亿攻击“盯上”这个与你我息息相关的行业

现在,我们再回到iphone12的购买场景:买家在中国,商城源站在美国,同一时间可能仅仅在中国就有几百万人争相列队去访问远在大洋彼岸的源站。这里面涉及两个问题,带宽,延迟。事实上,500M是运营商提供的带宽,并不是用户和源站服务器签订的,要得到源站服务器的回应,就得和几百万人分摊中美光纤的带宽,我们假设这是个万兆带宽,平均下来每个人却连0.01M都不到。

即便是带宽问题能解决,考虑到网络传输速递与距离成正比以及真实复杂的网络情况,例如多运营商参杂、各种交换机、丢包、TCP启动慢等问题,也会带来巨大的延迟。

既然隔着千山万水去美国源站不易,那为什么不把源站内容镜像部署在国内,离用户最近的服务器呢?这个思路也就是CDN网络的雏形,我们通过下图来理解CDN网络原理。

网宿互联网安全报告之Web篇:超10亿攻击“盯上”这个与你我息息相关的行业

原有网络上搭建CDN后,用户发起的DNS请求会由本地DNS转发到CDN的DNS服务器。这些服务器是CDN全局服务器负载均衡(Global Server Load Balancer,GSLB)的一部分。GSLB能够对整个网络情况进行评估,并实时监测资源池内服务器性能及可用情况。

GSLB收到DNS解析请求后,会调用当前性能最好的边缘服务器(通常为最靠近用户的CDN节点)解析DNS请求。边缘服务器是一组缓存和传递内容的服务器。DNS解析完成后,用户向边缘发出HTTP/HTTPS请求,并在GSLB的帮助下,边缘服务器将请求按照最佳路径将请求发送至源服务器。

源站服务器获取请求后,将对应内容沿路按照GSLB设定的最佳路径传递给用户,并在本地存储这些数据。后续请求都将从本地数据集获得服务,而不必再次访问源服务器。当然,实际情况是绝大部分预取内容都已经提前部署到边缘服务器,用户的访问请求可以直接在距离最近的节点获得相应内容,这比回源响应更快。

这就好比线上下单买手机,如果是原厂统一发货,从美国到中国最快也得3天,而实际情况是手机出厂后即刻就发往各个地区的直营店和经销商,下单后就近发货最快当天可提。

广泛分布的边缘服务器交织成GSLB的基础网络,其中央调度系统由让请求传输和内容回应更迅速,此外,对于高并发业务场景,例如,热门剧集上线,用户会在同一时间访问相同资源,通过GSLB全局调控和边缘服务器内容提前部署,能有效限制回源请求数。

这类场景的流量峰值与DDoS攻击类似。当大量的请求“攻击”单个服务器时,例如源站,会造成业务不可以,用户体验极为糟糕。

幸运的是,CDN是一个天然的DDoS抵御平台。GSLB和边缘服务器能够处理大量的请求,并在整个网络容量上平均分配负载。除此之外,CDN还可以启用web应用程序防火墙来保护应用程序免受L7攻击。

除此之外,CDN还能用来管理全球不同地区的访问。允许访问某些区域时,还可以拒绝访问其他区域。

让现有网络传输更快、更安全,访问更灵活,由GSLB统一调配的边缘服务器集群,这就是CDN。