为什么需要使用及怎样使用CDN?

为什么需要使用及怎样使用CDN?,第1张

当今世界,对所有人而言,网站必须具有一切功能:网站必须有吸引力、速度快、有灵活性及可移动性,甚至必须要能够不断变化。此外,还必须支持频繁的会话、支持各种浏览器、智能手机、平板电脑以及其它用户可能会用到的设备。\x0d\x0a网站必须能够在复杂的网络环境下运行,比如中国、亚洲、中东等网络连接很差的区域或国家,这些地方不仅地理位置分散,距离遥远而且网络多样化。更不必说,对于移动站点或应用程序而言,不仅有线连接如DSL或电缆线甚至无线连接如GPRS、EDGE、3G及现在的LTE等,都必须有很高的连接性能,然而即使是这些提供连接服务的供应商都可能不会有很好的网络连接。\x0d\x0a此外,站点使用越来越多的对象,如图片、帧、CSS及APIs,比如AJAX,以及远程调用,比如从Facebook调用到Google,甚至使用各种各样的共享、跟踪及附加值系统等。\x0d\x0a难怪,系统变得越来越慢,用户只访问能够最快打开、性能最好的网站。Google及其它网站的研究表明,一个网站每慢一秒钟,就会丢失许多访客,甚至这些访客永远不会再次光顾这些网站。\x0d\x0a输入CDN或是内容分发网络,你就会搜索到国际公司如Akamai及Limelight,及中国公司如ChinaCache及ChinaNetCenter,他们可以帮助用户提高网站浏览性能,如浏览互联网站、网络游戏网站及应用程序。\x0d\x0aCDN支持许多种服务,最常用的服务有:\x0d\x0a下载_下载服务是CDN提供的最简单的服务,通常是一些终端用户,如网游用户、软件用户、程序开发员及要下载大量文件的用户会使用到。通过使用CDN,人们便无需使用高带宽连接到昂贵的数据中心,并且通过CDN节点,这些文件会放到离终端用户更近的地方。\x0d\x0a静态文件/图片_CDN最常用的用途是用来给终端用户发布静态文件,如图片、java脚本、css文件等。通常这些类型的文件很少变更,即便有变更,也是少量的,所以,把文件发布并存放到离终端用户比较近的地方会极大地提高网站速度,在地理位置分散或连接性能很差的地方,网站速度提高会显得更加明显。请注意,该服务仅仅用于处理静态文件,如主要的网站页面,所有动态内容,都是由主网站服务器提供。这通常是分开处理的,通过不同的子域名进行处理,如images.mydomain.com,与www.是分开的。\x0d\x0aWSA_即整体网站加速,正变得越来越流行。从名称便可知道,它是用来加速整个网站的,包括所有的静态的东西及动态的东西,如网页、购物车及推荐信息等。基本情况是,终端用户只连接到CDN,CDN连接到网站,然后缓存所有的东西,CDN代表用户向实体的网站后台发送请求,获取动态数据。\x0d\x0a当然,CDN只能改善一部分内容的访问速度,因为其它的内容,如采购历史、产品库存等必须直接从后台网站获得。对于连接性很差的网络,如移动网络以及复杂的难以将静态内容从静态CDN分离出来的网站来说,WSA尤为好用。注意,为确保WSA成功,谨慎的配置及缓存控制头信息是非常重要的,因为CDN需要知道要缓存哪些东西,以及哪些东西是要传递到后台的。\x0d\x0a流媒体内容-媒体类网站使用越来越多的流媒体内容,如视频,包括来自于其它网站(如Netflix、Hulu、或Youtube及中国的Tudou/Youku)的实际的电视节目、影片等。对于这些内容而言,CDN提供特别的下载服务,通常称之为点播或Vod,可以处理并控制所有视频,包括快进/后退视频,可以访问经过授权的内容,提供各种跟踪服务等。对于这些服务而言,视频通常是加载到CDN,并且通过特定的URL直接提供视频。此外,一些CDN还提供现场流体内容,如,体育或其它事件等实时播放,进行现场内容直播。\x0d\x0a其它-CDN有许多其它功能及服务,以满足特殊需求,如电商、预加载、网游、动态加速、安全及DRM控制等。此外,还提供特殊的满足地理要求或网络要求(如中国移动或CERNET)的特别服务。\x0d\x0aCDN还有一个服务容易被人忽略,就是安全服务。例如,许多CDN可提供防DDoS攻击服务,由于它们比任何一个网站的带宽都大,而且分散,所以能够经受住此类攻击。此外,一些专门的CDN如,CloudFlare及AnQuanBao也提供像防火墙一样的应用程序,如防止SQL注入攻击、XSS攻击及其它防攻击手段以保护后台站点。\x0d\x0a另一个特别的主要服务就是“内容感知”网络服务。这是一种新新服务,是通过CDN系统的更智能化管理的内容,可以给不同用户,如移动或DSL或办公室用户等提供不同的优化过的内容。它可以对内容进行处理,以便提供给不同设备,也可以对内容进行优化,以便将最重要的内容优先下载下来,使用户获得最佳体验。它们还会判断在哪个地方存放哪些内容,总之,该系统能够使网站在复杂的互联网环境下有良好的性能表现。\x0d\x0a最后,有些CDN还提供全球服务,帮助客户开拓新区域或国际区域,如中国、拉美或国外其它地区。对于全球品牌而言,这种服务非常重要,对于想要获得国际客户的中国公司而言,这种服务也非常重要。这种全球或局部CDN帮助人们在无需数据中心及特别带宽等情形下,便可获得庞大的用户群。\x0d\x0a根据您的需求及站点架构,使用CDN是非常容易的。对于静态/图片CDN而言,关键的一点在于能够将静态内容或图片分离到特定的域名,然后存放到同一服务器上不同的虚拟机上。\x0d\x0a要想使用好CDN,最关键的一点还在于能够有良好的缓存控制。这样,CDN能够知道缓存哪些对象以及要缓存多长时间。理想的情况是,像图片这些东西基本很少发生变化,若有更新的话,应该将文件名/URL更改掉并且HTML变更到指向新的对象。有时候,要进行这些更改并不容易,因为必须在源主机进行更新,这就要求短时间的(1个小时或1天)缓存这些东西,或者使这些在CDN缓存中失效。\x0d\x0a对于任何网站而言,最好的做法也许是将两种方法结合使用,也就是使用CDN来处理静态HTML页面,使用AJAX处理动态数据。这样便可以从后台系统提供服务数据,给用户快速提供动态数据,使用户有良好的体验。\x0d\x0a监控_要想很好地跟踪CDN的运行情况,就必须使用监控工具,如Gomez、ip-label或NetworkBench。它们可以帮助您监控CDN的实际性能,这一点可以从不同的网络及终端用户的使用情况中得到证实。并且,这样做有助于识别并发现问题,确保CDN服务能按照所期望的运作。\x0d\x0a总之,几乎每个人都应该使用CDN,尤其是现在的世界生活节奏快、充满活力、要求又很苛刻,所以人们更应当使用CDN。

从HTTP响应头看各家CDN缓存技术

从HTTP响应头看各家CDN缓存技术

由于国内各家电信运营商互联互通的壁垒,CDN作为互联网用户加速的最后一公里,扮演了很重要的角色。

在各家公司大谈的异地多活容灾上也承担了用户分流的重任,看看各家用的东西,结合一些网上的公开资料,也能管中窥豹。

传统的国内CDN厂家有:帝联,网宿,蓝汛,快网等

新兴的互联网公司有自家产品对外输出型和创业公司细分型:BAT都有此产品,还有七牛,又拍,微软azure等

美国龙头:Akamai,美国市场大哥,Apple用的也是这个,但Apple的在线服务这么烂,真怀疑是不是Apple把Akamai带坑里了。

本文只展示响应头,有兴趣自己深挖。

淘宝

server:Tenginestatus:200timing-allow-origin:*via:cache15.l2et15-1[0,200-0,H],cache35.l2et15-1[0,0],cache3.cn286[0,200-0,H],cache8.cn286[11,0]x-cache:HITTCP_MEM_HITdirn:20:727080716x-swift-cachetime:31535998x-swift-savetime:Fri, 19Aug2016 02:55:13GMT

不用说,淘宝用的是自家阿里CDN, 走Tengine, 返回的响应很友好,甚至告诉你是从内存命中的。

x-swift指明了使用了的具体热点缓存技术。

关于阿里云CDN,有很多公开介绍,例如:

文章一: 阿里云CDN技术演进之路 http://www.slideshare.net/jos...

文章二: 研究下淘宝的swift热点缓存迁移的事

via:cache46.l2et2[0,200-0,H],cache60.l2et2[0,0],cache7.cn286[0,200-0,H],cache8.cn286[3,0]x-cache:HITTCP_HITdirn:11:60349972x-swift-cachetime:31535950x-swift-savetime:Tue, 28Jun2016 04:04:29GMT

根据 阿里云官网 解释:

若:X-Cache:HIT TCP_MEM_HIT 表示命中缓存

若:X-Cache:MISS TCP_MISS 则表示未命中缓存

微信

腾讯CDN节点:

Server:Qnginx/1.1.1X-Cache-Lookup:HitFromDisktankX-NWS-LOG-UUID:406395d0-7cb8-4630-99cf-8208d04e7750

很明显,这里告诉大家CDN命中了磁盘缓存上的数据。

一些网上资料查到的解释:

X-Cache-Lookup:Hit From MemCache 表示命中CDN节点的内存

X-Cache-Lookup:Hit From Disktank 表示命中CDN节点的磁盘

X-Cache-Lookup:Hit From Upstream 表示没有命中CDN

腾讯CDN起步可能会晚一点,Qcon上一个公开资料:

CDN架构技术之道 http://www.infoq.com/cn/prese...

腾讯还与小米合作,在硬盘版小米路由上推出了一个插件,叫腾讯会员兑换,本质上就是利用小米路由用户上的硬盘存储一部分内容,上传给需要用的用户,由腾讯计算收益,盘活了家里闲时的网络资源。

网易云音乐

Server:nginxX-Via:1.1ngdianxin90:9(CdnCacheServerV2.0)

网易太低调,最近也开始搞网易云产品了,但基本查不到什么公开资料,从响应头看似乎就是直接用的nginx。

新浪微博

Content-Type:image/gifSINA-LB:aGEuNDEuZzEuc2h4LmxiLnNpbmFub2RlLmNvbQ==SINA-TS:ZGFkYzk4Y2UgMCAwIDAgOCAwCg==Via:http/1.1 ctc.ningbo.ha2ts4.70 (ApacheTrafficServer/4.2.1.1[cRs f ])X-Via-CDN:f=Edge,s=ctc.ningbo.ha2ts4.70,c=115.231.82.33Age:1X-Via:1.1zjjhdx33:3(Cdn Cache Server V2.0),1.1tzhoudxin37:5(Cdn Cache Server V2.0)Connection:keep-alive

这个返回了Cdn Cache Server V2.0,有多家公司都返回了这个,不知道这是个啥玩意,是不是个开源通用产品呢?Squid Varnish Nginx?

segmantfault:

命中

via:T.101203.R.1, M.ctn-zj-lna-204x-cache:HIT(R) from ctn-zj-lna-204x-request-id:c239b9ae8ec9f83030bbdfaabcfa8fb4x-source:U/200, G/200

缓存MISS

via:T.101195.N.1,T.101163.R.1,V.mix-hz-fdi-163,M.ctn-zj-lna-200x-cache:MISS(S)fromctn-zj-lna-200x-request-id:724565e217e01e9f60e9f1b74aecedb3

在ctn-zj-lna上缓存没有命中,这个ctn-zj是个CDN集群么?

七牛

访问该图片: http://7xt44n.com2.z0.glb.qin...

Response header返回:

X-Log:mc.gIO:1/304X-Qiniu-Zone:0X-Reqid:90oAABxCoNMaw2wUX-Via:1.1dxxz44:2(Cdn Cache Server V2.0),1.1ngdianxin42:6(Cdn Cache Server V2.0)

用的就是自家产品。

唯品会

Server:vipshop/VbibTransfer-Encoding:chunkedVip-Cache:HITx-amz-delete-marker:falseX-Via:1.1xxxz53:0(CdnCacheServerV2.0),1.1zhdx34:6(CdnCacheServerV2.0)

看Server的响应头,似乎也应该是自家搭建的CDN,显示了命中与否。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/88623.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-06
下一篇2023-03-06

发表评论

登录后才能评论

评论列表(0条)

    保存