当前位置: 首页 > 科技观察

前淘宝工程师谈12306:做起来比淘宝还难

时间:2023-03-20 19:20:21 科技观察

如果12306外包给IBM或者阿里巴巴,能不能比现在做得更好?如果是以前,我肯定会回答:是的。因为我们始终认为,一个年投资3亿多的火车票销售网站,没有理由做不好吧?其实不止小编这么想,很多媒体甚至专业人士都喷过12306,但是近日一位前淘宝工程师通过科普给了我们一记响亮的耳光:12306建站的难度比这高多了淘宝的。曾经在淘宝写过一段时间的代码。2012年在百强民营企业任电子商务副总裁。当时,我带领团队在极其困难的条件下开发了一个B2C网站,使用支付宝和银联支付渠道,年营业额上千万级。平时,12306只是一个普通的电子商务网站。但一到黄金周,123??06就是全站所有商品的闪购,所有SKU(库存单位、物流管理术语、编者注)都是变态的动态库存。媒体人喷12306是因为不懂技术,没有能力和耐心分析背后的难处。技术人员喷是因为大多数技术人员在短时间思考时容易陷入过于乐观的误区。至于12306一期工程3亿元(含硬件),贵不贵我不评价。我只提供一个数字供参考。百度每年研发费用(不含硬件)10亿。这个数字来自百度的财报。它可以在网上找到。3亿看起来是一个很大的数字,但是用在超大型的电子商务系统和搜索引擎系统中,其实并不是一个天文数字。我再解释一下为什么秒杀压力那么大,为什么12306的动态盘点很复杂。先说秒杀:2013年12月25日前后,天猫推出圣诞季积分兑换活动,持续了几天。25日上午10点12分,1.5万个天猫魔盒放出。从成交记录来看,19秒内全部售罄。其实我也参加了秒杀。我应该在5秒内回答问题并提交订单,但结果告诉我排队的人太多了,我会在14秒后重试。心想,过了14秒,我无事可做了,于是又回答了问题,出现了服务器错误页面。反复刷新几次以告知秒杀结束。淘宝的技术水平如何?淘宝至少有4000名技术人员,至少有4万台服务器。以淘宝的技术水平,不可能让每一个用户在闪购的时候都觉得不拥挤。为什么?一是尊重物理学原理。服务器在一秒钟内可以承受的计算量是有限的。无论你多么优化,无论你使用多么高效的算法和编程语言,你都无法突破某个限制。二是考虑经济效益。十一黄金周期间,北京主城区至八达岭长城的道路严重拥堵,但这一段路不能像长安街那样建设成10车道的高速公路,因为黄金周高峰期。先说动态库存:当年淘宝秒杀天猫魔盒的时候,只有一个商品(行话叫SKU),库存1.5万。闪人到货,库存减1,19秒卖完,一秒要成功生成789个订单。想象一下,你在广场上卖火车票,一秒8万人举着钱冲你喊:卖给我!嗯,淘宝说了半天,能说12306吗?我从北京西到深圳,以北边的G71高铁为例。它有17个车站和3种类型的座位。从表面上看,这不就是三种商品吗?G71商务座、G71头等座、G71二等座。大部分容易喷12306的技术人员都是第一次在这里跌跌撞撞。其实G71有136*3=408种商品(408个SKU),怎么算呢?请看:如果卖北京西产地的产品,有16种销售方式(因为后面有16个站),北京西到:保定、石家庄、郑州、武汉、长沙、广州、虎门、深圳……都是独立的商品。同样,石家庄有15种可能下车,以此类推。按汽车的车站计算,车票一共有136种:16+15+14...+2+1=136。每张票有3种座位,共408种商品。旅客A购买了北京西(01号)至保定东(02号)的车票,则【北京西至保定东】的库存减一。同时,北京西至石家庄、郑州、武汉、长沙、广州、虎门、深圳等15个平台的商品库存也将减一,也就是说,如果您开出北京至保定东的客票,您实际上将不得不减少16种商品的库存!这还不是最复杂的,如果旅客B买的是北京西(01站)到深圳北(17站)的车票,除了【北京西到深圳北】。郑州、武汉、长沙、广州、虎门等15个平台的商品库存也将减1,保定东至石家庄、郑州、武汉、长沙、广州、虎门、深圳北等15个平台的商品库存也将减1将减少1...减少的产品总数为16+15+14+...+1=120。试想八万人拿着钱冲你喊:卖给我。你好不容易在一堆钱里找到了一只手,拿了他的钱,转身去找120个同事,让他们减少库存,而这120个同事和你一样被8万人围着;每卖出一个产品,都要几十个人去清库存……这就是12306动态库存的异常。它比你平时买东西的任何网站的库存机制都要复杂几十倍或几百倍。再来说说抢票插件,防止机器人抢票,不是加个图片验证码那么简单。让我们把验证码复杂一点。人们会抱怨:这只是廉价的大学生和办公室白领。农民工连26个字母都认不出来。该怎么办?让我们创建一个动画验证码。该怎么办?最后,验证码太简单了,皆大欢喜。其实开发抢票插件的公司是最幸福的。上面的讨论只是把12306看作是一个没有像淘宝那样的历史包袱,白手起家的交易系统。事实上,它不是。服务。除了客运服务,12306还拥有全国最大(也可能是全球最大)的大宗物资货运系统。架空政策(包括价格政策、警方打击黄牛、身份验证政策)和技术都无法解决春节抢票的困境。如果想让大家春节期间去12306抢票,不会有拥挤感(但不是一定能抢到票,铁路运力摆在那里),那就是逼12306买很多服务器应对春运出行。春节过后,它将成为像亚马逊一样强大的云计算服务商。就等于逼着北京修一条10车道的高速公路到八达岭长城。目前的12306技术还存在问题。比如抢票高峰期,输入一个身份证号和图片验证码就卡死了(我亲测过),服务器忙。你的浏览器出了什么问题?但他们是进步。相信在2015年春运期间,技术不再是一票难求的主要问题。在铁路运力无法快速提升的情况下,需要依靠政策调整,确保春运期间购票更加公平。