“大学生开学第一件事,就是被学校教务系统的‘土豆服务器’气疯。”
每年开学季,都是大学生们拼手速的时期。
不仅要抢到回学校的车票,还要和教务系统斗智斗勇,抢到下学期想修的课程。
图源新华社[1]
登录—查询—选择—确认,在手机上一番操作。
如果是在抢票,一套流程下来,可能车票已经支付成功,运气好的话,甚至连靠窗看风景的座位都选好了。
但十分钟过去,刷新了十几遍的教务系统还是一片绝望的空白。
被教务系统网页卡到崩溃的学生们,调侃说“所有学校的教务系统,都是用土豆发电的”。
那么问题来了,承接几千人的教务系统经常崩溃,而每秒都要承担几百万点击的12306,为啥能做到这么牛?
01
卖票软件,到底有多难?
事实上,我们实现线上“买票自由”的时间并不算长,或许很多人记忆中还有过这样的画面:
每年放假的前几天,火车站总会早早排起买票的长龙,在人们争先恐后的询问声里,大厅里游走着四处招揽生意的“黄牛”。
那时候能抢到一张火车票靠的是不仅是耐心和运气,还有售票员的手速。
图源:视觉中国
直到2011年,12306互联网售票系统正式上线。
这个人人在电脑、手机上都能打开的卖票系统,开始接替售票员,接受全国人民线上买票的考验。
面临的第一个冲击,就是惊人的访问量。
据介绍,12306高峰日的网络页面浏览量超过2600亿次,相当于全中国人每人每天访问了票务页面近200次。
平均1秒就要承受300多万次点击,系统还能维持正常运行,12306的压力可想而知。
据统计,12306在高峰日的点击量可达1495亿次,而全球访问量最大的搜索引擎网站谷歌日访问量也不过56亿次,仅是12306的零头。
超高访问量之下产生的订单量也是巨大的,有数据显示,12306的售票系统在高峰时段,1秒售出近700张火车票。
也就是说,一秒钟,一辆热门动车组的票全被抢光了。
有人把买票比作线上网购,事实上,在12306上买张票,背后流程的复杂程度远远超过了人们的想象。
中国的春运堪称世界上规模最大的人口流动,几乎人人都有买票需求。
12306票务系统首先需要解决的,就是精准对号入座,避免人们把票买重。
当许多人同时在竞争同一张车票的时候,12306要实时更新线上网站和线下5000多个车站的车票余量。
图源:微博@12306
此外,“买票”可能只是旅客众多操作中的一个,下单后的退票、改签、变更到站和延长乘车区间,更是巨大的计算量。
一个需求的变化,就会影响到整条路线火车站点可销售的余票量。
这要求12306在计算余量的同时还要实时返回精确结果,实现“动态变化库存”。
这无异于当场做高等数学题,100万道里还一道也不能错——
毕竟12306和电商平台不同,没有客服在下单后联系你,“亲,这款车票已经卖完了。”
当然,算法承受的压力不至于此。
一张车票的本质是某个车次的某一段区间,列车停靠的站越多,路线组合就越变幻莫测。
光是输入“北京”这个城市名,市内就有近十个出发站点/图源:微信公众号@中国铁路
比如,G71次列车从北京西开往福田,中间17个站,排列组合方式有136种。
与此同时,我国拥有世界上最现代化、最大规模的铁路网。
列车的起点和终点之间的若干站点,12306卖票的组合方式到底有多少种,恐怕没人能数清。
图源:央视一套
除此之外,要处理的问题还包括:如何在一条线路上合理公平配票,避免某一站卖出太多票造成上下车拥挤;
如何给老人优先配置下铺、为儿童配置相邻席位等。
每卖出一张票的背后,12306的大数据都需要考虑到旅客每一个细小的需求。
经交通运输部研判,2023春运期间客流总量约为20.95亿人次,比去年同期增长99.5%。
更多的人出行,意味着12306的售票系统将又一次承受前所未有的压力。
这让人不禁好奇:在这种的现状下仍旧保持不崩溃,12306到底怎么做到的?
02
12306,到底咋做到的
这是铁路12306客票系统的监控大厅,在大屏幕上展示着12306实时售票情况。
客流趋势、购票渠道、候补概览甚至风险防控等,一目了然。
图源[2]
在12306这张“无形之网”的调配下,不论多么复杂的线路和需求,都不会发生拥堵、碰撞。
人口流动这种原本无序的运动,变得井然有序。
为了做到这些,12306经过了数十年的改造和迭代。
人们点击网站开始查票的瞬间,售票系统的内存计算系统就运作起来了。
快速反应现查现算,能让你迅速查到车票的余量,并丝滑地下单。
还能查到等待人数和预估等待时间
为了缓解出行高峰期的压力,12306还想出了分时段销售车票的策略。
最初,一天只有4个放票时间。
为了不让“限制”成为购票的妨碍,如今,每天8点至18点期间,每个整点和半点均会有新票起售。
为适应更多样的需求,不同站点还设置了不同的起售时间。
控制流量是一方面,提升自身的可靠性也很重要。
12306自主研发的“双活中心”架构,建设了两个数据中心让它们数据同步、交互工作,当其中一个系统出现故障,客票系统可以做到秒级切换和快速智能修复。
简单来说,一个系统崩溃后会有另一个来顶上,减少了系统影响人们买票的几率。
与此同时,12306还把网络宽带从5G扩容至12G,“增加带宽就等于多开了几个门,能让更多的用户同时进来。”
敢这么做的底气,是12306学会了在春运高峰期租个“云”服务器一起承担压力。
高峰期间12306网站的火车票查询量,大概占了12306网站90%以上的访问流量。
在它们转化为真正的订单之前,这些查询业务会先被放到租来的“云”上,来提升系统运作的效率。
经过一系列技术的迭代和优化,现在人们买张票的平均耗时只有0.77s。
为了维持系统健康的运行状态,12306还会对异常请求进行风险评估和拦截,也就是防“黄牛”。
运用强大的识别手段进行风控并拦截,以此打击恶意刷票,在买票这件事上,12306最大限度地保障公平公正。
“春运”,世界上规模最大的人口迁徙,成就了世界上规模最大的实时票务交易系统。
总设计师单杏花,也凭借工作中一系列创新与突破被誉为“12306”系统的最强大脑,成为登上2023兔年春晚的“最美铁路人”。
图源[4]
03
被骂惨的12306,终于翻身了
作为一个为十几亿人提供服务的卖票系统,12306的每一个缺点和不足,都会被人们敏锐地觉察到,吐槽之声也少不了。
“天天被秒杀、天天被抢购、天天‘双11’。”
大量订单带来的庞大计算需求,是12306系统内工作人员每天面对的事实。
12306的后台有着庞大的计算需求
2011年12306互联网售票系统刚上线,随即在2012年春运时就遇到了“大考”。
最高日售票量119.2万张,访问压力达到14亿次。
庞大的互联网购票需求使网络带宽、设备处理能力一时难以支撑,系统出现卡顿甚至瘫痪。
归心似箭的人们不停刷新页面,面临的不是车次信息以及购票信息无法刷新,就是购票到最后一步无法成功支付。
一时间,对12306的批评铺天盖地而来。
在这样的情况之下,研发团队只能在晚上23点后,利用系统维护阶段一遍遍优化、测试。
经过近四五十天的努力,才让12306恢复正常运行。
但解决了系统问题并不代表一劳永逸,只要还有人买票,就会有新的问题出现。
2015年,为了区别真人和计算机、本人和黄牛,12306上线了著名的“图片验证码”。
据相关数据显示,这个“逆天”的验证码图片库里涵盖12个类别,有33万多个排列组合选项。
人们需要在各地方言中找到海南话,在一堆建筑中找中国名胜古迹,还要通晓古今中外各次元大咖。
一次就选对的成功率仅有8%,“好不容易通过了验证,票已经被抢完了。”
凭借如此“反人类的设计”,12306在此后多年一直被人诟病。
事实上,12306在功能更新上并不是一直处于被动地位。
围绕旅客购票这一行为,主动提升服务,一直是他们默默在做的改变。
比如官方“捡漏神器”——候补购票功能的诞生。
要知道,无论在哪款购票软件买票,最终都需要在铁路12306购票系统内排队。
能不能买到票取决于有没有票,而不是用了多少加速包,拉了几个人助力。
加价买票被坑骗的旅客不在少数,12306的候补功能,无疑给着急的人吃了一颗定心丸。
为了把兑现成功的机会拉到最高,12306甚至把候补购票的最晚截止时间由开车前6小时,调整为开车前的2小时。
如果出行太着急忘了带身份证,也可以在12306的APP上自助开具“临时身份证明”。
不用花时间跑窗口,更不用排队,在手机上简单操作过后,就可以顺利进站。
每人在一个自然月可申请3次电子临时乘车身份证明,每次申请成功有效期为24小时
针对特殊群体的出行,12306在APP中也提供“重点旅客预约”的选项。
老人出行不便可以提供轮椅,也可以帮忙送视障旅客进站乘车。
这些在细微之处的服务,是只有真正体验过的旅客,才能感知到的温度。
如今,12306在十几年不间断的吐槽和批评中,依然在迭代、更新。
12306到底是不是最牛的软件,或许并不重要。
重要的是,我们无需在车站窗口排起长龙,担忧着出行的不确定性。
所谓的“诗和远方”不再遥远,而是在手机屏幕上一触即达。
当人们出行的脚步变得更自由,生活的节奏也就变得更从容。
扫一扫关注槽值 更多有趣内容
情感八卦 槽值爆表 不吐不快
扫一扫关注槽值 更多有趣内容