为什么支付宝一天成交额超一千亿网络和系统都不出问题,而12306购票系统却不行?

为什么支付宝一天成交额超一千亿网络和系统都不出问题,而12306购票系统却不行?

  • 回答数

    7

  • 浏览数

    3,700

7个回答 默认排序
  • 默认排序
  • 按时间排序

只是用支付宝和12306比较,其实是不恰当的。12306的逻辑复杂程度远远高于支付宝,所以我们先换一个思维吧,用双11的天猫和12306做比较吧。

2017年的双11,天猫交易量达到了1682亿元,并且也没有出现问题。但是,12306没到春运,就连接不通畅,是什么原因呢?

这就需要从两个系统卖的东西开始说起了。

我们都知道,天猫卖的是实体的商品,这些商品(SKU)都是有库存量的,也就是下图所示的这个内容。


用户每买一个商品,这个库存就相应的减少1,到减少到0的时候,库存就没了,后面的人也就买不到了。

这个是一个非常简单的逻辑,其中的核心,就是SKU(最小库存单元),对于天猫来说,SKU也就是一件商品。

天猫2016年的时候,统计自己拥有940万商家,超10亿件商品,数量是非常庞大的。但是每一件这样的商品的库存都是可以统计出来的,而且任何一个商品销售的时候,并不会影响到其他的商品。

商品量大,我就多增加硬件来存储这些商品就行了,所以技术上的难度并不是特别大。


但是12306不一样,我去查了一下中国的铁路运行情况。

根据2017年初的数据,中国列车车次一共有3500余对,铁路站点2000多个。

也就是说,每天,会有7000余次的列车在中国的铁路上行为,途经这2000多个点。

对于任何电商网站来说,SKU都是核心,那12306也算是电商网站,他的商品是什么呢?就是火车票,火车票对应的是什么呢?火车上的座位或者站位。

那SKU就是座位了。

对于天猫来说,商品卖一个少一个。

对12306来说,一列火车上的座位,卖一个他不一定少一个。因为我一列火车可能途经20个站点,一个人可能始发站上车,第三站下车,那这个SKU在1-3站之间被卖掉了,但是第4站的时候,它又回来了。我还可以继续卖。

但是也可能一个人直接买了始发站到终点站,我这个SKU就完全卖掉了,回不来了。

用户买的行为,决定着我SKU的剩余情况,而用户买的行为是一个不可控的行为。

如果在没有控制策略的情况下,就意味着,SKU是随时发生着变化的。

我们来简单算一笔账。

一列火车途经20个点,车上有5000个座位,那他理论最小库存就是5000(一个座位1张票,始发—终点),最大库存是95000(所有人都只坐1站)

但是对于用户来说,他只是关心他那一站作为起点的时候,剩余的票的数量,这样的话,我们就必须计算,火车行进到他所在站的时候,车票的剩余情况(包括未购买的和要下车的),这样,每有一张火车票销售出去,计算机就需要执行复杂的运算,来重新的定义SKU和库存量。

中国有超过10亿人在春运的时候会去12306抢票,7000余次的列车,这个运算的复杂程度是非比寻常的。

可以说,现在中国的互联网中,暂时还没有能够比12306还复杂的运算场景了。

我们假设,买一张票需要运算1秒钟,有100台服务器同时工作,也就是1秒可以买100张票。一天可以处理多少张票呢?8,640,000(864万张票),我相信,春运开始的第一天,中国至少有1亿人回去12306抢票吧,如果我们真的使用这种算法,那就意味着有9000多万人,可能连抢票页面张什么都看不到。

但实际上是这样么?

并不是的,12306是设置了放票的节点,每个节点进行放票,也就是说,12306会按照以往的数据经验,对车票进行预演算,在不同的线路之间按照一定比例,先将票的库存计算出来。然后进行贩卖。

在下一个节点的时候,会再次按照这个规则,对车票的余量进行统计和计算,保证在每个节点时,各个站点的票都是有的,而且票与票之间的销售不会相互干扰,这样就可以减少在销售期间的运算次数的减少,提高效率。

如此说来,在节点的间隔时间内,12306的下单复杂度和天猫是一样的了,为什么春运时候,它还是要会打不开页面,没有响应呢?

我们就可以看到12306和天猫另一个不同的地方了。

12306是实名制的,一人一票,但是天猫可以随便买,所以,12306在下单前后有比较多的身份验证,但是天猫并不需要,所以,12306的单个订单的处理复杂度还是高于天猫的。

而且,全世界没有任何一个系统,在一个时间节点的时候,会涌进来好几亿人。12306能安安全全的票卖出去,我觉得已经很强大了。

取消 评论

因为确实不是一个量级的。

专业技术层面,前面有很多朋友已经讲得比较透彻了。

但是一些不懂技术的同学,读起来或许会有点费劲。

我来用通俗一点的方法解释一下。


支付宝的运算,相当于加减法,数额有大有小,频次极高,但是终究是加减法,计算机运算能力跟得上的话,不易出错。

至于12306么……

大家在高中时候,大概都学过概率论吧?对!就是那个一个盒子里9个红球8个白球,问连续五次摸到白球的概率是多少?要是给球加上标签,算摸到特定球的概率会更难点。

12306就是结合了加减法与概率算法的运算级别。这个运算量可以说是几何级提升的。


除了算法层面,还有服务器层面。

不是说,12306的服务器压力一定就比支付宝的要大,而是不稳定。

在一些出行高峰期时候,人民都会做一件事:抢票。

大家没事就不停的刷票,出票一瞬间十秒钟之内,票就没了(真实经历,切肤之痛,就没怎么抢到过票)。除了乘客在抢票,还有黄牛,这两年还有机器!各种五花八门的抢票软件,对于漂泊在外的同学们应该不陌生吧?反正我春节回家,全靠这些软件。

可以看看双十一时候,各大电商通宵达旦,全副武装的样子。我的一些京东淘宝的朋友说,双十一时候,大家吃住都是在公司,随时准备战斗。

12306能做到这个份上,真的也是不容易了。

取消 评论

你又不是支付宝,怎知支付宝的痛

你又没在支付宝工作,怎知支付宝的各种坑

当年去支付宝之前,也觉得支付宝是个神~~~

取消 评论

因为12306的商品库存和品类是不断动态调整的,而淘宝天猫上的SKU是相对固定的,但是对于12306来说不一样啊。我们就以京九线、京广线来说,每个乘车区间都能卖票,如果卖掉了天津到蚌埠的一张票,那么北京到广州的票、天津到广州的票、北京到蚌埠的票都少了一张。如果加上退票、改签、同一人跨区间买票、同一时段重复购票、防止黄牛炒票等问题


只要是固定品类,不过是数据库里面一行或几行代码。唯一要处理的就是商品的库存和价格。 支付宝体系是非常分散的,而12306却是集中的。不管你在网上买什么商品还是在线下付款,实际上它们都是分散支付的,即便是双十一这样的大型活动时期它还是分散购买。简单点说,无论你购买吃的还是穿的不可以所有的人一起购买一个品类的产品,他们选择的范围太广,

所以12306的容错程度是零。不允许犯错。


12306是实名制的,一人一票,但是天猫可以随便买,所以,12306在下单前后有比较多的身份验证,但是天猫并不需要,所以,12306的单个订单的处理复杂度还是高于天猫的。 而且,全世界没有任何一个系统,在一个时间节点的时候,会涌进来好几亿人。12306能安安全全的票卖出去,我觉得已经很强大了。


所以,一个是面对千万并发顺畅运行的淘宝,一个是可能需要时时刻刻去面对亿级并发保证数据一致性并不保证性能的12306,各有上下,因为业务不一样,量级也不一样。

取消 评论

因为12306的商品库存和品类是不断动态调整的,而淘宝天猫上的SKU是相对固定的,但是对于12306来说不一样啊。我们就以京九线、京广线来说,每个乘车区间都能卖票,如果卖掉了天津到蚌埠的一张票,那么北京到广州的票、天津到广州的票、北京到蚌埠的票都少了一张。如果加上退票、改签、同一人跨区间买票、同一时段重复购票、防止黄牛炒票等问题


只要是固定品类,不过是数据库里面一行或几行代码。唯一要处理的就是商品的库存和价格。 支付宝体系是非常分散的,而12306却是集中的。不管你在网上买什么商品还是在线下付款,实际上它们都是分散支付的,即便是双十一这样的大型活动时期它还是分散购买。简单点说,无论你购买吃的还是穿的不可以所有的人一起购买一个品类的产品,他们选择的范围太广,

所以12306的容错程度是零。不允许犯错。


为什么支付宝一天成交额超一千亿网络和系统都不出问题,而12306购票系统却不行?

12306是实名制的,一人一票,但是天猫可以随便买,所以,12306在下单前后有比较多的身份验证,但是天猫并不需要,所以,12306的单个订单的处理复杂度还是高于天猫的。 而且,全世界没有任何一个系统,在一个时间节点的时候,会涌进来好几亿人。12306能安安全全的票卖出去,我觉得已经很强大了。


所以,一个是面对千万并发顺畅运行的淘宝,一个是可能需要时时刻刻去面对亿级并发保证数据一致性并不保证性能的12306,各有上下,因为业务不一样,量级也不一样。

取消 评论

看到很多答案都在强调12306的购票系统是多么复杂和高难度,似乎12306的网站建设让人不满意的关键是问题本身太复杂导致的。这是一种完全错误的认识,大家可以自行对比目前的12306和几年前的12306,顺畅程度和奔溃率,完全不可同日而语。最近几年,12306网站的进步有目共睹。问题的难度并没有降低,关键是技术进步和投入加大。


其次,支付宝的网络和系统也是会出问题,只不过得益于阿里巴巴的技术能力,解决问题的速度会比较快,给大家带来的困扰会比较小。毕竟大家的要求不是完美,而是体验不能太差罢了。阿里巴巴的技术难度不仅仅在支付宝这个系统,而在于淘宝等网站的海量数据处理,阿里巴巴不仅要保证支付环节不能崩溃或者出错,在购物环节也不能崩溃,而且在双十一等流量峰值时段,会有各种抵扣券,满减活动导致系统负担增加。短暂崩溃的情况也是时有出现的。

因此,首先要排除的一个情况就是,支付宝系统容易做,12306难度大,因此支付宝不崩溃,12306崩溃这个说法。虽然火车票订票系统跟支付宝和淘宝的技术难度不一样,但是,真正导致12306使用不顺畅的原因还是在于两个方面:钱和技术。

大家需要搞清楚的一点是,买不到票不能怪12306,因为网站不可能让车票变多,买不到票是因为座位不够。12306的职责是要正常运行,不崩溃。查询,购票,退票等服务能够尽可能高效。在早些年,12306的网站很容易崩溃,正是大家说12306系统不行的原因。淘宝网跟支付宝虽然也会有崩溃的情况发生,但是修复速度快,影响面小,给大家的印象就好很多。为什么会这样呢?因为阿里巴巴的网站技术,实力是世界级的,不是铁路局可以比的。与此同时,阿里巴巴投入网站建设的资金也比铁道部多很多。


为什么支付宝一天成交额超一千亿网络和系统都不出问题,而12306购票系统却不行?

铁路系统虽然也很强大,但是订票网站不是其核心竞争力,铁道部不可能把太多的资源投入到网站建设。铁道部的钱主要是用来建设铁路系统的,网站只是附加的一个项目而已。阿里巴巴的网站是安身立命的根本,重视程度不可同日而语。阿里巴巴最大的技术挑战就包括如何解决数据爆炸带来的系统负担,他们不断砸钱去解决这个问题,才有能力应对今天这种规模的交易量。而铁道部的网站建设,是在互联网时代为了满足市场需求做出的适应性行为。因此,阿里巴巴不管是在技术积累,人力投入还是资金投入方面,比起12306都有碾压性的优势。网站更好用一些也是理所应当的。

事实上,在12306订票系统难用备受指责之后,铁道部找了国内外的技术团队帮忙建设,其中就包含了阿里巴巴的团队。在重新梳理系统结构,完善网站建设之后,12306网站比以前已经有了很大的进步,整体的稳定性和可靠性还是可以接受的。由此也可以看出,当初的12306那么难用,主要的原因不在于技术难度,而在于投入程度。

取消 评论

因为12306的商品库存和品类是不断动态调整的,而淘宝天猫上的SKU是相对固定的。

对于支付宝来说,只要是固定品类,其实都容易处理,不过是数据库里面一行或几行代码。唯一要处理的就是商品的库存和价格。

但是对于12306来说不一样啊。我们就以京九线、京广线来说,每个乘车区间都能卖票,如果卖掉了天津到蚌埠的一张票,那么北京到广州的票、天津到广州的票、北京到蚌埠的票都少了一张。那数据库就接着算吧。

那么如果同时出现10万笔交易,数据库的处理数量绝不是十万这个量级,保守估算乘以二十(诚意每条线路的站点数量)也不过分吧?

如果加上退票、改签、同一人跨区间买票、同一时段重复购票、防止黄牛炒票等问题……难度能跟淘宝上那种商品卖一件少一件的东西一样么?
为什么支付宝一天成交额超一千亿网络和系统都不出问题,而12306购票系统却不行?

系统压力
根据来自官方的数据,12306网站PV(页面浏览量)目前每天都超过400亿次。

我们这些做企业管理系统的,如果使用的人多了,比如为一家大公司部署OA系统,按一个省公司1000人计算,全公司30万人估算,已经需要考虑十几台负载均衡、分布式缓存、数据库优化、工作流优化等技术,因为要避免工作流的死循环或者写入数据出错,某个状态位错误。

这种压力下,我们的OA系统的PV也不会超过2000万每天,跟12306每天400亿次,还相差了99.95%。我反正是没有勇气去批评12306。

容错程度

我们做企业管理系统,就算偶尔因为系统架构调整、数据库升级、黑客入侵、版本更新乃至软件错误导致某一个公文、某一笔报销弄错了,在当事人提出问题后,我们改回来也就算了。

在12306上,你好容易抢到一张春节回家乡的票,然后过20分钟有个工程师打电话给你说抱歉先生,因为我们数据库故障,您购买的票无效,请您重新购票的时候,你会不会用尽所有力气问候12306的服务人员、工程师、铁总?肯定会啊。

所以12306的容错程度是零。不允许犯错。

防止刷票

现在有多少软件是在云端每隔6秒跑着轮询?目前的测算是每秒查询数据库40万次-50万次;而对数据库的每次查询过程中,数据库还必须给出实时数据,以便于我们买票。

这个难度,你就看小米每次在抢购的时候,一开始是实时显示所有余量,后来压力实在扛不住,只有在最后1000台的时候才显示余量。小米是认怂了。

我们早就认怂了,我一般都是专门提供一台查询服务器,提供非实时的数据,供查询的数据每天更新两次。

每秒50万次查询,还要返回真实数据,反正让我做,我就认怂。

问我多少钱能做,我觉得20个亿以下,我想都不敢想。

跟支付宝的难度差得太多了,不是一个数量级。

取消 评论
ZOL问答 > 音箱 > 支付宝音箱 > 支付宝Paybox A2 > 为什么支付宝一天成交额超一千亿网络和...

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

为什么支付宝一天成交额超一千亿网络和系统都不出问题,而12306购票系统却不行?

点击可定位违规字符位置
提示

确定要取消此次报名,退出该活动?