为什么12306时不时要崩那么一下?( 三 )
这样一个线路的实时库存,做起来是非常令人头大的。
假如有人买了从北京到广州,那么对应的所有库存就要减1,但是广州到珠海的库存不减。
假如有人买了从武汉到珠海,那么对应的就是武汉到珠海沿途所有线路的库存减1,但是北京到武汉不减。
假如有人买了石家庄到漯河西,那么北京到保定,北京到石家庄不用变,漯河西到珠海段,不用变。
其余所有可能性都要变,因为只要经过这两个站点的路线,都受到影响。
实际业务中,这样的变动,会导致整个库存实时变动,并且是P级别的数据变动,如果对数据库稍微有所了解,都知道这种数据变动对于资源的消耗有多么恐怖,一个1GB的电子表格跑查询都能把很多高性能电脑跑崩掉,早期电子表格甚至限制在6万5千行,就是防止把电脑跑崩。
而这种级别的数据,需要消耗的资源说出来都违反广告法。
所以为什么12306夜里11点到早上要维护?这样的数据库如果不是天天维护保护缓存,早就彻底完犊子了。
每一天,12306都是拿命来奋斗。
所以之后买票的时候,要宠溺一点,温柔一点,你买的不是票,是工程师们的头发。
5
第五,业务去重需要大量的判断。
电商业务其实严格来说是不需要用户实名制的,也不需要对用户的身份去重,只要你付钱,有货就发货,除非是限购商品稍微拦截一下,但是面对黄牛党,也就是象征性的挣扎一下,毕竟大家都是出来卖的,不会跟钱过不去。
而12306不一样,12306的模式是,每一个人都要限购。
同路线,同时间,要限购。
就拿北京到珠海举例,12306是不允许一个人在同一天购买大量北京到珠海的车票的,这对其他人不公平,所以要限制人的出发时间和购买路线。
那么问题来了,如果要加限购,那么就要把这个人的当前购买信息,时间,全部缓存下来,这个人的每一笔交易,都要和他当前的已有行程进行去重匹配。
这对数据资源的消耗是非常恐怖的。
并且,并且,查重还有另一个现实问题,就是12306本身是允许非本人买票的,就是我可以给我的爸妈买票,我爸妈也可以给我买票,只要添加乘车人就可以了,这就代表着,同一个人的信息,完全可以在不同的时间节点被不同的买家添加,这又带来了巨大的计算压力。
这就和人生一样,太难了。
第六,和12306比流量,什么公司都没有资格。
很多人真的以为双十一就是流量的巅峰的了,其实并不是,12306才是最恐怖的流量巅峰。
为什么?因为电商的业务模式不会导致用户重复点击,而12306无时无刻不在被所有用户重复点击。
举个例子,你在双十一买东西,是不是买了就走了?买不到你就是骂几句,然后也走了。
一个用户的点击是有限的,你就算单身30年,给你放开了点,你能点多快?
要知道对系统而言,每一次点击,都是一次数据交换。
12306面对的点击流量,要大的多,你买票的时候,是会不断刷新操作的,你在查询余票的时候,每一次都是要跑所有的数据库来帮你同步当前的余票信息,这个负载量和计算量是天量。
而且,现在非常非常多的人在用抢票软件。
所谓的抢票软件,原理就是不停地用机器去读取12306的数据接口,机器的速度绝对是比你单身30年的手速还要威猛几十倍,一秒刷几百次,1个人用抢票软件,可以造成几千个人一起刷产生的数据压力。
各大抢票软件公司加起来用户几千万是有的,14亿人刷出几百亿人的流量都绰绰有余。
你知道12306的流量负载有多强了么?
在12306上,人人都是火影忍者,天天影分身。
6
会有人问,既然挑战这么大,12306这么不容易,那么为什么不去像国外先进技术取经?为什么不去加大投入服务器?为什么还在找借口?
为什么12306不引入国外的先进技术呢?
答案其实很简单,国外也罩不住啊。
早在2012年,12306就有公开招标,预算不设限,只要能解决问题,世界顶级机构都来竞标了,但是最后基本都放弃了。
推荐阅读
- 《开端》更新连占十条热搜,王萌萌为什么下车,你真的看懂了吗?
- 为什么我们还在看春晚?
- 东西问|“年味中国”系列稿之四:为什么我们还在看春晚?
- 调解、相亲、恋爱指导……为什么情感类视频这么让人上头?
- 属于多代人的青春回忆节目快乐大本营,为什么会停播了?
- 为什么是白敬亭演《开端》?看完这档综艺你就知道了
- 闪光的乐队:《小白马》赢了可以理解,《下一个》为什么会输?
- 林志炫又输了,而且是连输三场,这是为什么呢
- 白敬亭光剑变装视频!为什么和我们期待的光剑变身是不一样的?
- 李靓蕾翻车?现在群众呼声都转向王力宏,为什么?
