被骂了十年的国产软件,却成了世界之最...没想到架构这么牛
Posted xhmj12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了被骂了十年的国产软件,却成了世界之最...没想到架构这么牛相关的知识,希望对你有一定的参考价值。
推荐阅读:从阿里跳槽来的工程师,写个try catch的方式都这么优雅!
要问现在最受用户吐槽的国产软件,可能是微信,尽管不断上线新功能,但大多被网友吐槽“没用”,并且在一次次的更新中变得更加臃肿,占用内存越来越多,导致用户频频抱怨手机空间不够用。
而要问在用户的吐槽声中越做越好的软件,那一定是 12306 平台。早些年间,12306 在运行中出现了很多瑕疵,比如复杂晦涩的交互界面、系统响应卡顿延迟、宕机不断等。人们为了省时省事,宁愿多花钱去使用各种抢票软件或找黄牛,都不愿在 12306 上购票。被骂了十年不吭一声,12306 最终咸鱼翻身做成世界之最。
数据显示,12306 平台已成为世界上规模最大的铁路互联网售票系统,注册用户已达 6.8 亿,单日售票能力达 2000 万张以上。铁路 12306 App下载安装累计已达 17 亿多次,12306 网站(含手机 App)最高日访问量高达 2000 亿次,单日最高售票量 1541.3 万张,年度最高售票量达 35.7 亿张。
如今,12306 超越市场上各大抢票软件,成为抢票效率和成功率最高的平台。而时间回溯12306刚上线的那几年,别说抢票,很多人连网站都登不上去。
趁此机会,让我们回顾一下网络购票的发展历程,看看 12306 是否值得“世界第一”的称号。
12306 系统上线前,中国铁路曾经推出过 95105105 的订票热线,比起线下排长队购票方便了不少,但遇到春节这种节日,订票电话很难打通。
2000年,北京曾尝试搭建网络订票系统,上线了“首铁在线”。当时黄牛买票也得排队,大家对于网络购票的需求几乎没有,并且大部分人网速只有可怜的100k。即便如此,一个“五一”小长假,仍使得首铁在线的系统瘫痪掉。经过一系列抢修之后,首铁在线在“正常和瘫痪之间”坚持了8年。
2008年春运前夕,首铁在线宣布放弃网络订票业务,只提供部分信息查询服务。理由是:网站登录人员过多,造成服务器瘫痪。
此后,上海在2009年上线了一套网络购票系统,并且提供送票上门服务。遗憾的是,这套系统上线仅一天,就因为系统故障关闭升级,此后再无下文。
2010年,随着3G网络的普及,当时的铁道部宣布,中国要开始通过网络购票的方式进行售卖火车票。
同年1月30日,也就是当年春运的第一天,铁道部开放并试运营了 12306。而当时的 12306 并不具备网络购票的功能,只能查询列车时刻、票价、余票、代售点和正晚点等信息。
2011年6月1日,在民众对网络购票的极大需求与期盼中,12306网站正式上线。然而2012年春运,也就是12306面临的第一次大考,结果并未令人满意。
服务器几度崩溃,很多人进不了网页;好不容易进去了,要么就刷不出车次信息要么就点击不了购票按钮;甚至还有人出现了抢到票无法支付,或者支付后拿不到票的窘境。
值得一提的是,2011年也是淘宝“双11”上线之时。
有人疑惑,为什么双11的数据同样巨大,可淘宝虽然卡,却没有崩?甚至还有人吐槽12306购票系统就是大学生外包水平。言外之意,12306很简单,现在大家抢不到完全是技术不行、不肯投入。
其实这里 12306 被误解得有点深。曾有程序员提出“12306可能是现在世界上业务逻辑最复杂的系统之一”。其表示,12306 并发量很大,不像天猫双十一是短时间并发,12306 是一出票就是双十一。要知道,12306最多的时候,几亿人同时抢票,任何程序员面对一个每天上亿日活、百万级并发量的网站,可能头疼不已。
据了解,12306 除了线上订单以外,还要兼顾线下订单所形成的数据,包括一条线路各个站之间的最优售票计算,各个站点的余票量计算,业务非常复杂。
就拿余票查询这样一个看似简单的功能而言,其实是经过了技术攻克,才达到了如今的高效运行。
12306 技术部主任单杏芳曾表示,铁路余票计算是非常复杂的,因为我们一趟列车有多个停靠站,它是一个动态复杂计算的过程,相比简单的商品库存简单加减要复杂得多,所以如果计算慢,系统可能就会忙,就会堵。所以我们研发了分布式的内存计算的余票计算基数,让余票计算变得非常高效。
可见,12306 比淘宝双十一的技术挑战更大。
12306建设初期体系架构示意图 图源Coder的技术之路
第一次优化后的12306体系架构 图源Coder的技术之路
第二次优化后的12306体系架构 图源Coder的技术之路
当然了,程序员肯定是最了解12306系统为何这么复杂的,但对普通人来说根本不了解12306背后需要什么样的技术和投入,毕竟时常抢不到票也是事实。
而自第一次春运首秀后数年的春运期间,12306都会很稳定地告诉我们,想如愿抢到票不容易。
例如在2013年春运来临的前几日,12306在3天之内前后发出两次公告称,因硬件设备故障/机房空调系统故障,正组织抢修,暂停互联网售票服务。
2013年12月6日,12306进行了第一次改版,改版之后的12306增加了自动查询、自动提交订单、有票提醒等功能,但是此时的12306还不具备线上自主选座的功能。另外,搜索公众号互联网架构师后台回复“2T”,获取一份惊喜礼包。
在 12306 网页改版两天之后,12306 客户端正式开放下载,从此线上购票摆脱了电脑端的限制正式进入了移动端。
改版升级之后的 12306 也时不时会出现系统宕机与崩溃的情况,一直到 2014 年都没能得到好的解决。
终于在2015年,12306系统迎来了与阿里云的合作。这一年春运期间,阿里云将承担12306系统中75%的流量(车票查询业务)。用户的购票体验也提升不少。
和阿里云合作后的12306,尽管各项功能接近完善,可以提供购票、退票、余票查询、列车时刻表查询等服务。但此时的12306还要面临着一个巨大的挑战——黄牛。
随着火车票实名制的推行以及 12306 网上购票渠道的开通,已经很难在车站见到票贩子了。但黄牛也是与时俱进的,一些技术性黄牛竟然依靠自己编写的爬虫程序倒卖车票。
相较于普通黄牛,技术黄牛更加难以管控,12306 必须不断进行完善和数据维护。
2015年3月,12306 在其登录界面推出了选取图片验证码的方式,有效打击黄牛。此后还采取了一系列措施让买票系统更加公平公证,比如将购票、退票和改签时间由不晚于列车开车前2小时调整为30分钟等等。
2017年,12306 开始支持微信支付,支付方式更加多样化。2018年,12306再次进行了改版升级。 另外,搜索公众号互联网架构师后台回复“9”,获取一份惊喜礼包。
2019年,候补购票功能上线。
在 12306 软件登记购票信息并支付票款后,如有退票、余票,12306系统将自动为其购票,购票速度和成功率都将快于抢票软件。该功能的出现,真正遏制了利用插件盈利的第三方软件,直到此时人们才觉得,抢票也不过如此。
我们可以看到,在这十多年的时间里,背负着争议和批评的 12306,这些年一直围绕用户体验,在服务器和购票系统上不断优化、改版升级,UI改进、速度提升、接入各类服务、加入人性化功能,让旅客体验实现质的飞跃,用实力挽回了口碑,扛起了一个拥有十几亿人口国家的出行重任。
由此看来,世界数据之最,12306 来之不易,也实至名归。
值得注意的是,近日铁路12306 APP再次升级,又上新了多个实用功能。
①城市名和车站名分得更清楚
你有没有因为买错车站而错过火车的经历?官方针对这个痛点进行了升级。在最新版12306 APP首页输入目的地时,系统会自动生成车站列表了。
比如输入“重庆”,页面就会用蓝色的“城市”标签标明“重庆市”,在红色的“火车站”标签下显示重庆市内的所有火车站。
今后如果不能确定要买哪个站,输入城市名再选择即可,系统将车站名和城市名进行了标注和区分,当一个城市有多个火车站时,用 户购票再也不会犯迷糊,能清晰地区分东站、西站、南站、北站。
②出行页面内容更丰富
购买火车票后,12306 APP首页将会出现本人行程的信息,包括车次、出发时间、始发站、终到站。点击详情后,旅客能看到内容更 加丰富的出行服务信息,比如列车信息、疫情防控信息、天气情况等。
③积分可兑换午餐
现在不少人都注册了 12306 的铁路畅行常旅客会员,平时购票乘车时都可以获得积分,可直接用于兑换火车票。
近日12306 APP升级后,在乘车积分的基础上增加了“订餐积分”功能,支持旅客兑换订餐积分,兑换后的积分可以在餐饮业务中进行部分餐品的消费。
不过,订餐积分和乘车积分并不互通。目前订餐积分获得的渠道主要有三个:平安银行万里通积分兑换、中国移动积分兑换、绑定电子券进行领取。
100个订餐积分相当于1元现金,在使用时,输入车次、出发日期、座位号等信息,系统就会提示中途哪些站有供餐服务,用户选择心仪的餐厅和菜品下单,用积分支付即可。到了相应站点,乘务员就会自动把“免费的午餐”送到用户手中。
从升级服务器,到推出候补车票功能、打击网络黄牛、推出各实用功能等等,相信App会越做越好。那么你觉得 12306 还有什么需要改进的地方吗?
以上是关于被骂了十年的国产软件,却成了世界之最...没想到架构这么牛的主要内容,如果未能解决你的问题,请参考以下文章