将CDN赶下神坛

来源:互联网 发布:质心形区域增长算法 编辑:程序博客网 时间:2024/03/28 22:42

今天是2008年5月14日,距离四川汶川大地震已经过去40多个小时了,此时仍然很多灾民被困在废墟之下,人民子弟兵仍然奋战在抗战救灾的火线上。首先向他们送我的祝福,希望他们早日走出困境。

 
从这次地震的报道来看,这次地震的震中在汶川,灾难发生后,所有到汶川的公路全部中断,所有的移动电话,固定电话,网络通路全部中断,并且震后地震核心区下起了大雨,所有的直升机,甚至连解放军精锐的空降兵都不能降落。地震的核心区汶川名副其实的变成了一座孤岛,完全与外界失去了联系。
 
地震核心区信息的不畅,给我们的救援工作带来了很大的困难。其实在我们现实的互联网世界内又何尝不存在这样的情况。熟悉中国现在网络现状的朋友都知道,现在的网络状况是运营商诸侯割据,各自为政,相互倾轧,曾经有站长朋友感叹:“世界上爬的最慢的动物是蜗牛,比蜗牛更慢的是运营商之间的网速”,中国现在分布的大小不等的众多运营商,大的有电信,网通,铁通,小的有移动,联通,首信,长宽等等,对了还有教育网。这些运营商为了自己的利益,互不合作,运营商之间的连通带宽很小,而且很不稳定。这可苦了这些站长们,如果你把网站架在电信机房里,那么网通和其他运营商的用户访问就会很慢,反之亦然,这就使站长们的网站成为了类似地震中的汶川这样的信息孤岛。
 
当然解决信息孤岛也有一些方案
1. 租用价格高昂的双线服务器。双线服务器一般是在机房内引入电信和网通两条线路,然后通过专用的设备连接到服务器上,使之到拥有到电信和网通都较快的速度。虽然这样理论上是可行的,但从市场上的双线机房角度来看,一个是价格比较昂贵,另外双线机房的稳定性较差,双线机房带宽限制厉害,全天不同时段到网通和电信的速度波动较大,并且不能同时满足其他运营商的速度需求
2. 电信网通双主机,智能解析,让电信的访问者访问电信的主机,网通的访问者访问网通的主机,但是无法同步更新,只能放置静态页面。而网站的投资也至少双倍计算,而且带来的维护成本的上升也是一个恐怖的数字。
3. 购买CDN运营商的服务,这是我们今天讨论的重点,我们将分析现有的CDN的现状,发展的趋势。
 
一.背景介绍
1. 什么是CDN
很多入门级的站长可能对这个名词比较陌生,CDN是Content Delivery Network的缩写,我们可以称为“内容分发网络”,它是建立并覆盖在现有Internet基础上,由分布在不同区域的节点服务器群所组成的虚拟网络。目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,解决 Internet 网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题。CDN和核心理念就是将用户路由到最近的服务点来响应该用户请求。
2.目前CDN市场的应用情况
这项最早在1998年由美国麻省理工大学(MIT)的研究生提出的技术,首先被美国AKAMAI公司用来提供专业的CDN服务。如今,美国已经有70%~80%的网站都考虑用CDN服务。在美国“9·11”事件发生之后,美国最大的门户网站之一的msnbc.com的流量激增,而其90%以上的访问量都是由CDN分担的,之中还包括了3000万分钟的1300万个流媒体录像。有调查显示,2003年CDN服务的支出会由2000年的9700万美元增长到2003年的20亿美元。中国的CDN市场还处在开垦阶段,但发展潜力巨大。成立两年多的ChinaCache已经在全国建立了43个节点覆盖全国的网络,为电信“互联星空”、新浪、搜狐、TOM、奥美互动、易趣、可口可乐、索尼等公司提供了CDN服务。
3. CDN对原有网站访问模式的改变
传统的web访问过程
(1)           用户将对www.xxx.com域名的http请求提交给类似IE这样的浏览器软件
(2)           IE接收域名请求后,向本地DNS请求对域名www.xxx.com的解析。
(3)           本地DNS将请求发送给网站授权的DNS服务器,授权DNS服务器将网站的IP地址发送给本地DNS.
(4)           IE得到http服务器IP地址后,向服务器发送http请求。
(5)           http服务器回应http请求后,IE负责将回应内容显示。
传统的web访问流程带来的问题是,DNS解析过程将网站的主机域名转换为IP地址的过程中,并不判断该服务器是否能正常的响应用户的请求,即使该服务器已经宕机或者响应用户请求较慢,请求仍然发送给该服务器。
 
引入CDN以后,会将用户需要的访问内容缓存到离用户最近的Cache节点上,用户直接从有效的Cache节点获得内容,这样了也避免了中间走过多的交换机,路由器所带来的时延。这其中主要对主机域名解析的步骤做了改造,DNS查询不是返回服务器源站的IP地址,而是返回离用户最近的可靠cache服务器节点。
 
二.现有的CDN技术分析
如果我想进入CDN这个市场,成为CDN运营商,为其他的网站用户提供CDN加速服务,我应该具备哪些条件呢?
 
1.硬件方面
首先部署cache节点,部署节点要考虑用户所在地理位置的广泛性,不同运营商的差异性。在这里Cache节点覆盖的地域范围,运营商越广效果越好。当然Cache节点的部署也占用了CDN运营的大部分费用。CDN运营的初期每个运营商在一个大的区域内都要有一台节点,比如电信在华南,东北,华东,西北,西南都放一台。
 
2.软件方面
有了这么多Cache节点,那么这些Cache节点如何响应用户的Web请求呢?另外如何监控,管理这么多的Cache节点的工作状态呢?这就是软件要做的事情了。我总结了一下,CDN运营系统软件分为三大块
a.       高性能http代理服务器,该软件部署在Cache节点,能够高性能的响应用户的http请求。
b.       Cache节点监控平台,该软件能够实时监控所有cache节点的工作状态,能够及时对节点变化做出响应。
c.       高性能的DNS服务器,该软件能够实时挑选离请求用户最近的稳定Cache节点响应用户的请求。
 
对于CDN运营商来说最大的一块投资应该在Cache节点的布局这块,随着节点的增多,这块的投资会直线上升,理想的情况是在每个访问者的家门口都放一个节点,而且随着网络运营商的差异,第一个区域的访问者门口要放多个节点。以ChinaCache为例,它在全国部署了500多个节点,但即便如此,由于访问者来源的广泛性,也不能满足需要。
 
其实我们正在走入误区,以为通向罗马的道路只有一条,其实不然,还有更便捷,节约的道路到达目的地。目前互联网上有大量的服务器,这些服务器中只有极少数处于负载基本饱和的状态,大部分服务器还处于不吃不饱状态,而且即使资源利用率比较高的服务器在全天不同的时段其负载也是不同的,比如游戏服务器在晚上比较繁忙,白天比较空闲,一些web服务器则相反,另外在在IDC机房里还存在大量的没有出售出去的,闲置的服务器和带宽资源,那么这些现在闲置的计算和带宽资源不仅不能产生任何的价值,而且还要浪费电能,岂不跟我们建设解决社会的目标格格不入!如何利用这些闲置的资源呢?别忘了,上面我们建设CDN服务正好需要大量的Cache节点资源,如果能够使用这些闲置的服务器和带宽为需要的用户提供CDN服务,岂不是两全其美!
 
传统的CDN服务,由于Cache节点投资巨大,而使提供的CDN服务价格高昂,比如ChinaCache。由于中国互联网发展的免费模式,大部分网站还没有实现盈利,在这种情况下只能在昂贵的CDN加速服务面前望洋兴叹。可是利用闲置的服务器和带宽资源就可以绕过Cache节点投资巨大这道关,配合更加先进的节点检测机制也可以给用户提供稳定的CDN加速服务,同时极大的降低了CDN的服务价格,将原来只能少数大型网站才能享受的CDN加速服务赶下圣坛,成为中小网站也可以享受的大众产品。
 
在这方面,已经看到了一个先行者www.17cdn.com, 这家公司的背景挺神秘的,试用了一下他们的CDN产品,觉得还不错,而且给了我比较长的免费期,所以就一直使用下去了。根据我的经验,一般的CDN运营商的Cache服务器的软件部分都是在一个国外的开源项目squid基础上,根据自己需求开发的,而通过我和www.17cdn.com的客服人员交流,他们整个CDN软件系统全部是自己从底层一一做起的,没有借助任何其他产品。能独立开发这样一款复杂产品,技术实力应该还是有保障的,感兴趣的朋友可以试一试www.17cdn.com.
 
写了这么多,目的就是希望给想使用CDN产品的朋友,或者想进入CDN服务领域的企业一点自己的见解,如果有什么不妥之处,还希望大家的批评指正。