存储 频道

透过12306五大焦点看高性能高并发系统

  【IT168 专稿】在2011年与2012年的新旧交替之际,铁道部的12306网上购票系统着实“火”了一把,在中国境内可谓是无人不知无人不晓,曾有人在网上戏称12306为“史上最牛电商”。12306购票系统的初衷是系统通过在线购票方式以免除半夜早起,在瑟瑟寒风中排队挨冻购票的痛苦,然而种种技术短板使得12306根本无法面对“春运”期间的瞬间海量高并发,一度出现用户无法登陆、访问速度过慢以及频繁报错等现象,引起怨声一片。

  据目前的公开资料显示,12306购票系统的高峰已超过14亿PV,但是这么大量的PV很大一部分来源于系统慢,导致很多人不断在上面通过手工刷和通过机器人程序自动刷产生很大一部分流量(到底有多少流量是这个问题导致的没有统计数据可查)。例如正如公开资料的信息显示由于现有系统的处理能力有限所以采用相应的机制,让用户经常看到““当前访问用户过多,请稍候重试”、“对不起,当前提交订单用户过多,请稍候重试”或“系统忙”等提示” 这种信息,这种信息的出现更让用户焦虑,不多刷几次简直对不起自己。

  从12306网站暴露出来的种种影响正常购票的现象,诸多网友在互联网上纷纷提出了自己的看法,从前端的网页优化到服务器架构、数据库优化、缓存设置、负载均衡以及整体架构提出了诸多的意见和建议,以改进和解决12306出现的各种问题。在本篇文章中,将对目前12306购票系统争议较大的几点进行整理,并在后续专题中邀请业内专家、技术大牛对类似于12306这类高性能高并发系统进行探讨。

  焦点一:实现高性能高并发系统到底有多难?

  据铁道部副部长胡亚东介绍,网络售票和电话订票每天已经达到了200万张,网络售票的注册用户已经超过了1000万人。从1月1日到1月7日,“12306”网站日均点击次数已经超过了10亿次……这确实是12306所面临的难题之一,但有网友认为,看似高达10亿的PV量,一旦经过分解之后,其均摊到每分钟的并发并不算高。但实际上并不能这样算,12306网站在晚上是不售票的,另外,大部分的并发就集中在开始售票的一段时间。由于瞬间的海量并发造成了12306“爆机”。高并发、高性能、瞬间并发一下子成为互联网上的热点话题。

  清华大学Web与软件技术研究中心电子商务研究室主任王津在某微博上发表看法认为,“海量事务高速处理系统”是一种非常特别的系统,应用的场合很少,中国目前研究这种系统的人不多,有真正的实践经验的人更少。多年前末学本人在接触这种系统之前也无法想象“到了某个时刻”系统的性能下降之剧烈乃至崩溃。恳请大家不臆测不轻视类似12306系统的难度。

  这一微博一经发布刻遭到了诸多网友的反对,但同时也有支持这一观点的网友。面对海量的并发,之所以引发12306“爆机”的重要因素之一在于,在开始售票前后一段时间内,不断的查询数据库和刷新操作使得12306难以应付。基于这一点,有网友提出,可利用SSD的高速读取优势来充当缓存层,当数据库有变化时,再通知更新缓存更新,这样就可极大地解决频繁的库查询引发的系统“爆机”。并且该网友还举例:在某次大型体育盛事期间的直播项目之中,就是利用上述的缓存设计从而避免了系统“爆机”。这其中谁对谁错,我们无法评判,但值得注意的是,视频流跟类似12306的高性能高并发系统还是有一定的差别,在开始售票后,多人的并发操作必然会引发数据库的频繁读写,几乎是每秒都有变化,而缓存层的数据跟数据库一旦不一致,必然就会出现之前12306曾出现的现象——查询有票,却买不到票。

  对于售票时的高并发,网名为“云风”的网友则认为可以在售票环节中加入排队系统,这就如之前的网络游戏“魔兽争霸”一样,当服务器达到饱和之后,采取排队的形式来购票。更有“前卫”的网友认为,“春运”期间之所以买票难,除了一年一度的春节因素之外,另一个重要的因素在于,买票的人过多,已经超出了铁道部的运输能力。所以根据这一点,提出延长订票时间,在截止售票后,进行随机抽取。

  如果采用排队系统的话,有人就质疑万一有插队的呢?这个问题基本上是任何人都说不清的问题,而买票这等严肃的事情如果要“抽签”这种方式的话,就未免太过儿戏。对于类似12306的高性能高并发系统并没有一个标准的答案,同时也有一种说不清道不明的感觉,虽然诸多IT技术大牛都真相提出了很多的建议,但总有些地方会遭到质疑,并引发另一场讨论。既然谁也没有一个“服众”的解决方法,那么是否可以借助新浪、淘宝等已有的成熟架构呢?由此又引发了关于高性能高并发系统的另一个争议。

3
相关文章