您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

cdn 有什么用?怎么选择 cdn 使用

时间:2019-10-08 13:38:31  来源:  作者:
cdn 有什么用?怎么选择 cdn 使用

 

如果说访问量上升对网站性能有很大考验,那突发事件,则是检验网站架构的试金石。从某 L 和某 G 谈恋爱,至某 W 和某 M 离婚,到某 F 和某 Z“官宣“事件,都导致某 SNS 网站宕机崩溃,无法为广大网民提供正常服务。互联网圈有一句比较有名谜之反问:

你的网站能承受几个明星出轨?

由此可见,想做好一个网站,远远没有看起来那么简单。

无论你将 WEB 前端进行何种方式的优化,是页面动静分离?各种文件压缩算法?还是将 Web Server 从老牌 Apache 换成性能之王 Nginx(以及其变种)?在绝对的访问量面前,一切都变得脆弱无比,不堪一击!更可怕的是,除了热点爆料会导致海量、合法的用户访问请求,还有隐藏在暗处的黑客们源源不断发起的各种 DDoS/HTTP Flood 攻击,这些都会分分钟让你的网站瞬间瘫痪。无论是合法的,还是非法的,这些流量就像一支庞然大军,具有摧枯拉朽的绝对实力。

因此,在互联网+追求合作共赢的时代,热门网站更加需要专业团队的安全保障。安全防护类产品可在网站前面砌起一座城墙,将流量大军挡在城门之外,同时将被访问网站的真实服务器隐藏起来,只接受少量、合法的流量的请求访问。专业团队固然能够提供 DDoS/CC/WAF 等各种防护手段来过滤异常流量,但这不是我们今天的主题,我们要说的,是在防护的同时对网站的优化手段:CDN 缓存优化

首先让我们来看一张 CDN 的整体架构图:

cdn 有什么用?怎么选择 cdn 使用

 

我们知道,对网站请求返回的文件,有动态文件静态文件两类。所谓静态文件,具有一个特点,有点类似数学中“幂等”的概念。请求静态文件好比掷骰子,每次都能掷到六点。而请求动态文件,则不然,这次掷到六点,下次可能是五点,也可能是一点。所以,对于静态文件,只要在 Web Server 上不更新,在响应同样的请求时(主要是 HTTP GET 请求),不管请求多少次,都会返回一样的文件内容。动态文件则反之,对于每个请求(HTTP GET/POST),都可能会返回不一样的文件内容。Web Server 返回的图片,文档,点播视频,一般都是静态文件,而像 htmlphp,jsp 文件,一般都是动态文件。

静态文件都可以被 CDN 系统缓存下来,甚至某些动态文件,也可以在很短时间(比如 1 秒内)将其看成是静态的,从而缓存下来。一旦这些文件被缓存到 CDN 系统中,那流量大军期望通过攻击这些文件从而达到使网站宕机的目的,难度将大大提升,甚至毫无希望!

cdn 有什么用?怎么选择 cdn 使用

 

我们知道,CDN 系统是分布式的。就拿云防护来说,我们在全国各地都部署了缓存节点,每个节点都有同一份文件的拷贝,流量通过智能 DNS 系统调度,用户会优先访问距离自己最近的缓存文件,从而得到想获取的内容。这样,从全国各地发起集中涌现到源站的突增流量,就被分散到了各地的分布式节点上。在文件过期之前,Web Server 甚至不会感知到这些访问请求。这就好比,静态文件真身坐镇大本营,各分身负责接待这些流量小分队。当分身能正常分发给访客时,其真身可以高枕无忧。

但这并不是万无一失的完美解决方案,我们还需要考虑到缓存文件会过期的可能性。这就好比,我们的真身在一段时间后(从几分钟到几天不等),任期结束了,换了一位新的继任者。此时,CDN 缓存节点需要重新向 Web Server 重新发起请求,获取新文件,生成新的分身。另外,当网站刚接入 CDN 缓存系统时,也是需要向 Web Server 发起请求拷贝文件的。此时此刻,如果有流量部队刚好“造访”,CDN 缓存节点没法直接响应,只能将流量导向 Web Server,在这短暂的瞬间,Web Server 中的真身会被暴露,其可能会被打垮!

如果缓存过期了,就真的无计可施了吗?

当然不是!

云防护 CDN 系统早已考虑到了这种情况,并有至少三种解决对策:

(1)通过建立缓存父层将回源流量进行收敛。

我们把 CDN 缓存节点向 Web Server 发起的请求称为回源请求,将 Web Server 称为源站。当静态文件过期时,缓存节点不直接回源,而是先请求上一级的缓存节点,由上一级的缓存节点回源。这是一个树型结构,父层节点在顶层。大量缓存节点在叶子处,它们访问父层,再由少量的父层节点回源。通过这样的层级收敛,将大量的缓存节点请求,转化成少量的父节点回源请求,从而大大减小源站的压力。

(2)缓存节点至父层合并回源。

大量的缓存节点向父层(或源站)发起请求时,也势必会给父层节点造成很大的压力。针对这种情况,云防护有自研的解决方案,可将同一个文件的大量并发请求,合并成一个或者少量请求返回给父层,从而使父层的请求数大大减少,缓解父层压力。而这种技术,父缓存节点是无感知的。我们将这个技术称之为“合并回源”。目前 Squid/Apache Traffic Server 等开源软件,都采用了这种技术。

(3)条件回源。

当缓存节点发现文件过期时,常规做法是重新下载整个文件,覆盖旧文件。在文件体积比较小的情况下,这种方式问题不大;可一旦文件体积过大,大量的文件更新,对服务器也是一种考验。此时,我们会启用条件回源:当缓存节点认为缓存文件过期时,源站文件可能并未真正更新,只是到了例行的过期检查时间点而已。此时,我们会在 HTTP 头部携带特定的信息,来询问源站是否真的更新了文件。事实经验告诉我们,在大部分情况下,源站文件并没有真正更新。通过这种方法我们可以避免粗暴无用的重复下载整个文件。

这样看来,在大部分情况下你都无需担心了。但还有这样一种情况可能发生,那就是 Web Server 由于种种原因,无法提供正常服务了(比如由于自身原因,出现短暂宕机)!而此时静态文件又恰好过期,这样一来,缓存节点的流量会导向源站,源站又不能正常提供服务,在访客看来,网站就无法访问了。

这可怎么办呢?!

不用怕!

云防护系统也同样考虑到了这种情况,并至少提供以下三种解决方案:

(1)使用旧缓存文件

当缓存节点回源时,源站有故障,会返回异常页面,如 502/504,或超时等。此时,缓存节点直接使用旧文件响应访客。在访客看来,能正常访问到内容,并不会感知到源站出现故障。此外,我们还会对旧文件强制延长一个短的过期时间,防止短时间内出现频繁回源的情况。

(2)永久在线

对于开启此功能的网站,云防护会通过自研的爬虫程序,定期抓取客户源站的内容,缓存到我们的数据服务器上,我们称之为“镜像”。当源站出现问题时,缓存节点也可以将访问请求导向“镜像”文件,从而正常响应数据给访客。

(3)重保只读

和永久在线原理类似,重保只读也是通过爬虫生成“镜像”文件。只是,此时“镜像”可以充当源站使用(伪源站),源站在重保只读期间,可完全关闭。所有的请求或攻击,都不会导向真正的源站,这样即可保证重要时期源站不会因攻击或访问量过大而出现问题。

当然,以上策略都是可能有损的。前面讲过,对动态文件的请求是非幂等的,即使强制缓存起来,也没有大太作用。另外像 SNS 网站有较强的交互性,除了下载以外,还会上传文件(HTTP POST/PUT)。这些数据,目前都没有办法用以上策略解决。当 Web Server 出现问题时,还需要网站尽快针对自身问题从根源上进行修复。

至此,CDN 缓存系统和 Web Server 各司其职,相得益彰。你不知道的是,云防护 CDN 缓存内部其实还有许多其他方面的优化:

(1)Range 请求的缓存及回源合并。

(2)热点文件分级缓存。

(3)全链路 IPv6 的支持。

(4)全链路 HTTP2 等协议的支持。

(5)基于日志的分析与监控。

(6)基于监控的动态父层设计

所有这些,都是为了一个共同的目标:最大程度的为客户网站提供防护!接入云防护,安全无忧~



Tags:cdn   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
说起 WordPress 优化加速来可以说是个经久不衰的话题了,包括明月自己都撰写发表了不少相关的文章。基本上到现在为止明月的 WordPress 优化方案已经固定成型了,那就是 WP Supe...【详细内容】
2021-11-02  Tags: cdn  点击:(49)  评论:(0)  加入收藏
今年 6 月 17 日下午,在线服务普遍中断。在澳大利亚,它影响了该国三大银行、国家邮政服务、国家储备银行和一家航空公司。距离澳大利亚更远的地方,停电影响了香港证券交易所和...【详细内容】
2021-07-05  Tags: cdn  点击:(87)  评论:(0)  加入收藏
对于CDN这个家伙,我们已经不陌生了。图像、文件下载、直播和点播、游戏、应用程序等等,只要是互联网上的内容,都可以通过CDN来加速,保障网络的稳定性,提升用户的体验。 CDN就像一...【详细内容】
2021-04-07  Tags: cdn  点击:(244)  评论:(0)  加入收藏
大家新年好呀,今天是辛丑年正月初七,祝福今日开工的朋友们顺顺利利!今天是CDN 3期,跟大家聊聊运用P2P技术的CDN——PCDN。当遇到视频点播、直播这些拥有较大流量的业...【详细内容】
2021-02-19  Tags: cdn  点击:(178)  评论:(0)  加入收藏
一个通用型的CDN,如果要服务广域范围内的用户,那必然要在一个广大的区域内部署服务节点。那么,一个很重要的问题就来了,就是如何将用户的访问导向到最优节点上。最优的含义有两...【详细内容】
2020-12-14  Tags: cdn  点击:(122)  评论:(0)  加入收藏
流媒体服务器的性能可以从抗抖动能力、拥塞率和卡顿率等方面进行分析。当用户访问的频率过高或者并发的数量超过流媒体服务器所能承受的范围时,必须考虑通过限流来保证接口的...【详细内容】
2020-12-09  Tags: cdn  点击:(133)  评论:(0)  加入收藏
随着近年直播、视频、游戏、电商等大流量业务的高速增长,传统CDN也面对着与日俱增的进化压力,除了最开始的“引导”、“最近邻”等基础功能,“高可用”及“智能化”也成为了CDN...【详细内容】
2020-12-07  Tags: cdn  点击:(101)  评论:(0)  加入收藏
LocalCDN是一个Web浏览器扩展,它模仿Content Delivery Networks以改善在线隐私。它拦截流量,在本地找到静态资源,然后将其注入环境。所有这些都是自动发生的,因此不需要事先配...【详细内容】
2020-10-21  Tags: cdn  点击:(129)  评论:(0)  加入收藏
由于CDN要求您通过其数据网导入所有的内容,因此一些流媒体提供商发现他们需要使用多个CDN来到达不同的地区。这意味着管理不同的系统、分散的流媒体以及添加更多的连接来传输...【详细内容】
2020-10-20  Tags: cdn  点击:(78)  评论:(0)  加入收藏
阿里云全站CDN加速是今年重磅推出的新产品,阿里云全站CDN加速融合了动态和静态资源加速技术,有效全面提升整个网站的访问速度和用户体验。如果你的网站备案了,建议你开通尝试,给...【详细内容】
2020-10-13  Tags: cdn  点击:(203)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条