12306网站那点事

春运火车票开抢了,高峰尚未起,办公室同事那天抱着玩玩的心态试了一下,广州往重庆方向的卧铺票已经很紧俏了。前段时间12306被曝了个“串号门”,登陆账号能看到别人的用户信息。今天乌云网又曝了它一个接口漏洞,说CDN那边漏洞可导致用户信息泄露,!12306就这样再次被推倒风口浪尖,各路媒体不约而同的又开始代表底层民众吐槽铁老大垄断带来的各种不爽。

中央集权式的垄断,也是铁路牵一发而动全身的特性使然,若是贯通省份各怀鬼胎闹起别扭互不配合,铁路运行效率肯定不高。类似的例子在上世纪70年代徐州铁路分局就上演过,当年的派性纷争,导致徐州铁路分局连续21个月没有完成装车卸货指标,以至于当时领导人出行经过徐州的专列都不能很好安排,铁路局各自为政的弊端显而易见。

我也想着铁路票能像航空票一样分到各个代理商去,让竞争去提高服务质量,想法是很美好,可现实不容易。类似武汉这样的铁路枢纽,那么过路车,不给它分配点票人家肯定不干。只有共享票源才好一路分粥,既然大家都代理同一个票源,所谓竞争意义也不大,更何况政策不允许涨价,火车票没什么利润。那些代售点每张收个5元手续费,看似很好赚,其实也就在逢年过节罢了,在网络发达的时代,代售点存在的意义就是为不懂网络的农民工服务。

既然不能将票拆出给代理卖,那据说花了好几千万搭建的12306网站,今天这个漏洞、明天那个卡顿、后天再假死,这么糟糕的体验怎么看都是乱花钱。话说当时铁道部解释说这是买机房、买冷却设备、铺设管线、购买服务器的首次投入,自然少不了。如今很多人都认为铁道部应该将售票业务外包出去更好一些,看那阿里巴巴在每年双十一时那超强的承受力,怎么都比12306强好多倍。

或许是基于信息安全的担忧,政府部门骨子里都倾向于一切自己来,所以多花钱自己搞这个可以理解,至于说售票业务外包会更好这观点,我不敢认同。以我了解,12036用两三年的时间能得到这样的水平也算不错了。记得当初网站因海量访问瘫痪的之后,铁道部就咨询过专家,阿里巴巴的负责人据说也被请去给12306出谋划策,结果也只能是这样。

究其本质。火车票售卖跟网购秒杀有很多不同,就拿网购双十一来说,你肯定不会过了零点才去慢慢挑选东西,所有想秒的都是事先看好,抢的时候后台也只需要做个累计,累计一定数就说卖完了,中间不需要调动整个数据库。抢秒跟交易错开执行,下的订单可以留着慢慢消化处理。12306这样的票务系统区别在于它只有一种商品,抢票开始要先查询,查铺位、车次、时间、始发站到达站等,每次查询都是要扫描整个数据库。为了防止重票,所有的订单都必须上锁,锁定也是一个写数据库的过程,每笔交易后也需要写回数据库,以保证别人查到结果得到及时更新。放票瞬间,对数据库是又查又写,完全同步,其中的压力,谁做谁知道。在专家眼中,要保证查询结果实时更新很难,为了缓解读写压力,查询数据被设成隔5分钟才更新一次,排队订单也是后面才改进的。这也被人戏称将火车站排队搬到了网上。

至于一些半桶水的网友总建议12306网要增加带宽、增加服务器、使用CDN加速等等,这些都治标不治本,人家服务压力主要是数据库环节,加带宽、用CDN帮助也不大。增加服务器是可以提高运行效能,但这还需要优秀的底层架构配合才行,传统的数据库在海量请求瞬间容易过载,有必要专门开发一套东西应对。当初IBM想承接12306建设工程,报出的方案价格不菲呢。

最后,我也认为12306自己买服务器带宽什么的挺浪费的,它也就逢年过节才有那么大压力,平常服务器估计都闲置了,如今公有云也比以前更成熟了,官方应该尝试一下使用公共计算服务,向腾讯、百度、新浪、阿里巴巴什么的租用计算能力,可以省了带宽跟硬件的事,安心改善系统设计。想法是很美好的,不知道实践起来会不会遇到更多困难呢?

点一下给本文评个分!
(尚未有人评分)
Loading...

《12306网站那点事》有20个想法

  1. 很多时候事情都不是我们想的那样美好,我们不知道的还有很多,就像冰山,看到的只有一角,看不到的才是本体(>﹏<)

      1. 买票时发现,12306网站的购票系统页面现在弄的挺方便时尚的,哈哈~~但是体验还是差了些,一卡一卡的。。

发表评论

电子邮件地址不会被公开。