#春运#、#春运抢票攻略#
问一个悲伤的问题。今年过年回家的火车票,你们买到了吗?不用说很多人都没有买到,也不用强行装作坚强。我能感受到你们内心的绝望,有钱也没用的这种感觉。前段时间12306崩了,很多人在痛骂12306不干人事。还有很多身边的朋友在问我,为什么12306总是动不动就崩溃,简直和国足一样不给力。明明它只是一个很简单的卖票软件,怎么就搞成现在这个鬼样子?
再看看QQ、微信,几亿人同时在线聊天,激情互动,双十一几亿人同时疯狂剁手,败家不当人都没有问题。那为什么12306一出手,就是那种尿不尽的用户体验呢?当我看着朋友困惑又天真的那些疑问,不禁展露出了高深莫测的笑容。今天,就让我来简单科普一下,12306到底面临了多么大的压力和挑战,毕竟这么多人一拥而上,哪个软件受得了。希望大家可以听进去多记笔记,过年在饭桌上吹牛的时候一定用得上。
当然不是说你看了这篇文章就可以买到票。实际上我们都知道你肯定是买不到的,但起码看了之后可以得到安慰,真不用谢我。点赞就行,多的咱不能要。
很多人拿12316跟双十一来比较,他们会觉得双十一这么多的订单都可以撑住,那12306撑不住显然是因为12306的技术水平不到位,但我会认为这一开始就思想固化了。其实,12306的模式跟双十一的业务模式相比它是有本质不同的,就这些不同导致了12306的难度要比这种双十一、促销购物要大得多得多得多。如果说双十一是中国乒乓夺冠的难度,那12306基本可以与国足出线画等号,还是在打败叙利亚的基础上。
为什么呢?首先第一点,双十一的流量再大,那也只不过是一个纯线上的业务。什么叫纯线上的业务,就是说所有的用户都是在网页或者App下的。整个数据其实在网络上是闭环的,这就导致双十一只是一个很纯粹的线上流量问题,解决起来相对更简单一点,就像一个很单纯的小屁孩一样好欺负,你抢小孩口袋里的糖当然是再容易不过。然而12306并不是只有App和网站,所有用户在线下的售票厅以及线下的机器产生的交易也会影响整个12316的数据系统。
而在现实生活里面会有非常多的人买火车票返乡,例如那些辛苦的农民和工人朋友,他们并不懂得线上操作,只能陷下去,彻夜彻夜辛苦地排队。所以12306作为一款国民产品,也必须照顾他们的感受,是不能够轻易舍弃线下的业务。这就导致了一个问题,12306变成了一个线下与线上同时会对数据产生影响的庞杂业务。这样的复杂度显然是要高于双十一几个量级,一个是你只考虑线上,一个是你要同时考虑线上跟线下的区别,难度显然不一样。
跟简单纯粹的小朋友双十一来比,12306就像一个饱经社会摧残的老油条,永远不知道他们会什么时候出现什么样的幺蛾子。这就像什么呢?就像一个纯洁的女孩第一次和她的男朋友约会, 女孩在这里等待,怕她的男朋友不来,又怕她的男朋友乱来。
我们抛开线上线下这些东西不谈,毕竟这是欺负12306了。那我们谈一谈业务本身的一些计划性和可预测性。如果你认真地思考,你会发现双十一是一个非常明确的计划,并且他是一个有操作节点的业务,12306却不是。为什么这么说呢?双十一活动,他并不是只有11月11号当天,实际上这是一个一个月前甚至几个月前就已经开始的商业计划。在这个活动的过程中,不管你是抢券和红包还是付定金也好,实际上你的需求是已经被锁定的,大量的商家他也锁定了库存和销售指标,最终大家的一个结算跟发货是集中在双十一当天爆发而已。这就代表着只要有确定性,流量再大也不是特别难的问题。当你知道困难会在什么时候发生,这个困难他就不再困难,真正的困难在于不可知。12306的业务模式就是不可知,因为你永远不可能测算出会有多少人在哪一天去哪一个地方?
举个例子大家就懂了。微博每天这么大流量这么高的关注度,但是为什么经常突然一个明星出轨或者结婚或者负面新闻微博就要挂掉,是没有技术实力还是服务资源不够。都不是,其实是因为这种流量是突发性的,谁也不知道什么时候会出现这样的爆炸性增长,所以服务器自然而然就挂掉了。这就和泼水节上大家都做好了被泼水的心理准备,但是被泼了一桶开水,这谁遭得住呀。在这里建议所有的明星出轨之前先微博报备一下,让他们出轨出得放心,我们吃瓜也吃得安心。
电商业务他本身不是一个一次性就要完成所有流程的业务,但是12306必须一次性完成,这近一半加大了实现难度。12306的买票卖票流程就是要立刻完成,从下单到付款,然后锁定到出票都是一气呵成的,没有任何的缓冲时间,不存在我下单一个票,两天后才告诉我成功或者失败,要是出现这种事情头都要被消费者给打爆掉,所以,12306等于是没有缓冲周期,需要直面所有的流量,在最短时间内满足所有人的所有需求。
12306的库存管理是一个极其复杂的事情,复杂到给你简单讲一下,都会觉得很抑郁。想想看,作为电商平台,你管理货物固然也是有难度的,但是本身的统筹不过是一个固定产品数量的增删查改有多少就是多少,被两个人同时拍下这样的小概率事件其实都简单。而12306是完全不同的维度,两者的难度差别大概相当于蚂蚁吞大象。在这里就不细说了。
很多人真的认为双十一就是流量的巅峰,其实并不是,12306才是真正的巅峰。因为电商的业务模式是不会导致用户重复点击,12306则无时无刻不被所有用户重复点击。举个例子,你在双十一买东西买了就走,买不到你顶多骂几句。在电商里面的点击是有限的,你就算单身30年,我给你放开了点,你能点多快。但是对系统而言,你的每一次点击都是一次数据交换,那同样的一个道理,12306要面对的点击流量要比电商多太多了。你买票的时候会不断的去刷新,在查询余票的时候,每一次查余票都是要跑遍所有数据库来帮你同步。当天余票信息的负载量跟计算量是一个天量,而且现在很多人在用软件来抢票。
所谓的抢票软件原理就是不停地用机器去读取12306的数据,机器的速度绝对是比你单身30年的手速还要威猛几十倍,一秒刷几百次几千次都是可以的。一个人用抢票软件相当于几千个人一起刷产生的数据压力,14亿人刷出几百亿人的流量都是绰绰有余的,现在你知道12306的流量负载有多强了吧。在12306上面每一个人都是影流之主。
12306往往是这样一个状态,全年都运行良好只有重大节假日才会出现偶尔的崩溃。为了应付一年中为数不多的重大节假日,采购了大量的服务器,平时又根本用不上,这是一种很浪费钱的行为。要知道中国的铁路本身就是巨额亏损,国家持续补贴,在这种情况下,为了短时间的需求投入海量的成本,这笔账算算也知道划不来。再看看微博,宁可每次被流量击毁也不肯长时间的去维系大量的服务器,所以他是赚钱的。现在知道12306有多不容易了吧,这可都是纳税人是我们的钱。
12306这种基础设施天然就是挨骂的。做得好,大家不会夸,因为是理所当然的,只要做得有一点点不好,就会被骂到死。这就是基础公共服务设施的悲哀。所有人都有不合理的期待值。何况12306在只花了这么少的预算的情况下做到现在这个程度,已经是超神操作了。
最后说一句,今天买到票了,真香。