据铁路部门的预计,从1月8日到2月16日,春运期间铁路发送旅客日均达到588万人次,但目前春运客运能力仅382万,这意味着每天有200万人次的缺口。所以每年的买票难都成为春节前夕热门话题。中国有句俗话:新官上任三把火,随着刘志军下马,铁道部迎来新掌门人盛光祖,同时迎来了中国铁路史上一个振奋人心的消息——12306.cn网络实名购票。每一个返乡人原以为这下子可以方便买到一张回家的火车票,但结果还是大失所望。上线没多久,铁道部的12306网站就瘫痪了。大量用户无法登录,页画刷新时间长达30分钟,定票付了款却无法购票。自元旦起,12306网站就处于半死不活的状态。“当前访问用户过多,请稍后重试!”这是大量用户会碰上的无法登录;还有不少用户登录之后,却无法打开二级、三级页面,只有在不停地刷新;一些幸运的用户登录后成功付款,但却功亏一篑,却无法买票了。那么,我们铁老大号称铁道部信息技术中心、中国铁道科学研究院 共同研究开发的订票网站12306.cn为什么会瘫痪呢?
根据Alexa数据显示,12306网站的最近一周平均排名为339,日均IP为194万(每一个IP有可能是好几个人访问)。而国内航空网络售票网站“travelsky。com”的“一周平均排名”为11340,日均IP为8万多。相比之下,火车票的需求远大于机票。从行业经验来看,春运期间,12306的并发量(同时在线访问量)达到1GB(1GB=1024MB,1MB=1024KB,1KB=1024字节),而一般来说,每个人一次性访问只需要花费2KB左右,有时候甚至只有几个字节,这意味着峰值时,12306网站的同时在线访问人数高达500多万。这样高强度的并发访问,而且是交互式的并发访问,无疑对网站的软硬件形成了巨大压力,瘫痪在所难免。通过访问与分析12306网站,我们发现N多URL都以.do结尾,这是典型MVC架构Struts的风格,前端基本架构是jQuery+Struts+CDN(即content distribution network)。采用的是JBoss应用服务器,版本为2.1.1。据官方资料,JBoss是一个开源的J2EE应用服务器。前台的Struts框架配合JBoss均走的是开源路线,众所周知,开源的最大卖点是免费,但性能上难免有所欠缺。要彻底解决12306的瘫痪问题,谢科认为需要从软硬件运营模式多方面下手改进,比如:
1、订票系统可以采用异步处理模式,比如像证券交易里面,用委托和成交的概念来实现。按照现在设计的实时交易模式,同时几百万的查询和交易,而且最重要的是还要保证数据的高度安全性,是比较困难的。如果延时一个小时返回处理结果,不仅能大大减轻订票系统和服务器压力,而且由于在线时间的缩短,并发查询也会同时下降很多,像现在这样的实时交易模式,很多订票者由于不能成功订票,或者付款后没有反应,都会不断的刷新网页,造成恶性循环。
2、订票系统尤其是数据库必须细化业务需求,理顺业务之间的关联,将一个复杂的业务细分层多个可以独立解决的业务需求。业务细化到最细粒度后,应用层业务逻辑设计灵活扩展,业务逻辑处理可以分配到不同的机器进行处理,而不需要考虑共享操作、锁的问题。数据库层次也需要进行水平分割。 业务层、数据操作层都需要采用缓存,减少数据库操作。对软件系统架构进行优化设计,使其能支撑大并发量的交易,并支持平滑升级。
3、取消定点放票的秒杀效应。目前12306网站公布了“互联网购票起售时间”,每天分别在8点、10点、12点和15点放票,这个点的访问量成几何增加,无疑给本来不堪重负的软硬件来了一个彻底秒杀。
4、开放数据库接口,分流订票人群。我们知道,很多网站都可以在线订机票,就是因为中航信的travelsky系统将机票销售的数据接口对外开放,无论是去携程同程易龙,还是传统的机票代售点等网站,都可以帮助销售机票,而企业商最终接入的还是中航信的,铁道部12306的订票系统完全可以借鉴机票的在线销售模式。
此外还有一个小问题,一般我们网站可以用带www或者不带www访问的,比如百度用http://www.baidu.com/和http://baidu.com/都可以访问,其他大型网站也如此,大家可以试试,因为这只是一个简单域名解析而已,但谢科发现http://12306.cn/竟然不能访问,必须用http://www.12306.cn这也算很低级很不负责的错误了。
当然,无论怎么样,利用网络购票,解决“一票难求”是一项民生工程,值得赞扬。12306网站瘫痪只是一个技术问题,在中国政策和方向远远比技术重要,凭我们国人的智慧,只要领导下决心解决,那么这些技术问题解决肯定只是时间问题,谢科相信,不久的将来,我们一定能轻轻松松的通过12306在线订到火车票,在此也预祝大家过个愉快的春节。最后插个小广告,广州做网站专业建站——做个好网站也不贵,欢迎咨询客服QQ403571900,敲这么多字不容易,欢迎转载注明原创作者:谢科 http://www.166800.com,谢谢合作!