12306购票系统高峰期会崩溃?为什么支付宝一天成交额超一千亿网络和系统都不_华博娱乐注册平台

12306购票系统高峰期会崩溃?为什么支付宝一天成交额超一千亿网络和系统都不

12306购票系统高峰期会崩溃?为什么支付宝一天成交额超一千亿网络和系统都不出问题?
 

观点一:

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

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

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

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

如果加上退票、改签、同一人跨区间买票、同一时段重复购票、防止黄牛炒票等问题……难度能跟淘宝上那种商品卖一件少一件的东西一样么?

系统压力

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

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

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

容错程度

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

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

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

防止刷票

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

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

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

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

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

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


观点二:

 

的确,12306的用户体验不是一般的糟糕,尤其是每逢春运,12306几乎都被推到风口浪尖上。系统响应总是卡顿、延迟,每日长达7个小时的系统维护周期,奇形怪状的图片验证码,每天只能取消三次订单的强制规则……


如果将春运售票与淘宝等电商平台“双11”订单业务挑战进行相比的话,前者在业务复杂性上更具挑战性,而后者更多的体现在业务规模上。

因为乘客每买一张车票,都基本上是不同区间车票的订单。如果再加上订票者的“学生”或“成人”信息,选择上下铺、优选号等选择,那么无论查票、出票、支付等逻辑上,都要比电商平台上订单系统复杂得多。

另外12306网站PV每天都超过400亿次,这个数字远远高于淘宝双11时同时访问的人数。而且火车票订票则是实名制,分配座位都是对号入座的,每个时段每趟车次每一个座位,系统只能售卖一张。而且除了有真正购买需求的全国网民之外,同时还有机器人、订票机器在大量的进行刷新,并发次数非常高,包括优化数据库访问、分布式、缓存、负载均衡等技术挑战摆在眼前,都无法解决服务器高负载的问题。