为什么耗资数亿的12306一直都非常难用?

眼看着春运高峰即将来临,你准备好抢票工具了吗?

11月23日,12306网站购票系统全面接入微信,至此,银行卡、支付宝、微信均可购买车票。

任何一个使用过网络售票系统的人都了解,12306的用户体验不是一般的糟糕,每逢春运,12306几乎都被推到风口浪尖上。充满乡土气息的界面,系统响应卡顿、延迟,每日长达7个小时的系统维护周期,奇形怪状的图片验证码,每天只能取消三次订单的强制规则……都使12306成为全国人民最为头疼的一件事。

用户体验如此之差

其实早在2010年1月的那个春节,12306网站便开通并进行了试用,结果,也就是在这个春运高峰时期,在全中国网民的高流量“点击”之下,12306网站出现了严重宕机。也就是从此时起,12306便开始了为人所诟病的历史。

2013年,12306网站改版上线,新版网站增加了自动查询、自动提交订单、有票提醒等功能,并开始对互联网购票进行身份信息核验。同时,12306手机客户端正式开放下载,并新增支付宝通道。

2014年12月,12306预售期由20天延长至60天。

2015年,12306关于购票、退票和改签时间的相关规定开始进行调整。

2016年,12306网站新增“余票动态信息栏目”,手机APP新增列车正晚点查询服务。

2017年11月,12306网站微信支付功能上线试运行。

直到今天,12306仍在功能迭代和系统升级中持续的“缝缝补补”。

为何总要“缝缝补补”?

如果将春运售票与淘宝等电商平台“双11”订单业务挑战进行相比的话,前者在业务复杂性上更具挑战性,而后者更多的体现在业务规模上。

比如,乘客购买一张车票,理论上这一区间票会同时存在多个站点,而乘客每买一张车票,都基本上是不同区间车票的订单。如果再加上订票者的“学生”或“成人”信息,选择上下铺、优选号等选择,那么无论查票、出票、支付等逻辑上,都要比电商平台上订单系统复杂得多。

第一个特点就是并发非常高。

根据官方数据显示,12306网站PV(页面浏览量)目前每天都超过400亿次,这个数字远远高于淘宝双11时同时访问的人数。因为,除了有真正购买需求的全国网民之外,同时还有机器人、订票机器在大量的进行刷新,并发次数非常高,包括优化数据库访问、分布式、缓存、负载均衡等技术挑战摆在眼前,都无法解决服务器高负载的问题。

第二特点就是峰值不均匀。

想必大家都体验过,临近年跟,摩拳擦掌准备好高速网络同时在页面和手机APP上进行手动刷票,但几乎就在一瞬间,有座的没座的,车票早已售空。比如,涉及到河南、安徽、四川、广东等地的火车线路时,基本每一个订单都会被疯狂抢购,峰值极为不均。

相比淘宝双11来说,某些爆款页面因为服务器上突然产生高流量负载,出现了暂时无法响应或下单失败的情况仍是少数。

另外一个特点就是SKU。

SKU即最小管理库存。在淘宝双11时,多数人都经历过当天下单,但往往不会当天发货而是高峰过去之后再发货的情况。这也就是淘宝SKU数量的问题,也就是说,出售一款产品,目前现存1000件,但同时2000人下单时,商家可先出售1000件,再随后补货上架。也就是说实际的SKU数量是2000甚至按照客户订单来完成的。

而火车票,因为订票实名制,分配座位都是对号入座的。每个时段每趟车次每一个座位,系统只能售卖一张。而实际上,无论你是不是身处春运高峰时期,全国13亿人次庞大的流动需求,迫使你购买的火车票最小库存SKU永远只有1个。

实际上,在互联网售票之前,网点售票已实施多年。也就是说,在铁路售票系统内部也是个庞大且复杂的跨地域系统进行支撑,包括涉及的业务逻辑、软硬件供应商、版本与维护协议等方面。

因此,有着严重历史包袱的12306,在诞生之初并非是为了重构原有的售票系统,更多是为了缓解当时日益紧张的售票系统压力,首先仍是原有的系统上做web前端。这才是根本上的问题。

正如总有人会豪言,自己能设计出一个比12306更好更廉价的购票系统。那么,关键的一点是,面对此时此刻的问题,你又会如何处理呢?

本文基于悟空问答“为什么12306手机客户端如此脆弱?”内容整理,来源链接:

https://www.wukong.com/question/6372701612640567554/

未经允许请勿转载:程序喵 » 为什么耗资数亿的12306一直都非常难用?

点  赞 (0) 打  赏
分享到: