当前位置: 江南文明网 > 科技 > 互联网 >

为什么抢票的时候12306总是会崩?

条评论

为什么抢票的时候12306总是会崩?

相信很多人都在吐槽,为什么12306一到抢票就蹦,难道就不能找几个好点的程序员来吗?其实这还真不能怪程序员没认真维护,而是票务网站、APP本身就就和购物平台不一样,接下来就让小编给大家科普一下,12306到底面临多大的业务压力和挑战。

1、12306是一个线上线下同时的过程,数据实时共享

很多人拿啊12306与淘宝京东比,但淘宝京东只是一个纯线上业务,而12306不是只有一个APP和网站的朋友,所有人在线下售票厅以及线下机器里产生的交易,也会影响整个12306的数据系统。

也就是说,票的数量是有限的,而线上和线下同时交易,数据要实时更新同享,复杂度要比纯线上购物APP复杂很多倍。

 

为什么抢票的时候12306总是会崩?原因真不是程序员的锅

 

 

2、购票的人可以有多种路线,多个时间选择

你永远预测不到有多少人会在哪一天去哪一个地方,一个从北京回福建的人,他为了回家,选择的线路和时间会非常诡异多变。

他可以买浙江到福建,可以买上海到福建,各种各样的路线,只要能回家。他可以在1号2号3号随便哪一天出发。这就代表了谁也不知道需求的流量会是多么的突发,购买的内容会是多么复杂。

 

为什么抢票的时候12306总是会崩?原因真不是程序员的锅

 

3、12306没有缓冲时间,卖票就要立刻完成

12306没有缓冲时间,从下单到付款、索票、出票,都是一气呵成,没有缓冲时间。12306需要在最短的时间内面对大量需求,所以在抢票的时候我们常常遇到登录不上去或者卡的情况,因为APP都被塞满了。

同样是1亿用户,4个步骤,电商可以分4个步骤淡定处理,每个步骤处理1亿流量,而且可以分多小时,多天处理。12306就只能一口气处理4亿,没有缓和,这个压力可想而知。

 

为什么抢票的时候12306总是会崩?原因真不是程序员的锅

 

4、库存管理极为复杂

电商平台虽然货量大,但归根结底就是固定产品的增删,而12306是完全不同的难度。

例如一趟北京到广州的车,我买了北京到广州的票,那么北京到广州的票减1,但广州到北京不变。我买了中途武汉到广州的票,那么武汉到广州所有剩余站都减1,但是北京到武汉不减。其余所有可能性都要变,因为只要经过这两个站点的路线,都受到影响。

实际业务中,这样的变动,会导致整个库存实时变动,并且是P级别的数据变动,如果对数据库稍微有所了解,都知道这种数据变动对于资源的消耗有多么恐怖,一个1GB的电子表格跑查询都能把很多高性能电脑跑崩掉,早期电子表格甚至限制在6万5千行,就是防止把电脑跑崩。

所以为什么12306夜里11点到早上要维护?这样的数据库如果不是天天维护保护缓存,就没办法继续生存了。每一天,12306都是拿命来奋斗。

 

为什么抢票的时候12306总是会崩?原因真不是程序员的锅

 

5、业务去重需要大量的判断。

电商不需要每一笔订单都核实身份,而12306是,并且每一个人同路线,同时间,要限购。比如12306是不允许一个人在同一天购买大量北京到珠海的车票的,这对其他人不公平,所以要限制人的出发时间和购买路线。

如果要限购,那么这个人的购买信息时间,全部缓存下来,这个人的每一笔交易,都要和他当前的已有行程进行去重匹配。这对数据资源的消耗是非常恐怖的。

并且就是12306本身是允许非本人买票的,添加乘车人就可以给其他人买票,这就代表着,同一个人的信息,完全可以在不同的时间节点被不同的买家添加,这又带来了巨大的计算压力。

 

为什么抢票的时候12306总是会崩?原因真不是程序员的锅

 

6、和12306比流量,什么公司都没有资格。

每一次查询余票的时候,都是要跑所有的数据库来帮你同步当前的余票信息,这个负载量和计算量是天量。而且,现在非常非常多的人还在用抢票软件。一秒刷几百次,1个人用抢票软件,可以造成几千个人一起刷产生的数据压力。

 

为什么抢票的时候12306总是会崩?原因真不是程序员的锅

 

7、为什么12306不引入国外的先进技术呢?

答案其实很简单,国外也罩不住啊。在数据挑战上,我们遇到的数据挑战绝对是世界最强梯队的,很多时候没有之一。

虽然春运票难抢,12306也确实是尽力了,谁让咱人太多呢?12306能做到现在这样,已经是非常非常不错了,大家下次不要再误会它了~!最后祝大家都能够买到回家的票,开开心心过大年~