耗费3亿资金打造的12306,界面简陋,为何是中国技术难度最高软件

在中国,技术难度最高的软件,大家知道是什么吗?答案是12306,研发者单杏花凭借研发中国铁路客票发售和预定系统,斩获了得国家科技进步一等奖。

国家对其的评价是“她曾带领团队攻克了12306系统一系列技术难题,使系统处于国际领先水平”。

还记得12306刚出来的时候,一听说12306 这个软件花费了3个亿,很多人都在质疑,这个软件界面如此简陋,还经常崩溃,为什么要花费3个亿。

需要指出的是,12306属于整个铁路客票发售与预订系统的前端,我们在上面购票,最终接入到售票系统。但是它也是整个系统中技术难度最高的一块。

12306的技术难度究竟在哪儿

12306 平台高峰日页面浏览量已经超过 1 500 亿次,最高日发售车票超过 1 200 万张,已经占到总售票量的 80% 以上。所以这样这也就意味着涉及海量事务高速处理。

在售票高峰时段,铁路客票发售与预订系统的压力和负载巨大,来自各方的业务流量对系统的压力等同于大型的 DDoS 攻击,同时,来自市场的各种第三方软件的反复刷票行为,更极大的增加了原本就庞大的业务流量。对于12306的可用性和安全性是巨大的考验和威胁,还要具备极强的风险防御能力。

它是定品、定量、定件三种电子商务系统中最难的定件系统,因为涉及人口太过于庞大,全球有真正实践经验的人很少,很多技术人员都不一定知道,这些年,一个有趣的坊间消息被多家媒体在报道中引用,2012年5月铁道部邀请阿里巴巴等多家互联网公司技术骨干,作为顾问向12306项目提建议,其中部分已被采纳。

不过,阿里巴巴集团公关总监杨磊却否认有阿里团队技术支援的事情。中国向全世界招标,最终,美国“IBM成熟解决方案”和清华大学Web与软件技术研究中心掌握自主知识产权的分布式解决方案入围,但是最终都无法完成。

研究人员都认为,12306的问题不只是带宽和硬件,更大问题在于网站系统架构、逻辑算法、库存同步、数据缓存机制、内外网数据交换等方面,,“让几千万甚至上亿的人在同时登录同时抢票的这种业务模式是变态中的变态”。

需要指出,12306和普通的电商平台有着本质的区别,12306除了线上订单以外,还要兼顾线下订单所形成的数据,包括一条线路各个站之间的最优售票计算,各个站点的余票量计算,\服务非常复杂,而且其日常活跃用户较大,每天都极不稳定,不像双11-样有一个稳定的目标,可以针对性的进行扩容,或者说增加资源来美平衡流量,达到稳定提供服务的效果。

而火车票售卖系统就没有这样稳定的客户需求,每天的客户流量也无法确定,自然无法制定针对性生的扩容方案,而且一些用户在买火车票时会进行多次查询,这无形中也会增加其网站的承受能力,高 并发义再加上复杂的业务,难度已经经远远超过电商购物场景。国内电商平台都只是定品系统,只有12306和股票系统属于定件系统,也是最难做的系统。

说得详细一些,大家可能以为12306随便搜索一下,几趟车就显示出来了,但这背后的计算是超级复杂的;它得根据余票、起止站、身份信息等寻找合适车次,毕竟全国所有车次都得知道,而且还要与各车站售票系统连接,以免出现因为数据时差问题,导致买到一张早已售出的车票。

12306还要在15分钟内完成交易,并且未售出的票,要尽快回到系统余票库,大家要知道,在同一时间内全国起码有百万人同时在购票,12306要实时调动数据,以防止购票人买到相同的票,除此之外,还需要计算卖票之后如何分配下一段区间,以及 线上购票和线下协调相的问题,也就是说线上出了一张票,线下售票系统也要能够做到实时更新;

img
img

这是在有上亿人同时点开12306(春运)查数据、预防黑客、拦截恶意刷票软件、每年多次调图、有新线加入的基础上的实现的

技术难度太大,国家自己研发12306

没有办法,国家只能自己研发,这个时候,单杏花接手了这个任务,采用集中与分布相结合的客户/服务器体系结构,但基于席位全部集中到路局 中心和支持车站取消服务器两个关键技术,系统由 以往的二级或二级半变更为两级或二级的体系结构。

由铁路中心、地区数据中心和所辖车站网络系统组 成。客票系统网络采用分层拓扑结构,划分为3层: 核心层、汇聚层和接入层,核心层涵盖了铁道中心和所有的地区中心节 点,采用部分网状网结构;汇聚层涵盖了地区中心 至下属部分联网车站的网络、地区中心至汇聚点的 网络和连成环网的车站至地区中心的网络,采用星 塑和环塑相结合的网络结构;接入层是用于接入地 区中心下属部分车站通道的网络,采用星形和环型相结合的网络结构。

除此之外,整个系统还必须要具备客流预测功能,我国幅员辽阔 、地广人多, 铁路网纵横交错,铁路运营情况复杂, 市场影响因素较多, 客流预测工作难度较大。

客流预测是铁路路网规划 、线路及场站设计 、 铁路运营等工作的重要基础 。客流预测研究领域有 许多分支和分类, 通常按预测对象的不同, 将铁路 客流预测划分为区域客流预测 、线路客流预测和列车客流预测。

总结

从这你就明白,整个系统难度究竟有多高了,也因为整个客票系统需要引入云计算技术,构建支撑超大规模并发交易、海量数据存储、灵活扩展、安全可靠高效的综合信息系统。而中国铁路选择是阿里的阿里云,来存放这些海量数据,所以阿里提供的是一个高可靠性、高性能的仓库。

做一件大好事,除以14亿就是很小; 做一件小坏事,乘以14亿就很大, 如果发生一例买票出问题情况,那发生的连带效应,是难以估计的。这也是为什么对12306的要求这么高的原因。

开发者Club 小程序 扫码打开 开发者Club 微信小程序
开发者Club 微信公众号 扫码关注 开发者Club 微信公众号