IDC~折腾啊~

  Yo2 从3月15进行 WordPress 博客系统的升级工作,当时Yo2在浙江的电信CDN节点网络质量比较差,部分地区用户反映访问非常慢。我们为在升级后给用户更好的体验,决定在浙江在增加一个双线服务器节点,以提升网络质量。当时机房的选择我们已测试过一个多星期,感觉还算不错的。

  但事与愿违,新增加的服务器跟数据中心的连接并不顺畅。经过跟IDC服务商的交涉,从旧机房搬迁到一个新机房,总算解决连接数据中心的网络问题。但把服务正式迁移到该节点后,用户陆续反映访问速度慢的问题。

  因同时WordPress升级后有比较多的BUG处理工作,兼顾起CDN节点的事情就比较困难了。并且马上就增加新的电信节点,也不合适。因为我们每个节点的增加都是需要预支付租金的,服务商也不见得会给我们退款。跌跌撞撞的勉强服务到4月3号左右,实在抗不住 _-!!博客系统的BUG处理也基本完成,so~再寻找到一家新的服务商,机房在江苏。当时我们测试速度是比较理想的,为了尽快解决CDN网络问题,也不容多想,就决定租用一个月作为测试用。

  依然是事与愿违,新增加的服务器跟数据中心链接又不顺畅。这次遇到的情况与浙江机房的不一样,这是在有访问压力的情况下才与数据中心连接异常 _-!!真要被这些IDC活活弄死。但租金也支付,还能怎样~ _-!! 就把部分地区的访问指向到浙江,一部分指向到江苏吧。只要把压力分开,这两个节点的服务还算正常。但这也是治标不治本啊~昨天我再找另外的服务商~

  这次得吸取教训~要求提供高峰时间几个小时的压力测试。新服务器在今天6点上线,charles马上配置好服务环境进行测试。到现在已经测试2个小时,带宽流量基本正常 :D 希望这次真的能够很好的解决电信节点问题。

  3~4月是Yo2电信节点最多的,同时3个地区的电信服务器节点在线服务 _-!!当然其中两个质量太差 _-!!~成本最高的一个月。汗~

  在这半个多月来,用户反映都比较激烈,甚至有人在讨论区发起合租主机。其实大家的话我们都很重视的,只是工作量实在比较大,我希望大家可以体谅。对于大家提出的合租主机计划,Yo2不会提供这样的服务,毕竟这跟我们的初衷背道而驰。并且合租主机的费用将比使用Yo2的服务高得多,也不能享用到CDN的优势。

  Yo2的CDN技术并不只是为了提高访问速度而开发的,其中更多的作用是避免服务器被Feng,有了CDN,即使某个加速节点出现问题,也不至于应到到全部的访问。我肯定的说Yo2没100%的访问故障,最大只会是50%。因为目前Yo2是三网单独划分加速的。比如我们现在的电信节点有严重的问题,但这并不影响网通和教育网的网友访问你的博客 :) 但如果是合租主机就无法使用该技术。

  在3月的升级计划中,不仅是WordPress博客系统升级,同时我们的数据中心又增加一台高性能服务器,现在我们数据中心的处理压力已扩大一倍 :) 在4月内,我们一定很好的解决50x问题。

FastDFS 分布式存储与 yo2cache 的结合

FastDFS 是由 Yahoo 的中国工程师开发的一个开源的轻量级分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

  FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。且跟踪器(tracker)可使用多台服务器进行均衡,这样就可以避免单点故障的发生。

  使用 FastDFS 分布式文件系统并不能像常规的文件操作一样,需要通过 FastDFS 的 API 把文件上传到分布式文件系统中。同样道理,读取文件也是需要通过 API 接口把文件下载回来。对于没接触过类似文件系统的,可能会感到有些茫然了 _-!! 不会每个读取都要经过 API 吧,这样开发和性能上会不会出现问题?

  其实 FastDFS 分布式文件系统的使用并不复杂,你只需要知道她是一个帮你把文件分发到多个服务器进行存储就Ok了。我们也就是需要这个功能,至于读取的操作我们可以交由 Web Server (yo2cache) 进行处理。

  这是一个简单的应用示意图:

FastDFS & yo2cache

  用户上传文件,经过 PHP 使用 FastDFS 的 API,把文件分发到多个文件服务器上。

  用户下载文件,经过 yo2cache 使用 FastDFS 的 API,到文件所在的文件服务器获取文件,并返回给用户。其中 yo2cache  Web 服务器可做 CDN 均衡,并设置节点本地缓存,起到访问加速作用 :)

中国IDC质量问题与Yo2的解决方案

  嘿嘿,很有标题党的意识。大家见笑了~笑笑罢了 :D

  刚在 Yo2Mass 看到《从豆瓣宕机看IDC单点问题》 一文,自己是深有感触的。刚好今天我们电信的服务器也出了故障,断网4个多小时。从Yo2开张到现在,我们都不知道换多少个IDC。就是没能找到一个很稳定的(当然太贵的我们是租不起)。

  豆瓣所在的机房是北京实力比较厚的IDC之一,我们也有台服务器在他们的天津机房。一直用着,感觉还可以。虽然偶尔会出现某些地区访问速度慢的问题,但因它在教育网的访问速度挺好的,所以一直在用。万没想到,我一直说算稳定的IDC也会出现如此长时间的断网故障《2008.10.31 豆瓣访问故障》。刚查了下豆瓣的服务器信息,发现他们已经把服务器出口切换到其他机房。他们的数据估计都在原来的机房,新的出口应该是直接 Proxy 代理,访问速度并不理想。

  做网站的技术都知道什么是单点故障和它所造成的影响。传统的解决方案是使用LVS把访问请求分发到多个服务器,如果某台服务器故障,它可自动分发到另外的服务器,能很好的解决单点故障问题。但你再看远一点,在前端的LVS不是一个非常大的单点吗?万一它出现故障,那么它后面的N台服务器都无用武之地!大家都在努力解决单点故障的问题,却未意识到自己在制造一个更大的单点故障风险。

  Yo2也有单点故障的情况发生,但它的影响不至于扩散到全局,因为我们使用了CDN技术。我们目前在几个网络、分几个机房,架设了访问加速节点。CDN利用域名智能解析技术把用户的访问指向到不同的服务器,部分用户间是相对独立的,如网通用户与电信用户,甚至可以精确到某个省份和地区。比如今天电信服务器出现故障,就不会影响到网通和教育网用户的访问,并且我们及时在CDN上把电信的访问切换到其他的机房,能快速恢复服务(当然域名解析耗时比较长,大概1个小时左右)

  但CDN也不是灵丹妙药,不是什么网站应用都能使用CDN。比如一些动态页面就无法使用CDN系统的缓存功能,只能直接Proxy。如果网站应用是以动态内容为主,那么建立CDN系统也就等于把成本扩大1倍。因为它只能直接Proxy到后台服务器,CDN跑多高的带宽,后台的服务器都会跑这么高;后台服务器需要处理的数据量跟没使用CDN是一样的,并不会减少。除非把内容缓存在CDN的加速节点上,这样不仅能节约服务器的成本,并且访问速度会快很多。但目前商业运营的服务商,还未能提供这个完美的解决方案。

  Yo2是在成长过程中就意识到单点故障问题的严重性,我们必须把影响降低到最低。因没找到能提供解决方案的服务商和需要考虑运营成本,所以我们选择了自主根据Yo2作针对性的开发。目前我们是拥有一个算完美的解决方案。当然目前的加速节点还很少,单点故障的影响还是比较大。只是从以前的影响100%降低到40%左右,随着Yo2的成长,我们会继续增加更多的访问节点,单点故障的影响将会降到更低 :)

国内 CDN 服务介绍

CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储、负载均衡、网络请求的重定向和内容管理等问题。  其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容, 解决 Internet 网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站 响应速度慢的根本原因。

引用:http://www.chinacache.com/viewtechnique.asp?id=15

目前国内主要的 CDN服务商有北京蓝汛网宿科技北京快网浙江联存CDN联盟等数家,服务商之间的技术实力还有一定差距,产品线比较长的有北京蓝汛和网宿等几家,全国分布节点数量多,可提供多种加速服务,但相对价格也比较昂贵。一般小型 CDN 服务商较有价格优势,但产品线比较短,不能提供一些比较高端的应用,基本是做静态文件加速服务。

  普通的静态文件加速服务技术门槛低,只需要配备智能DNS解析服务,使用 squid (内容缓存系统) 在各地区部署一定数量的服务器节点,即可投入服务。所以现在有越来越多的 IDC 服务商开始建立自己的 CDN 网络,但因为还在起步阶段,带宽总容量低,所部署的节点数量比较少,主要分布在各大城市,并且节点的网络质量参次不齐。

  更多的服务商加入到 CDN 行列,已经把带宽资费拉到普通多线带宽的水平。现在越来越多的网站开始使用 CDN 服务,给网站的静态内容(如:图片)进行加速,而动态内容依然使用自有多线服务器提供访问服务。而有部分大型网站则开始建立自己的 CDN 网络 (如:6.cn) 自主 CDN 网络的可控性高,可以根据自己的各项服务需求进行细节调整,但维护成本则相对购买第三方的 CDN 服务要高得多。

  我们需要根据自身网站的实际需求、技术能力和资金,综合分析应该怎样使用 CDN 服务进行访问加速。因为 CDN 服务商只能提供一定域名数量的加速服务,如果你的网站需要给大量的域名访问进行加速,则需要自行建立 CDN 网络了。(如果您需要进一步了解 CDN 服务,我是能够提供一些建议的 :)

———————————————————

  Yo2 是博客服务商,需要给大量的博客进行访问加速,所以选择自行建立 CDN 网络。并且在服务器节点的页面缓存技术方面,相对普通的 CDN 服务商有一定的优势,我们的缓存系统已支持动态页面的加速服务,除了少量要求即时动态处理的数据以外,其他的博客文章页面、模板、图片等内容均已使用缓存加速。

  虽然我们的 CDN 网络还是起步阶段,所部署的服务器节点有限,但我们选择的机房带宽要求都是很高的,同省区的访问速度 < 20Ms,跨省区访问的速度在30~50Ms之间。在 Yo2 的成长过程中,我们将进一步完善自己的 CDN 网络,以提供更快的博客访问速度 :)