服务器 频道

12306大家谈 高并发网站架设的几点建议

      【IT168 评论】2012年春节前夕,火车票可以在网上购买的消息让人们激动不已,原本以为再不用半夜起来、忍冻排队,但是很快骂声不绝于耳,光是登录过程就要耗去半小时甚至更长,更别提购票了。不完全统计,7天内,12306网站访问用户已占全球互联网用户的0.902%,每天点击量高达10亿人次;系统一度支撑不住如此庞大的访问量而陷入崩溃。

  面子工程?设备有问题?架构不好?质疑声不断,为此IT168特意采访了《互联网运营智慧》的作者田逸,请他跟我们一起聊聊12306购票网站及高频高并发网站背后的故事。

  您认为12306订票网站存在哪些需求特点和挑战?

  从12306表现的情况来看,可以说是严重缺乏可用性,而所谓的日均PV达到10亿,也是由于用户不停的访问,不停的刷新,所累积出来的,实际的用户数量远小于这个数。我们知道对于互联网来说,一般都是读大于写,也就是说主要操作还是查询,比如12306,可能很多人都在查同一张票,比如北京到广州,时间、车次这些基本都是一致的,而且由于不能选择座位,变化的只是座位数量,因此对于时间、车次这些信息查询一次就可以了,完全可以把这些缓存起来,这样下一个人访问的时候就可以直接从缓存调取,这样一来访问速度会大大提高,同一方向的人访问量自然就会下降,计算到互联网上,这个数目就比较大了。

  另外,从技术的角度看,北京到哪里,区段是固定的,而且买票主要是集中到某几个区段,可在数据库里使用分区技术,不同的分区写不同的区间的车次,这样数据量也会少很多,从而提高网站的可用性。

  国内的大型网站还包括淘宝、京东、新浪等,您认为12306的访问模式和淘宝、京东存在哪些异同?

  12306和淘宝、京东访问模式基本都差不多,都是查询,交互,下订单等;不同的是淘宝、新浪都是一点点积累,12306并没有这个积累过程,而且这个过程中也没有过多考虑用户体验,可用性、可靠性等。从表现出来的情况看,12306购票的过程中有很多队列,如登录队列,查询队列等等,在这里,我们完全可以采取另一种方式,比如在网上公示哪个地方的票没有了,这样就会少很多人去查询,而且并不需要全部公示,仅仅公示最热门的一些车次就可以了。另外也可采用分地域的方式,比如上海局可以独立一个、北京局独立一个,这个压力就会减很多,因为如果人在上海,基本就是从上海出发,而不会买北京发车的票,这样就可以实现本地访问,从而减少很多压力。

  淘宝在其光棍节促销期间,TMall也曾经遭遇宕机事件,京东也曾经遭遇宕机事件,您认为这些宕机事件和12306网站崩溃有何异同?

  淘宝光棍节CDN达到800GB左右,双12更是达到900GB,但是由于淘宝系统架构很好,另外,运维人员这么多年的积累,经验丰富,所以很少宕机,而京东则属于架构有问题,淘宝和京东一个以技术为驱动,一个是以商业为驱动,淘宝是把技术做好了顺便卖点东西,京东是卖卖东西顺便把技术搞一搞,而12306又不大相同,属于政绩工程,先弄出来,至于好不好用不知道,没法评估,因为并不开放。

  您认为目前的12306订票网站在哪些方面可能存在问题?

  基于目前的架构,带宽从400MB增到1500MB基本无作用,就像车跑不快,换个轮子也无济于事,其它方面也比较类似,比如运用的全网CDN加速。我们看到12306网站做得很简陋,基本没有图片,数据都是动态的,这样每个步骤都是操作数据库,都是在用CDN,不仅浪费钱,而且用户体验也不好。

  一个整体的架构并不是各个部分的堆砌,得在架构上做优化,用户体验上下功夫,这其中就可以大量使用缓存技术,比如把查询缓存起来,这样访问速度就会加快,流量就大了,比如高速公路上,四条车道,如果设置收费站,而且收费也慢,可以计算1小时能通多少车,假如没有收费站,能通多少车,不言而喻,其实跟12306的道理一样,乘客买到票就走了,查到没有票也就走了,就不会出现无限刷页面的情况了。

0
相关文章