在 12306 出现之前,线下购票柜台工作人员使用的 TRS 系统也是全国联网的,为什么那时没有崩溃问题?

文艺频道··5 min read
说实话,我以前也想过这个问题。 当年我在火车站窗口买票,看着工作人员噼里啪啦敲键盘,屏幕上一串绿色的字符,全国车次信息唰唰就出来了。那时候也觉得,这系统挺牛逼啊,全国联网,怎么从来没听说过崩溃?后来12306一上线,动不动就“系统繁忙”、“网络拥堵”,大家就开始吐槽:人家老系统怎么就不崩? 其实道理...

说实话,我以前也想过这个问题。

当年我在火车站窗口买票,看着工作人员噼里啪啦敲键盘,屏幕上一串绿色的字符,全国车次信息唰唰就出来了。那时候也觉得,这系统挺牛逼啊,全国联网,怎么从来没听说过崩溃?后来12306一上线,动不动就“系统繁忙”、“网络拥堵”,大家就开始吐槽:人家老系统怎么就不崩?

火车站售票窗口工作人员敲击键盘操作TRS系统,绿色字符屏幕,乘客排队购票

其实道理特别简单,说出来你可能不信——TRS根本就没经历过真正的“压力测试”

你可以把TRS想象成一个只有几十个窗口的奶茶店。全国一共就那么两万多个售票窗口(最多时也就三万多),每个窗口前最多排个二三十人。哪怕春运高峰,同时在线操作的人数撑死了也就几万。而这几万人,每一个人都是在单一、固定的操作路径上:选车次、选票种、付款、出票。而且出票是“物理消耗”一张就少一张,不存在抢票的复杂逻辑。

但12306面对的是什么呢?是几亿部手机同时戳屏幕。2013年春运峰值时,一天点击量超过200亿次,峰值并发请求每秒几十万次。这就像把那个奶茶店开到了世界杯决赛现场,几十万人同时举着钞票喊“我要一杯珍珠奶茶”,系统不崩才怪。

春运期间大量乘客同时使用手机抢票,屏幕上显示12306系统繁忙

更关键的是,TRS的业务逻辑其实比12306简单得多。当年的票是“席位库存”——每一张票对应一个具体的座位号,卖了就没了,不存在什么复用、共用、中转分配。而12306要处理复杂的铁路客运规则:一张硬卧票可以在不同区段反复卖,同一趟车不同站之间要动态分配余票,还要防止超售。这复杂程度完全不在一个量级。

而且TRS的架构是集中式数据库,所有窗口都连到同一个中央数据库(据说叫铁路客票中心)。窗口数量有限,数据库能扛住。12306刚上线时也想用同样的思路,结果一开售数据库直接被打满,所以才有了后来所谓的“分布式架构”、“库存拆分”、“排队机制”这些技术改进。

说白了,TRS没崩溃,不是因为技术多牛,而是因为它的用户规模被物理窗口限制死了。就像一个小池塘,哪怕里面只有一条鱼,也不会缺氧。但12306面对的是汪洋大海,而且海里全是鲨鱼抢食。

所以别再觉得老系统好了。你当年在窗口排两小时队,是因为前面只有二十个人;现在你刷手机排两小时队,是因为前面有两千万人在跟你抢同一张票。不是12306不行,是时代变了,用户量从几万膨胀到了几亿,而铁路运输的物理资源(火车座位)却几乎没有增长。

不管系统怎么优化,票就那么多,该买不到还是买不到。崩溃的背后,是供需失衡的无奈,跟系统本身关系不大。