cdn加速是如何做cdn加速实现的 详细

原标题:所谓的CDN动态加速技术

以湔说CDN的优势是其在网络边缘缓存了用户请求的内容离用户近,从而保证用户的访问效果;但是动态网页由于是源站动态生成的内容CDN的边緣节点无法存储用户请求的内容,请求到了边缘节点之后还得回源传统CDN架构上的优势就没有了。那么cdn动态加速还没有价值?首先让我们看看cdn动态加速技术是怎么样的:

用户请求耗费的时间=用户和边缘交互的时间+边缘等待的时间;

其中用户和边缘交互的时间我们可以看做用户姠边缘请求一个静态文件的时间,边缘等待时间是用户请求到了以后,边缘需要向用户发送数据确没有数据可以发送,等他数据到达嘚这段时间;CDN动态加速技术的本质主要是要减少第二部分的时间;

首先我们说通过网络优化和协议优化,我们可以容易的把上面那个公式变荿下式:

用户请求耗费的时间=用户和边缘交互的时间+1*RTT(边缘到源站)+源站的反应时间;

让我们忽略掉源站的反应时间因为他和我们今天讨论的動态加速没有关系,我们可以把它看做一个常量;

Ok让我们看看,这是怎么做到的首先让我们看看,不优化的时候是个什么情况如图1所礻,最坏情况下边缘等待的时间 = 建立连接的时间(1*RTT)+发送请求的时间(1*RTT)+数据传输中的等待时间

其中通过优化我们可以把建立连接的时间消灭掉,有两种发送可以做到这一点:

1. 通过连接复用保证每次动态请求到达时,边缘和源之间的通路连接都已经建立了,它的弊端是在突发凊况下很难保证;

2. 通过TCP协议栈的定制把连接和请求的过程合并起来,这事我们在09年就一直在说只不过由于种种原因没有做下去,据说google已經做出来了;

除此以外我们还可以把数据传输开始以后的等待时间给去除掉这里面涉及到了两个技术,一个是动态路由一个是TCP协议优化;

動态路由:所谓动态路由,指的是利用CDN节点多的优势把每个节点都看做一个路由,在边缘A和源B之间找到一个最佳路径也就是说以前是矗接从A到B,变成了A-C-D-B;另外还需要强调的是D-B之间一定是要通过连接建立,而且D-B一定要很近时延很小,否则的话TCP协议优化就发挥不了作用;通過动态路由技术我们可以在A-B间建立一个更低的RTT和更小的丢包率的通过;

节点间的TCP协议优化:有了动态路由做保证节点间的TCP协议优化就是很簡单的事情了,我们要知道用户的带宽往往是有限的而节点间的带宽往往是冗余的,我们要做到节点间的发送速率高于边缘到用户是非瑺容易的改几行代码就够了;

通过以上一些技术我们就可以把图1精简成图2:

这还不够,我们能不能把这一个时延也去掉呢这是部分可能嘚,这里面涉及到了一下一些技术:

1. 缓存部分的动态内容也是可以在很短的时间内缓存的;

2. 预取:通过用户请求的页面内容解析,预先感知用户接下来要获取的内容提前预取;

3. 在边缘生成用户请求的内容,这个水太深我说不清楚,点到为止;

4. 证书类:通过在边缘部署SSL证书茬边缘将SSL请求,变成普通请求从而将动态加速变成静态加速,但是如此是有风险的把CDN运营商看成安全是不安全的;

除了以上一些技术以外,我还漏了一个那就是压缩,压缩分成两部分一部分是http头支持的压缩,这些就不要让CDN帮你干了源站应该自己做的;另一部分是CDN节点間的,如此可以减少CDN节点间传递的数据量从而变向加快传输速度;但是这里会增加机器的CPU负载,同时有了TCP协议优化技术,不需要通过压縮来提高传输速度所以个人认为它不重要。

}

我要回帖

更多关于 如何做cdn加速 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信