被骂了十年的国产软件,却成了世界之最...

点击上方“Java基基”,选择“设为星标”

做积极的人,而不是积极废人!

每天 14:00 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:电脑报

ee1b4d932ae7860ae026da72419f3396.jpeg


要问现在最受用户吐槽的国产软件,可能是微信,尽管不断上线新功能,但大多被网友吐槽“没用”,并且在一次次的更新中变得更加臃肿,占用内存越来越多,导致用户频频抱怨手机空间不够用。

而要问在用户的吐槽声中越做越好的软件,那一定是 12306 平台。早些年间,12306 在运行中出现了很多瑕疵,比如复杂晦涩的交互界面、系统响应卡顿延迟、宕机不断等。人们为了省时省事,宁愿多花钱去使用各种抢票软件或找黄牛,都不愿在 12306 上购票。被骂了十年不吭一声,12306 最终咸鱼翻身做成世界之最

数据显示,12306 平台已成为世界上规模最大的铁路互联网售票系统,注册用户已达 6.8 亿,单日售票能力达 2000 万张以上。铁路 12306 App下载安装累计已达 17 亿多次,12306 网站(含手机 App)最高日访问量高达 2000 亿次,单日最高售票量 1541.3 万张,年度最高售票量达 35.7 亿张。

51820a98e95290de6ac362850ac07b5f.png

如今,12306 超越市场上各大抢票软件,成为抢票效率和成功率最高的平台。而时间回溯12306刚上线的那几年,别说抢票,很多人连网站都登不上去。

趁此机会,让我们回顾一下网络购票的发展历程,看看 12306 是否值得“世界第一”的称号。

12306 系统上线前,中国铁路曾经推出过 95105105 的订票热线,比起线下排长队购票方便了不少,但遇到春节这种节日,订票电话很难打通。

2000年,北京曾尝试搭建网络订票系统,上线了“首铁在线”。当时黄牛买票也得排队,大家对于网络购票的需求几乎没有,并且大部分人网速只有可怜的100k。即便如此,一个“五一”小长假,仍使得首铁在线的系统瘫痪掉。经过一系列抢修之后,首铁在线在“正常和瘫痪之间”坚持了8年。

8e0f9741bae9269caa09c94368193369.jpeg

2008年春运前夕,首铁在线宣布放弃网络订票业务,只提供部分信息查询服务。理由是:网站登录人员过多,造成服务器瘫痪。

此后,上海在2009年上线了一套网络购票系统,并且提供送票上门服务。遗憾的是,这套系统上线仅一天,就因为系统故障关闭升级,此后再无下文。

e051e2a37aaae2002c6c84c36007b9b8.jpeg

2010年,随着3G网络的普及,当时的铁道部宣布,中国要开始通过网络购票的方式进行售卖火车票。

同年1月30日,也就是当年春运的第一天,铁道部开放并试运营了 12306。而当时的 12306 并不具备网络购票的功能,只能查询列车时刻、票价、余票、代售点和正晚点等信息。

2011年6月1日,在民众对网络购票的极大需求与期盼中,12306网站正式上线。然而2012年春运,也就是12306面临的第一次大考,结果并未令人满意。

服务器几度崩溃,很多人进不了网页;好不容易进去了,要么就刷不出车次信息要么就点击不了购票按钮;甚至还有人出现了抢到票无法支付,或者支付后拿不到票的窘境。

值得一提的是,2011年也是淘宝“双11”上线之时。

有人疑惑,为什么双11的数据同样巨大,可淘宝虽然卡,却没有崩?甚至还有人吐槽12306购票系统就是大学生外包水平。言外之意,12306很简单,现在大家抢不到完全是技术不行、不肯投入。

其实这里 12306 被误解得有点深。曾有程序员提出“12306可能是现在世界上业务逻辑最复杂的系统之一”。其表示,12306 并发量很大,不像天猫双十一是短时间并发,12306 是一出票就是双十一。要知道,12306最多的时候,几亿人同时抢票,任何程序员面对一个每天上亿日活、百万级并发量的网站,可能头疼不已。

03970d6d00038cb3c144c47be9fc7bc3.jpeg

据了解,12306 除了线上订单以外,还要兼顾线下订单所形成的数据,包括一条线路各个站之间的最优售票计算,各个站点的余票量计算,业务非常复杂。

就拿余票查询这样一个看似简单的功能而言,其实是经过了技术攻克,才达到了如今的高效运行。

12306 技术部主任单杏芳曾表示,铁路余票计算是非常复杂的,因为我们一趟列车有多个停靠站,它是一个动态复杂计算的过程,相比简单的商品库存简单加减要复杂得多,所以如果计算慢,系统可能就会忙,就会堵。所以我们研发了分布式的内存计算的余票计算基数,让余票计算变得非常高效。

可见,12306 比淘宝双十一的技术挑战更大。

5aef0b048ac5de6099a7842100e204fa.png

12306建设初期体系架构示意图  图源Coder的技术之路

0750d157b04e840bd06842e54c8c9031.png

第一次优化后的12306体系架构  图源Coder的技术之路

db361b1bf1dedf63bb92b4548318625a.png

第二次优化后的12306体系架构  图源Coder的技术之路

当然了,程序员肯定是最了解12306系统为何这么复杂的,但对普通人来说根本不了解12306背后需要什么样的技术和投入,毕竟时常抢不到票也是事实。

而自第一次春运首秀后数年的春运期间,12306都会很稳定地告诉我们,想如愿抢到票不容易。

例如在2013年春运来临的前几日,12306在3天之内前后发出两次公告称,因硬件设备故障/机房空调系统故障,正组织抢修,暂停互联网售票服务。

37399766b4fa64c80b5a09e9e8224bf9.jpeg

2013年12月6日,12306进行了第一次改版,改版之后的12306增加了自动查询、自动提交订单、有票提醒等功能,但是此时的12306还不具备线上自主选座的功能。

在 12306 网页改版两天之后,12306 客户端正式开放下载,从此线上购票摆脱了电脑端的限制正式进入了移动端。

改版升级之后的 12306 也时不时会出现系统宕机与崩溃的情况,一直到 2014 年都没能得到好的解决。

终于在2015年,12306系统迎来了与阿里云的合作。这一年春运期间,阿里云将承担12306系统中75%的流量(车票查询业务)。用户的购票体验也提升不少。

和阿里云合作后的12306,尽管各项功能接近完善,可以提供购票、退票、余票查询、列车时刻表查询等服务。但此时的12306还要面临着一个巨大的挑战——黄牛。

随着火车票实名制的推行以及 12306 网上购票渠道的开通,已经很难在车站见到票贩子了。但黄牛也是与时俱进的,一些技术性黄牛竟然依靠自己编写的爬虫程序倒卖车票。

相较于普通黄牛,技术黄牛更加难以管控,12306 必须不断进行完善和数据维护。

2015年3月,12306 在其登录界面推出了选取图片验证码的方式,有效打击黄牛。此后还采取了一系列措施让买票系统更加公平公证,比如将购票、退票和改签时间由不晚于列车开车前2小时调整为30分钟等等。

d800ec0383430d69706fb18158d154de.jpeg

2017年,12306 开始支持微信支付,支付方式更加多样化。2018年,12306再次进行了改版升级。

2019年,候补购票功能上线。

59d92096a3e7d284dc038dacac2934d6.png

在 12306 软件登记购票信息并支付票款后,如有退票、余票,12306系统将自动为其购票,购票速度和成功率都将快于抢票软件。该功能的出现,真正遏制了利用插件盈利的第三方软件,直到此时人们才觉得,抢票也不过如此。

我们可以看到,在这十多年的时间里,背负着争议和批评的 12306,这些年一直围绕用户体验,在服务器和购票系统上不断优化、改版升级,UI改进、速度提升、接入各类服务、加入人性化功能,让旅客体验实现质的飞跃,用实力挽回了口碑,扛起了一个拥有十几亿人口国家的出行重任。

由此看来,世界数据之最,12306 来之不易,也实至名归。

值得注意的是,近日铁路12306 APP再次升级,又上新了多个实用功能。

①城市名和车站名分得更清楚

你有没有因为买错车站而错过火车的经历?官方针对这个痛点进行了升级。在最新版12306 APP首页输入目的地时,系统会自动生成车站列表了。

比如输入“重庆”,页面就会用蓝色的“城市”标签标明“重庆市”,在红色的“火车站”标签下显示重庆市内的所有火车站。

3ea89b93dd0c2e9f99a12a56a531b6a0.png

今后如果不能确定要买哪个站,输入城市名再选择即可,系统将车站名和城市名进行了标注和区分,当一个城市有多个火车站时,用 户购票再也不会犯迷糊,能清晰地区分东站、西站、南站、北站。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

②出行页面内容更丰富

2447bd83a45d02877fe7f1057b43c38b.png

购买火车票后,12306 APP首页将会出现本人行程的信息,包括车次、出发时间、始发站、终到站。点击详情后,旅客能看到内容更 加丰富的出行服务信息,比如列车信息、疫情防控信息、天气情况等。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

③积分可兑换午餐

现在不少人都注册了 12306 的铁路畅行常旅客会员,平时购票乘车时都可以获得积分,可直接用于兑换火车票。

近日12306 APP升级后,在乘车积分的基础上增加了“订餐积分”功能,支持旅客兑换订餐积分,兑换后的积分可以在餐饮业务中进行部分餐品的消费。

0a0baac3215c8c8b9c9f681b9959e768.jpeg

不过,订餐积分和乘车积分并不互通。目前订餐积分获得的渠道主要有三个:平安银行万里通积分兑换、中国移动积分兑换、绑定电子券进行领取。

100个订餐积分相当于1元现金,在使用时,输入车次、出发日期、座位号等信息,系统就会提示中途哪些站有供餐服务,用户选择心仪的餐厅和菜品下单,用积分支付即可。到了相应站点,乘务员就会自动把“免费的午餐”送到用户手中。

从升级服务器,到推出候补车票功能、打击网络黄牛、推出各实用功能等等,相信App会越做越好。

那么你觉得 12306 还有什么需要改进的地方吗?



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

6e6576986d7096b5187eaea5947ccb21.png

已在知识星球更新源码解析如下:

952d8cd706d78d6425b66ad4eb1a477b.jpeg

ec2d9de7352393610c258c6497c7997e.jpeg

7a7738da0f884e52bfc1515a22496e76.jpeg

7371b136e256ddb18105fb28e9dac554.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 6W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值