动不动就崩的12306铁路订票系统 12306系统崩溃

12306如果说自己是世界第二,没人敢称世界第一 。
先别急着骂,你可能会觉得12306一到春运、五一动不动就“崩溃”了,一放票就刷不出来,再一刷就没了,感觉这个网站烂透了,花3亿元就设计出个这么个玩意儿,一看就知道国营企业不如民营企业技术牛叉,看人家淘宝,双11零点那么多人秒杀都没卡过……
这么说,你可就真误会铁总了 。

动不动就崩的12306铁路订票系统 12306系统崩溃

文章插图
不客气地说,别说淘宝,再加上京东、拼多多、亚马逊绑在一起,数得上号的购物网站,有一个算一个,在12306面前都是弟弟,换句话说,铁总一个能吊打他们4个,还是按在地上摩擦的那种 。
因为啥?算法和系统都不是一个量级的,毫不客气地说,中国的铁路订票系统在世界上是最牛逼的,没有之一 。


12306的牛逼,表现在三个方面:


一、访问量非常牛 。2020年春运期间,12306在高峰日网络点击量高达1495亿次 。
1495亿次是什么概念呢?中国14亿人,相当于咱每个人那天都跑到12306上拿鼠标点了100次,12306没崩!换算成秒,相当于高峰日平均1秒有170多万次的点击,12306没崩!
注意!这还是2020年春运,2020年春运正在疫情期间,许多人正月十五都还待在家里,根本没去买票,春运结束才陆陆续续出来工作的,所以说这个1495亿,根本还没到铁总发挥的巅峰极限 。
大家都在说的淘宝双11,来个对比:
淘宝2019年双11当天活跃用户为4.76亿,铁总的人流量是淘宝的314倍;
2019年淘宝的订单创建的最高峰值,是54.4万笔/秒,铁总是他的3倍还多;
双11才几天?也就三五天吧,春运是几天?一个月!
这还不够牛逼吗?
动不动就崩的12306铁路订票系统 12306系统崩溃

文章插图


按照淘宝双11的标准算,铁总春运和节日当天的访问量,相当于淘宝“双11”当天活跃用户每人点击超过300次 。
2020年1月3日,春运最高峰的那天,铁路全渠道售出车票共1637万张,其中88%是12306网站卖出去的,这一天,12306网站承受了1500亿次的日点击量!1天1500亿次,淘宝京东哪个能比?
12306系统基本上是:天天被秒杀、天天被抢购、天天被双11 。


二、逻辑非常牛12306的流量与计算量,对比任何购物软件包括百度,那都是碾压级的 。
表面上看,我们选个始发站、到达站、日期,轻轻一点,有多少趟车1秒钟就出来了,卧铺硬座多少张多少钱一清二楚,但这背后的计算逻辑是超级复杂的 。
淘宝上的商品都是固定的,比如说某个店铺,红色的38码的女鞋库存1000件,这些是提前上传好固定的,我们买走一件,库存自动减一就行了 。
动不动就崩的12306铁路订票系统 12306系统崩溃

文章插图
但是12306就复杂多了,举个比较短的线路例子:深圳到广州的动车,途径深圳、常平、东莞、广州东、广州 。表面上看只有5个站3种票(商务座、一等座、二等座),实际上它有30种车票 。
原因很简单,从深圳始发的车票,后面有4个站,每个站3种票 。也就是3*4=12种车票,乘客可能是去任意一个站买任意一种票;从常平上车的乘客,后面有3个站,同理有3*3=9种车票,所以这一趟车就会存在30种车票 。
这还只是最理想的推算,如果乘客买的是短途票,深圳上常平下,那么票要减去12个种类,同时增加常平到后面各站及后面各站之间的票组合,也就是说,一个短途票产生后,要再增加18种票预备好 。
这还只是动车,普快还有硬卧、软卧、硬座,卧铺还分上铺、中铺、下铺;而且普快的站点更多,我举这个例子才5个站,我国停站最多的车次——齐齐哈尔到古莲的6245次,全程62个站,上中下硬卧、上下软卧、硬座,也就是(62+61+60+59+……1)*6,数学好的朋友可以算算,这得是多少种组合?
动不动就崩的12306铁路订票系统 12306系统崩溃

文章插图


你可能会说,实际情况用不了这么多种票,但无论你买哪一种票,在下单之前12306是不知道的,对12306来说你都是不确定的、随机的某一种票,所以怎么解决随机问题呢?只能全覆盖,哪怕买这张票的人几率只有0.1%,铁总也得把所有可能的票组合全准备好 。
中国有1805个客运火车站,每条线路上每天多的数百少的几十班火车日夜纵横 。如此排列组合算下来,12306要设计的车票种类,绝对是个天文数字 。