12306的实时票务系统有多厉害?

天马行空的夜晚


今年,春运全国铁路预计发送旅客3.56亿人次,

这么多人,什么概念?

相当于半个欧洲地区的人都离家出走了,

这些人手拉手能够绕地球15圈 。

然而,

铁路部门12306总共安排4000多次旅客列车。

如果把压力全推给12306,那就太错怪它了。

因为12306遇到的难题是世界级的。

全欧洲一年的火车票购买量,也抵不过春运这一个月!

而国外没有春运这样的场景,自然没有可以解决的办法。

只有依靠国人自己的技术了。

这个时候,12306找来了马云和他下面的云计算来做帮手。

说是找,也不完全准确,最开始,是马云希望解决农民工回家的问题,所以要求阿里巴巴下面年轻的工程师,跟12306的工程师一起解决IT技术架构的问题。

在针对系统架构做了优化之后,12306还要解决一到春运就暴增成千上万倍的网站流量。

其实,12306是世界上规模最大的实时交易系统之一,在春运的时候,12306日均有297亿次的访问量,高流量和高并发一直是需要解决的关键问题。

其实,解决这一问题很大部分原因取决于服务器。

不就是个服务器么?想买多少买多少!

NO!

服务器不是你想买,想买就能买。

如果按照国庆、春节这种高峰期的时候来配置服务器,

到了平时时间段,这些资源就会被浪费,使用率甚至不到10%。

但如果按照平时的需求来配置服务器,

那到了春节的时候,那就远远不够用了……

这个时候,使用云计算则成为最有效的解决办法!

12306的系统还是那一套,

只是使用云计算帮忙动态分配计算资源,

就像开水龙头一样,

需要的时候呢多租点,

不需要的时候呢就少租点,由12306已有的服务器支撑。

现在,12306就已经把大部分的车票查询业务放到了阿里云计算平台上。

你可能会问,车票查询又不涉及到结算系统,哪有那么大的压力?

其实,在整个12306系统架构中,请求次数最集中的一定是余票查询系统,流量占到整个网站的90%。

我们在买票过程中,都会多次提交查询请求,更不要说大量刷票软件问世后,增加的工作负载,这一切都让余票查询系统成为整个系统的‘短板’。

12306选择引入阿里云:一方面,可以让12306在高流量时期提供充足的空间,避免了因为高并发的流量冲击导致的宕机;另一方面,在请求次数减少时,可以缩减云服务器资源,这样就节省了成本开支。

而解决了这个瓶颈,阿里云就协助12306朝着更快、更强、更流畅的小目标又前进了一小步!

在国外,他们没有双11,没有春运这种好几亿人同时秒杀、购票的场景,就不可能有这样的技术,解决这类问题。

所以,12306跟阿里云联手解决问题,虽说只是前进了一小步,却是中国难题逼出了世界级的技术,是中国科技创新的一大步!

作为一个政府的线上平台,12306则可能是中国民用政府系统里面技术最成熟的平台了!

希望我的解答能够对你有所帮助,谢谢。



优雅的小小叶子


怎么不复杂?比如北京到上海某列车有一千个座位,中途会路过十个站,比如石家庄,郑州,徐州,蚌埠,南京等等。如果有个人买了一张北京到上海的票,那么就还剩999个座位也就是999张票对不对,同理,石家庄到上海就只剩999张了。但要考虑中途上车并且中途下车的,比如另一个人从石家庄上车然后从徐州下车,这时候北京到上海还剩998张但是南京到上海却依然还有999张,

比如北京到石家庄1000张,北京到郑州1000,北京到徐州1000张。接下来,石家庄到郑州1000,石家庄到徐州1000,石家庄到南京1000,等等几十种组合。每种组合1000张,只要其中一个组合的票少一张,会影响或者不影响其他组合的票数。

这种还只能算简单的设想,要是全国人民一下子这么进来买,那就更复杂了,12306其实相当于每时每刻都在承受着比淘宝双11更大量的冲击,服务器适中处于负荷状态。

2018年时12306曾经公开过相关的数据:日均PV达到556.7亿次,峰值时段PV达到813.4亿次,每小时最高点击量59.3亿次,平均每秒164.8万次。2019年春运时这个数据就更高了,高峰时段点击量1400亿次,高峰日点击量达2000亿次。

这种海量的数据吞吐,全国范围内应该是没有网站或者APP能达到,况且在这些请求次数的背后还得计算出来,那么这种情况下,票池怎么维护?等等各种问题。

从列车运行的时刻开始,一辆列车晚点,调度系统就开始出现调度和预测,凡是经过该列车轨道的相应列车全部晚点等候,或者先行不等候,同时列车与列车之间的距离,时间,必须达到一定标准,否则就会出现相撞事故,全国的动车组和线路图多到惊人,首先就要将这些数据进行统一归纳进行整理,路线与路线交错,列车与列车之间交叉运行,列车每到一个站必须将数据回传,就算晚点了,还得针对每一辆晚点的列车计算出晚点时间和预计到达时间,这些全部是动态计算出来的数据。抛开这些不说,春运期间的车票预售能达到未来三个月,期间可能有各种各样的突发性情况,我想问,你怎么保证在春运的预定时间里保证列车准确到达目的地的时间精度?数以万计的铁路如何维护,列车运行时相应的轨道如何精确的自动变道?如果列车又晚点了,那么后续列车的轨道又如何动态变道?光是处理列车与轨道之间的协调性就是一个很大的问题,设计的算法要能应对各种突发事件,你能设计出这样的调度算法吗?12306的系统比你想象的复杂的多,线路与线路之间的关系,列车与列车之间的关系,线路与列车之间的关系,你理得清吗?别以为12306就是一个售票系统,整个系统契合在一起就是一个天大的工程。天真的以为就是几句增删改查,多线程,分布式事务,分布式锁这么简单。

车辆调度后才能进行售票,如果车辆晚点,未来预售的票全部往后延迟,否则就会出现你买了票去坐车,大厅却告诉你,由于车辆晚点,导致你的列车重排到了明天,12306铁路网的几大系统无缝集成,内部系统及其复杂,单单一个预售未来三个月的功能就要处理N多个问题,如果各个系统不能协调工作,你上哪买票?买到票了车都重排了你上哪坐?全国各地的站点数以百万,铁路网数以万计,12306本就不是一个单单的售票系统,它是一个庞大的系统暴露给外部的接口,集群负载均衡,高并发,锁只不过是保证售票系统正常运行的一种手段。而且这种手段的解决方案成熟,成本低廉。别以为12306是个售票系统,内部的算法和处理逻辑比想象的不知道要多高。

另外,引用一些回复过我的网友的话:"哈哈 做为曾经的同程抢票数据供应商 可以很负责任的告诉你 我们五千多台服务器同时对12306发下单,在我了解中 我们这样的供应商差不多一千多家 还有各种多线程抢票软件 [泪奔] 12306:我太难了"。


晓缔


不管系统多厉害,我只想买张票回家去过年,不是打开就没票


一生如烟


以前没有多么厉害,也是经过不断迭代开发才走到了今天。那么,它是怎么成为今天这样一个超级系统的呢?

从本质上讲,12306网站是一个票务电子商务网站。

2010年春节,12306官网正式上线运行,平台上线后,因为访问数据量过大,造成大量的用户无法购买,从普通的网民到程序员都狂喷12306的系统垃圾。

12306票务系统一期的开发费用合计3个亿(含硬件),这套系统需要结合铁道部信息数据库,结合电话售票、窗口售票等相关的数据,所以,12306不是一个简单的在线交易系统,而是一个全国最大的大宗物资货运系统。

12306的技术确实非常难解决,利用现有的分布式数据库、缓存、负载均衡技术,已经不能满足需求。

12306在春运的时候,日均有297亿次访问量。天量的火车票查询是影响12306性能的重要原因之一,大概占了90%以上的访问流量。更棘手的是:峰谷的查询有天壤之别,几乎没有办法在成本和并发能力之间做一个好的平衡。

2015年阿里云与12306进行合作,免费给12306提供技术支持,把12306网站的查询访问放在了阿里云上。

一般而言,查询是多数售票系统访问量最大的部分,它的请求次数一般占到整个网站的85%以上。交易相关的过程中,都会多次提交查询请求,这让余票查询系统成为整个系统的压力集中地。

所以,需要把余票查询模块和12306现有系统做分离,让其具备独立部署的能力;在云上独立部署一套余票查询系统,这样子12306和云上都有了一套余票查询系统,调度更为灵活。

经过技术改造的12306系统,年售票量已超过35亿张,是世界上规模最大的实时票务交易系统。平均每日发售车票达937万张,最高日售车票1135.7万张,高峰时每秒售票量达700张,已占到了总销售票量的80%。 高峰日的网络页面浏览量超过1500亿次,相当于全中国人每人每天访问了票务页面100多次。

如今的12306已成为中国最牛的电商网站,能让上亿人每天盯着网站使劲刷,就为了买到票,很多不惜花钱买软件刷,除了12306,基本也没谁了。淘宝、京东、亚马逊直接秒杀!




石家庄陀螺科技


我是一名铁路客运人员,干过多年售票工作,你们根本不了解铁路系统的复杂性,铁路系统作为国家大动脉,无论从经济还是政治上都要互相协调发展,当年铁路招标,包括阿里在内多少公司都不敢也无法接这个活,是我们铁路工程师们一点一点在全国人民的骂声中日以继日建立起来的,每天我们都及时上报工作情况,梳理总结问题,才不停的更新系统,年复一年,日复一日的完善和流畅,岂是你们这般臆测乱评的,没有他们的付出,换不来现今的发达,如果都如你们所说阿里如此厉害,世界上比阿里有实力的大公司多了去,全世界建立如12306这样的网站会多如牛毛。再补充一下,12306网站售出的车票即是一件如淘宝一样的商品,同时也是一个生产机器,搜出一件商品后会有n次方的不同车票产生,计算量很大,铁路也有些外包工作实践证明不是专业对口出来的产品都很失败。你们不懂得。


wuli焯焯


对于12306网络,购票人身份证的确认,不能超越公安部,另搞一套法规的!

公民身份证是由公安部门统一制作颁发的。具有不可替代权威性的!但是在12306购票时,还要再次“认证”一次。

有的身份证输入后,竟然不允许通过12306购票!还要到售票窗口去”认证“后才能买到车票。

自家的一个亲戚,开始运用12306购票没通过,只好跑到车站售票窗口买票。乘坐动车外出旅游一圈回来后,再次应用12306网络购票时,身份证号码还是不被认可!

问题到底出在哪?


江千里2014


如果给淘宝做。,会更好的!


鲁宾孙印象


你以为是动态的,其实不然

比如北京到三亚的火车,开始放票只放全程票,然后再放大站票,小站都是固定的张数,不是实时调整各个路段的。虽然很厉害,但是没有大家想象的那么厉害。


差生加油站


当然厉害了,阿里云宕机,12306直接挂了,厉害得很


成都海棠十万株


能同时能那满足13亿的出行需求,你说有多牛皮


分享到:


相關文章: