12306在线购票系统的设计

12306是一个成功的案例。

你对他的不好印象来自于12306刚出的那一年。抢火车票导致各种死机,验证码加载困难,特别难识别,还得装什么安全证书。

在接下来的几年里,12306在底层做了重大的技术改变,但是网页的UI并没有改变(关于UI,改变UI对用户来说是有学习成本的,尤其是12306是面向全国人民的网页和app,UI不能随便改变)。

所以你会理所当然的认为现在的12306还是以前的12306。不会,现在的12306每天可以处理30亿次查询请求。

通过官网,铁路12306 app,携程,去哪儿,超级火车票,还有民间程序员写的各种抢票工具,包括各种浏览器插件,不断刷新车票。有人嫌弃自己不是下铺,但也要刷啊刷,刷到满意为止。

有一张火车票被退了。其实这张票只是一个区间。比如从Xi安回北京,按理说中途任何一站都可以买票,等等。会有很多意想不到的需求,包括各种奇妙的组合。

综上所述,其实12306的商业逻辑远比淘宝等电商复杂。

需求分析和系统设计不仅要考虑全国各省的情况,还要考虑窗口购票。电话购票不受互联网购票影响。

毕竟,我在橱窗里发现了一张票。在用户决定买之前,这张票是不可能被网上买票的人抢走的。也就是说,在票源稀缺的情况下,互联网购票与窗口电话购票相比并无优势。

互联网售票之所以会失去优势,主要原因是12306售票系统为了支持每天大量的查询请求,对车票的缓存时间进行了长时间的调整,以笔者目测可能超过5分钟。

简单来说,现在Xi安到北京的票是零票,突然有人退票了。这时,两个人通过一个窗口,一个通过网络订票。

网上订票的人刷新了一下,发现还有0张票。当然,他不断刷新,但得到的是旧的缓存信息。

在窗口订票的人花了五分钟排队。等他的时候,网上订票的人刷新了一张备用票。他点击购买并选择了乘客。提交订单时,在窗口排队的人还从售票员那里找到了一张备用票。这时候互联网订票人提交的订单就会失败,窗口订票的人就成功买到了这个宝贵的票源。

然而,这个故事还没有结束。在窗口买票的人高高兴兴拿着票离开后,在网上买票的人回到票源查询界面刷新,发现还有一张票。他看到的仍然是旧的贮藏处。点击票源,会收到不是最新票源的提示。直到5分钟后,票源再次变成0。

简单来说,12606就是这样设计的。从此,无论春运热潮中有多少人抢票,网站都不会直接崩溃。大不了就是剩票0。

参考资料:

/art/201401/427406 . htm