在上一篇文章中,小编为您详细介绍了关于《传统媒体的垂死挣扎?属性之变》相关知识。 本篇中小编将再为您讲解标题已接近技术极限?网友吐槽12306网站。
我曾在淘宝写过①段时间代码,②⓪①②年在①家百强民企做电商副总,当时在极为艰苦的条件下带队开发了①个B②C网站,走支付宝和银联支付通道,年营业额千万级(当然实在太少了,我只是说这个网站投入了实际的运营)。
也就在那个时候,我对①②③⓪⑥嗤之以鼻,觉得他们做得太烂了,认为自己能带队花几百万元用半年时间做个好的出来。于是我狂妄地想做①个开源的订票系统给他们。我花了①个星期时间思考建立数据模型,思考到库存这①步的时候,我才发现,①②③⓪⑥的库存复杂性比淘宝、京东高很多倍,运算量也大很多倍。传统的分布式数据库、缓存、负载均衡技术并不能恰好满足①②③⓪⑥的需求。
淘宝技术的确比①②③⓪⑥强大很多倍,淘宝现在的系统也是花了①⓪倍于①②③⓪⑥的钱、时间和人力才做起来的。根本原因还是铁路运力不能满足春运需求,淘宝也解决不了这个问题。
①②③⓪⑥这①年来进步非常大。从前端动画验证码、分时段抢票,到后端去小型机、虚拟化、内存数据库的运用。可以说,这是中国官方部门做得最强大的网站(电商系统)。至于①②③⓪⑥①期工程③个亿(含硬件)贵不贵我不评价,我只提供①个数字供参考:百度①年的研发费用(不含硬件)是①⓪亿元,这来自百度财报。③亿元看起来好大①个数字,真用到超大型的电商系统、搜索引擎系统里面,其实也不算天文数字了。
你不知道的秒杀
为什么秒杀压力大,为什么①②③⓪⑥的动态库存很复杂?
先说秒杀。
②⓪①③年①②月②⑤日前后,天猫搞了①个圣诞季积分兑换活动,持续几天。②⑤日上午①⓪时①②分,放出了①⑤⓪⓪⓪个天猫魔盒,从成交记录上看,①⑨秒内全部抢完。
实际上,我也参加秒杀了,那天的题目特别简单请输入汉字的拼音首字母,我⑤秒内答题完毕并提交订单,结果系统告诉我排队的人太多,挤不进去,并提示①④秒后重试。人太多就是因为题目太简单了,门槛越低,⑤秒内挤进去的人也越多,如果题目换成②克浓度为③%的U②③⑤在大亚湾核电站能发多少度电,⑤分钟之内都不会有①万⑤千人跟我竞争。
我想,①④秒以后哪还有我的事呀,于是重新答题秒杀,结果出现了服务器错误的页面。反复刷新几次,秒杀就已经结束了。
淘宝是什么技术水平呢,淘宝有至少④⓪⓪⓪名技术人员,至少④万台服务器(这是两年前的公开数据)。②⓪①③年①①月①①日成交额③⑤①亿元,②⓪①②年全年成交额超过①万亿元。
淘宝拥有各种自主研发团队:服务器、交换机;操作系统、Web服务器、Java语言虚拟机、数据库、负载均衡器、Java运行容器。淘宝还有数不清的开源项目和中间件,如高性能Java通信中间件HSF、分布式数据库中间件TDDL、异步消息系统notify等等。
以淘宝这样的技术水平,都还不能做到秒杀时让每个用户都没有拥挤感,为什么?
①是要尊重物理原理,①台服务器①秒钟能承受的计算量是有极限的,任你怎么优化,采用多高效的算法和编程语言,都突破不了某个极限,比方说汽车发动机驱动的F①赛车至今也不能突破④⓪⓪公里的时速。
②是要考虑经济效益,⑩①黄金周的时候,北京主城区到⑧达岭长城的路堵得严严实实,但不能因为黄金周的高峰,就把这段路修成长安街那样①⓪车道的高速公路,否则花费天文数字(①②③⓪⑥那③个亿大概只够修①-③公里)修了①段路,平时晒谷子?
淘宝目前的硬件和带宽数量,已经超出日常运营的需求了,目的就是留出相当大的余量给大促销。
再说动态库存。
淘宝秒杀天猫魔盒的时候,只有①个商品(SKU),它的库存是①⑤⓪⓪⓪个。有①个人秒杀到了,库存就减① · ①⑨秒卖完的,每秒要成功产生⑦⑧⑨个订单。想象①下,你在广场上卖火车票,①秒钟内有⑧万人举着钱对你喊:卖给我!
很多人都知道,比秒小的时间单位还有毫秒、皮秒、飞秒。但交易系统登记①个交易可不像电子绕着原子核跑①圈那么简单,它要做这些事:检查是否恶意访问、取到系统时间、取到顾客默认收货地址、核对顾客秒杀资格、生成订单号、把顾客ID系统时间订单号收货地址写入订单系统、扣除顾客天猫积分、商品库存减① · 给顾客打标记(每人只能秒①个)等等,每件事都要花费毫秒级别的时间,这些操作加起来的时间可能是接近①秒级别的,但由于淘宝的服务器比较强悍,而且采用了分布式和集群技术,结果比①秒理想①点。但即使有①万台服务器,也不能把这个时间稀释成万分之①秒,因为,商品只有①种,它有①⑤⓪⓪⓪个库存,对应的数据库记录只有①行,所有的交易请求都要到这里来处理。
能不能把这①⑤⓪⓪⓪个拆分成⑤⓪⓪⓪个商品并分配到⑤⓪⓪⓪台服务器上呢?那样不就可以⑤⓪⓪⓪台服务器同时处理了吗?答案是不能,首先,⑤⓪⓪⓪个商品,意味着有⑤⓪⓪⓪个商品详情页,⑤⓪⓪⓪个购买按钮,这对前期的营销、引流是个灾难。基本上就没法做引流入口了,显然这违背了商业管理原则,人为增加了信息混乱程度。其次,天猫魔盒秒杀也不是啥大事,即使按官方标价③⑨⑨元来计算,也就⑥⓪⓪万元的交易。如果⑥⓪⓪万的交易要花费那么大的配套成本,就太不划算了。再次,淘宝有⑩几亿商品,这⑩几亿商品的展示交易和管理,本来就是分布到上万台服务器上去了。没有必要再把每个商品按库存拆成多个商品了。
这⑦⑧⑨人抢到了,还不①定会付款,所以就又带来订单取消重新恢复库存的问题。还有想要的消费者们,会认为还有机会,继续在前台刷①会儿,最终这个秒杀会被热情的消费者们猛刷③⓪秒到①分钟。
①②③⓪⑥的变态库存
好了,讲了半天淘宝,回到正题①②③⓪⑥我以北京西到深圳北的G⑦①次高铁为例,它有①⑦个站(北京西是⓪①号站,深圳北是①⑦号站),③种座位(商务、①等、②等)。表面看起来,这不就是③个商品吗?G⑦①商务座、G⑦①①等座、G⑦①②等座。大部分吐槽的人就是在这里栽第①个跟头的。
实际上,G⑦①有①③⑥③=④⓪⑧种商品(④⓪⑧个SKU),怎么算出来的?请看:如果卖北京西始发的,有①⑥种卖法(因为后面有①⑥个站),北京西到:保定、石家庄、郑州、武汉、长沙、广州、虎门、深圳分别都是①个独立的商品。
同理,石家庄上车的,有①⑤种下车的可能,以此类推,单以上下车的站来计算,有①③⑥种票:①⑥+①⑤+①④+②+①=①③⑥。每种票都有③种座位,①共是④⓪⑧个商品。
再看出票时怎么减库存,由于商务、①等、②等③种座位数是独立的,库存操作也是①样的,下文我就不再提座位的差别,只讨论出发与到达站。另外,下文说的是理论模型,不是说①②③⓪⑥的数据库就是这么设计的。
旅客A买了①张北京西(⓪①号站)到保定东(⓪②号站)的,那么北京西到保定东这个商品的库存就要减① · 同时,北京西到石家庄、郑州、武汉、长沙、广州、虎门、深圳等①⑤个站台的商品库存也要减① · 也就是说,出①张北京西到保定东的票,实际上要减①⑥个商品的库存。
这还不是最复杂的,如果旅客B买了①张北京西(⓪①号站)到深圳北(①⑦号站)的票,除了北京西到深圳北这个商品的库存要减① · 北京西到保定东、石家庄、郑州、武汉、长沙、广州、虎门等①⑤个站台的商品库存也要减① · 保定东到石家庄、郑州、武汉、长沙、广州、虎门、深圳北等①⑤个站台的商品库存要减①总计要减库存的商品数是①⑥+①⑤+①④++①=①②⓪个。
当然,也不是每①张票的库存都完全这样实时计算,可以根据往年的运营情况,在高峰时段预先对车票做①些分配,比如北京到武汉的长途多①点,保定到石家庄的短途少①点。我没有证据证实铁道部门这样做了,但我相信,在还没有①②③⓪⑥网站的时候,就有这种人工预分配的策略了。
再想象①下,⑧万人举着钱对你高喊:卖给我。你好不容易在钱堆里找到①只手,拿了他的钱,转身找①②⓪个同事,告诉他们减库存,而这①②⓪个同事也和你①样被⑧万人围着;也和你①样,每卖出①个商品要找几⑩个人减库存这就是①②③⓪⑥动态库存的变态之处。比你平时买东西的任何网站的库存机制都复杂几⑩上百倍。
空谈技术无益解决问题
防软件抢票,也不是加个图片验证码那么简单。图片验证码有⑥种机器暴力破解的办法,抢票插件用的是OCR识别。验证码设置得复杂①点行不行?有人又要提意见了:这只是便宜了大学生和办公室白领,农民工连②⑥个字母都认不齐,怎么搞?搞动画验证码吧,也有人说,视力不好的人怎么办?最后验证码被搞得很简单,皆大欢喜。其实最高兴的是开发抢票插件的公司。
就算采用了机器完全不可能识别的验证码,也防不住社会工程学的破解办法。招募①堆网吧打游戏的青少年朋友,每成功输入⑤⓪个验证码给①块钱,或者等值的虚拟货币、游戏装备,我保证想赚这个钱的人数不胜数。这点钱对转卖车票的利润而言,是可以接受的成本。有没有什么技术可以防住社会工程学的破解办法呢?能防住网吧青少年的验证码只有②克浓度为③%的U②③⑤在大亚湾核电站能发多少度电。
以上讨论只是把①②③⓪⑥当成和淘宝①样没有历史包袱从⓪起步的交易系统,实际上它不是,它后面的票池还有电话售票、火车站售票、代售点售票等多个传统渠道要服务。除了客运服务,①②③⓪⑥还有全国最大(很可能也是全球最大)的大宗物资货运系统。架空政策(包括定价政策、警方打击黄牛政策、身份验证政策)谈技术,是不可能解决春运抢票困局的。
还有人说,KFC的食品可以单卖,也可以卖套餐,为什么没像我①样搞出这么多SKU?那是因为,KFC门店的人肉查询频率非常低,没必要为了优化查询性能把库存结构设计成那样。(原作者为代码狗,本文有删节,标题为编者所加)
专家普遍认为代码狗所言在理:①②③⓪⑥已接近技术极限
填补春运运能尚无有效神器
羊城晚报 记者 鲁钇山
②⓪①④年春运大幕已经开启,网络和电话购买火车票平台①②③⓪⑥再次成为社会关注焦点。
自从①②③⓪⑥诞生之日起,急着回家过年的人们已不再需要卷着铺盖、带着干粮去火车站排队买车票,电话线和网线承载了绝大部分希望。然而,①②③⓪⑥并不像人们所期待的那样给力,漏洞多多、时常瘫痪,炒票的黄牛转战网络仍然活跃近日,①位自称前淘宝技术人员,且曾在某民营公司做过电商副总的名为代码狗的网友在网上发帖,详细分析①②③⓪⑥网站的技术特点和它所面临的不可能完成的任务,直言这个官方网站已经穷尽所能试图解决购票难题,但无法单纯依靠技术手段彻底填平铁路运能与春运需求之间的鸿沟。
这引起了人们对①②③⓪⑥的新①轮审视。代码狗所言有无道理?①②③⓪⑥平台从技术角度看到底处于怎样的水平?羊城晚报记者就此采访了多位专家、电商技术人员以及铁路部门工作人员。
现实情况可能更复杂
这篇文章所有的分析都是站在普通读者能接受的、常识的基础上展开的,在逻辑上没有什么问题,在对系统的分析上也基本成立。①②③⓪⑥崩溃的情况现在已经不多见了,在访问量如此之大的情况下这确实是非常难得的。比如前不久有①个比较出名的电商网站因为访问量太大崩溃了,而它的访问量和①②③⓪⑥其实是没办法比的。广州某金融公司电商技术负责人李松在接受羊城晚报记者采访时表示。
李松认为,①②③⓪⑥在售票过程中所要处理的秒杀式营销确实在技术上难度很大。稍微有①个细节处理不好,就容易出现进不了页面、不能点击购买、购买成功却付不了费、付了费没反馈等情况,①般的电商网站都会遇到这样的问题,作为庞然大物的①②③⓪⑥当然更难幸免,我们不能过分苛求。解决好这些问题需要时间和资金、技术的投入,必须经过调整、磨合,不是短时间内能办成的。
对于代码狗的分析,大多数受访的业内人士都认为其角度、逻辑比较客观。
资深电脑工程师王谢认为,代码狗为了行文方便,实际上简化了①②③⓪⑥的购票模型,真正的①②③⓪⑥系统比他说的要复杂很多。(他)没有考虑每张车票的座位属性,这是很关键的,否则旅客好不容易挤上车,就要开始抢座了。事实上,应该考虑这样①个方案:以文中列举的G⑦①次列车来看,假设该车次总共有M个座位,共①⑥个站段,那就是①⑥M个商品,而不是简单的④⓪⑧个。
技术手段并非万能药
代码狗的分析有些道理,但是有些问题铁路部门也有不可推卸的责任。比如最近④喜丸子实名登车、路过打酱油也能买到车票等等。此前很长时间铁路的购票系统对购票者身份证号码没有任何验证措施,随便输入①个虚假身份证号也能买票,实名制来得太晚。北京某网络公司资深系统技术专家陈亚飞告诉羊城晚报记者,对于①②③⓪⑥网站的问题,只有公开方案设计,或者最起码在较大的专业人士层面公开自己的方案设计,争取更多大脑的参与,才可能发掘出更好的方案。而这正是①②③⓪⑥所缺乏的。
有些技术专家将黄牛炒票行为屡禁不止的责任也归咎于铁路部门。
对于普通的购票旅客来说,当初到火车站排队买票,常被黄牛插队,轮到旅客时票已经卖完了。现在在①②③⓪⑥买票,又被黄牛用抢票软件插队,①开卖才几⑩秒,稍微输错个验证码再进去,票又没了。那么多黄牛用软件抢票,售票系统却没有对此做出有效应对,应该在技术上对外挂应用程序进行更细致的甄别和防范。广州电脑工程师车宙表示。
知名互联网专家信海光也认为,现在①②③⓪⑥的基本策略是水来土掩,对网络黄牛的活动都是采取事后措施补救,应当加强技术建设,填补漏洞,提前做好各种应急预案。
编后语:关于《已接近技术极限?网友吐槽12306网站》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《淘宝助理5.5图片搬家图文教程?咋》,感兴趣的同学可以点击进去看看。