12306的购票系统与淘宝“双十一”的秒杀系统相比谁更强大?

春节刚过,抢票难成了大家春运期间非常难以忘怀的经历,而12306作为官方的购票软件,由于卡顿、闪退等多种问题一直饱受诟病,很多网友对比淘宝双十一秒杀时的流畅度,觉得是12306的系统不够强大,那么究竟是12306的技术更强大,还是淘宝的技术更强大?

首先,让题主知道一件事情,

2012年上线不久12306.cn日PV峰值高达10亿,与中国流量最大网站百度齐平, Alexa排名快速跃居全球110名。

2015年,阿里云向12306提供了技术协助,负责承接12306网站75%的余票查询流量。阿里云是阿里巴巴旗下的云计算公司。采用云计算后,12306可以做到根据访问量按需获取云计算资源,应对春节期间激增的服务请求。

其实在12306之前,阿里云已经拥有数十万家客户,包括中小企业、金融机构等各种客户类型。2014年开始,越来越多政府机构和大型民营企业开始进驻阿里云。这些政府机构便包括国家食药监总局、国家气象局、浙江水利局、贵州省政府。以浙江水利局为例,台风系统有着特殊时段访问量高、平时访问量一般的特征,采取云计算的弹性租赁方式可以大幅节省成本。

所以说从这个角度来看,还是阿里巴巴更厉害一些,毕竟阿里巴巴的团队是经历了很多次双十一的,早些年的双十一也是被人饱受诟病,只不过怎么多年下来,阿里巴巴在应对集中时刻大并发的业务上已经经验丰富,飞天5000集群、跨机房调度技术,阿里云技术已经全球领先,而这些技术和能力正在被积极推进开放。

在之前,有一则报道说早在2012年5月12306便曾邀请一组阿里精干技术人员组成的项目组赴京,一起“奋战30多个日日夜夜”,此后还曾派出技术人员赴阿里交流学习。2013年底,12306手机App推出也是一个重大里程碑,同期12306网站支持了支付宝支付。

技术强大的背后 那是人才的积累,而作为电商老大的阿里,多年来在这块儿积累了丰富的人才资源和经验,这些是国家铁路局并不具备的。无论是12306 还是阿里巴巴,只有合作共赢,那用户才能够享受到真正的便捷。

都不对,阿里巴巴的强大,毕竟阿里巴巴是淘宝的“爸爸”。

好了,玩笑开完了,说点认真的。

论技术来说,12306可能还真不是阿里巴巴的对手。

2015年,饱受诟病的国营火车票订票网站12306.cn已将大部分车票查询服务流量转移给了阿里巴巴旗下的云服务提供商“阿里云”。就在2015的春节前,阿里巴巴向12306提供技术帮助,为广大群众订车票回家提供有力的帮助。

12306第一年运行是在2011年,然而谁负责12306的呢?那就是中国铁路总公司负责管理。从12306第一年运行开始,每到春节,大家都被网站服务器宕机这个噩梦支配着,吃不好,睡不好,最后有部分人也无法赶在春节之前回家,闻者伤心,听者流泪。本来能回家的节日就这么那么一个了。有些农民工兄弟好几年没有回家,好不容易凑到日子回家一趟,买不到票,心酸又无奈。

那么为什么订不到票呢?原因比较复杂,其中比较主要的是:人太多;黄牛囤票;服务器承受不住如此大的流量。

  • 人太多,这个太好理解了。根据统计,2016年春运全国旅客发送量超29.1亿人次。诶,这个已经是全世界最大最大的短时间里的客流量了。歪果仁经常说这是“全世界最大规模人口迁徙”。

  • 黄牛党。黄牛党为了获取利润,丧心病狂地大量买入车票。善良老实的人,满心希望地规规矩矩地刷票,却没能买到。黄牛的存在,让车票更加稀缺。可恨!

  • 服务器承受不住如此大的流量。我们知道,如果想在网上买票,一定要登录网站,填写资料,确认订单、付款等等。我们说起来轻松,但是每一步,我们的电脑都需要访问网站所在的服务器,向服务器发送信息。服务器接受信息之后还需要经过处理,才能确定我们是否买到车票。

如果瞬间上亿的访问量,除了超大型的服务器之外,其他的服务器无法承受。承受不过来,只能宕机,死翘翘的。服务器无法处理信息,我们当然无法买票了。

那么从2015年开始,阿里巴巴就向12306提供技术帮助,12306也使用阿里的云技术,租用阿里巴巴的服务器,方便大家买票。加上政府与12306打击黄牛的力度越来越大。大家买票比以前轻松多了。

如果某位同学看见了,请转载给您的辅导员,或者您们有机会以后不再需要好像抢春运的车票一样选课了,不再需要选一次课点烂一只鼠标了。

12306可以说是真正意义上的国民应用,然而因为长期以来相对糟糕的界面设计,以及比较差的用户体验,一直备受吐槽,根本原因还是购票难的问题。但是作为一家优秀的互联网企业,阿里巴巴却搞定了双十一,在用户眼里形成了极佳的用户口碑,一度阿里云更是成为12306的官方技术支持,那么淘宝的技术就真的比12306更强大?当然,答案是否定的,就算是现在来看,也没有任何一家科技公司能够解决12306的难题,阿里巴巴当然也不能,12306的技术难度可能是世界上级别最高的技术高峰之一。

1. 首先来看看12306存在的诸多运营问题

举个简单的例子,为什么电子商务公司最具备云计算基因?难道仅仅是因为amazon作为云计算的开创者是一家电子商务公司的原因?主要原因就是因为类似于平常的并发体量与双十一具备极大的差距,那么双十一需要即大规模的硬件资源,平时就会有极大的闲置。而铁路资源跟这点有非常的类似,平时的客流量较少,但是到了节假日就会客流量暴增,但是铁路资源不可能因为节假日的存在进行大规模的增加铁路资源,最多只能进行一些微调,否则资源充足的条件下,平时就会造成极大的资源浪费。所以相对合理的资源搭配最终结果便是造成了节假日,尤其是年底春运的时候购票难的根本原因。

除此之外,虽然互联网购票因为减少了人为干预,极大的减少了黄牛党的存在,但是另一方面说,也是极大的方便了黄牛党的存在。并且各种抢票插件,尤其是早期的一些抢票软件,可以实现整车厢的车票购买,这其实是进一步加大了不公平性,尤其是对于那些互联网门槛相对较高的一些用户来说,其实买票变得更难。

2. 再来看看淘宝和12306的技术难点

  • 从一个简单的例子开始

首先要明白的是,举个简单的例子,好比说12306是100人挤着上一辆从北京到上海荷载80人的大客车,但是每个人要到的地点都不一样,中途很多人要下车,并且有的人要坐卧铺、有的人要站着、有的人要坐着,但是大家都想在一分钟甚至几秒钟内完成从买票到付款到取票到上车坐下始发的全过程。而天猫双十一是1000人抢着上可能1500辆车,这些人可能会比较哪辆车最便宜,哪辆车会到哪个地方,并且大家会观望很久,有的买票早就早上车早出发,有的要后买票后出发,有的会坐去郑州的车,有的要坐去济南的车,但是每辆车中间都没有直接关系。

所以淘宝的数量看似非常庞大,商品种类非常丰富,但本质上每个人都是自己买自己的,除非购买同一款物品会有库存上的影响,其实数据量相对分散,访问的是很多张表,表与表之间甚至没有直接关系,查询不同的表, 访问不同的数据,理论上做一定的数据缓存也是可以的。但是12306不一样,12306地球人访问的都是那么几张表,大家都挤着上同一辆车,数据量非常集中,问题的关键是这玩意儿你还不能用缓存,这就是数据上的区别,淘宝跟12306虽然表面上数据量更大,其实处理难度更低。

  • 其次再来说一说12306技术的难点

还是那句话,淘宝的数据虽然量大,但是其实本质上相对分散,也能够做数据缓存,然后每一个商品其实就对应一种结果,完成购买以后只会对当前数据量进行改变。但是12306不一样,首先是数据量同样非常大,难度最大的在于,同一个座位可能存在不同的结果,比如从A到B总共N站。但是其实假设是淘宝,永远只关心两种最终状态,但是12306不一样,同一个座位可能对应着很多种不同的情况,中间可能被多个人乘坐,那么理论上其实有N!种可能性,一旦每一个座位状态发生改变,都必须实时更新数据,不能出现数据缓存,刷新或者重新查询,数据都将发生改变,因此天猫双十一的复杂度远比不了12306购票的复杂度。下图给出的仅仅是2016-2017春节的PV值,如果把12306看作是一个单品电商网站,那么这款产品已经爆款。

  • 再来看看天猫的以后可能存在的技术难点

再来看看阿里双十一的技术难点,至于在前面讨论到的,这里不再赘述,在2017年双十一,支付宝的峰值是25.6万笔/秒,这个跟12306的峰值水平相当甚至更高,而数据库的处理峰值是4200万/秒,可以说目前的高并发能达到这个水平的科技公司不多,真正电子商务里面也就只有阿里巴巴,但如前面所说,这依然不是难点,那么对于阿里来说,未来可能遇到更大的挑战在哪里,那就是在于数据的多维度的问题。

比如优惠券、比如折扣,如果再给折扣做个限制、给优惠券设置一个漫看,比如我只给100件衣服的80件衣服做折扣,那么这个问题就会稍微复杂点,但是淘宝天猫有个好处,买折扣商品跟买回家过年的火车票自然不是一个道理,一个是可以随时准备购买,一个是随时准备抢买。异步处理是最有效的方法,毕竟本质上用户需要先下单、添加购物车,然后再才是支付,这一套流程完全能更好的异步处理。但即使是这样,在双十一当天,双十一来临的当天晚上,也就是0点时刻到大概半小时之内,系统还是出现了较大规模的数据延迟,很多人没办法付款,甚至没办法下单。

3. 结论:阿里双十一技术难度跟12306春运技术难度还是有比较大的差距

交易系统本质上有几种类型,分别是定品、定量、以及定件系统,难度层级逐级上升,淘宝就是定品系统,而12306属于最难的定件系统。可能性更多,成交时间更短,排队几率更大,还不能做数据缓存,一旦有相应请求发生,必须更新全线路的数据,因此阿里和12306本质上还不是一个级别的技术当量。

当年12306曾公开招标,解决12306的技术难题,最终以IBM在内的科技公司全都主动选择放弃,没有企业敢接下这个活,最终阿里巴巴帮助12306托管了一部分查询业务,给阿里云提出了异步处理的建议,并且对12306进行了排队机制的支援,可以说现在的12306还能有如此稳定的表现,阿里巴巴也有一部分功劳。

所以,12306依然是全世界最大的技术难题之一,阿里巴巴虽然对12306做出了一定的贡献,但是核心技术依然还是依托于12306强大的技术实力,阿里巴巴搞不定12306,至少目前还远远不能!12306在发展过程中,一方面除了要解决极其有限时间内的技术上的高并发、高负载,还要保证资源分配的公平性,要尽可能限制更多的恶意抢票插件、车票黄牛等等,这对于12306都是极大的挑战,至少就目前的技术来说,12306做得虽然不算完美,但是已经是目前技术壁垒下最佳解决办法了。

2021-12-19

2021-12-19