BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

淘宝双十一事件的前中后技术事
录制于:

| 受访者 伏威 关注 0 他的粉丝 作者 霍泰稳 关注 1 他的粉丝 发布于 2010年12月14日 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!
21:38

个人简介 伏威,淘宝产品技术部商品线负责人,双11技术团队联系人。2000年出道,经历过外企创业团队、国企技术部、自己创过业(上海漫索科技),最后落户淘宝。在淘宝三年,做过交易、商品、用户等相关系统,最后被垂直化到专注于商品。

   

1. 伏威你好,请简单给我们做一下自我介绍,以及你在这次淘宝双十一事件中所扮演的一个角色。

OK,我是淘宝产品技术部主要负责商品线的Leader。我叫唐勇,花名叫伏威。这一次双十一我在里面主要担当了一个联系人的角色,因为我所在的产品技术部,主要负责的是淘宝主站交易,就是我们的交易系统,像商品线等一些系统全部在这个部门里面。因为我所在的这个部门的职责以及我对他们的了解,这次就承担了这样的一个协调工作。因为我以前做交易线的时候和支付宝也打过交道,跟支付宝之间的交流,去协调,还包括旺旺等其他一些外部和内部的联系都是我在做。

   

3. 其实刚才我们在采访之前沟通的时候也提到一个名词叫“战地指挥所”,这个组织会来指挥双十一事件那几天所有的技术事件,你能不能简单给我们介绍一下这一个组织的结构组成?

战地指挥所并不是它原有的名称,其实我们就叫做“双十一保障团队”。但是我们的一个经理,他来到我们整个安保的房间里面走过一遍以后,然后发了一篇微博,起了一个“战地指挥所”的名字,就一直就保留下来了。“战地指挥所”本身就是这一次淘宝在外面大规模做广告,而且半价优惠,诱惑力都是很大,为了保证这双十一这一天的交易能够平稳顺畅的进行,那我们的整个技术部的Leader东邪,要求我们成立的一个保障团队。组长就是我们的振飞,全名叫刘振飞,他协调各个部门的人,包括我们部门的三个人,范禹、黄裳和我。范禹和黄裳他们两个是在淘宝土生土长起来的技术专家,对淘宝的整个的系统以及业务是了如指掌,他们是以技术专家的角色参加这个安保小组。然后还有包括振飞下面的其他一些包括网络的团队,运维的团队,都有人参加,还有包括我们的DBA江枫,都参加了这个团队,一起保障整个双十一活动平稳进行。

   

4. 其实像黄裳在我们做QCon 2009的时候,他也做过演讲,并且非常受欢迎。那我们想了解的就是在业务部门出台双十一这个计划之后,技术部有没有做哪些可行性的分析,或者说叫预案,然后他又是如何去验证这些技术方案的?

很难说我们做了什么技术方案的这种分析,或者说预估。因为我们淘宝每次大的系统结构改造都是要持续半年,在一个活动开始前短短一个月的时间内,你很难去做一个所谓的技术方案。而且我们用户去淘宝上访问的是什么?其实就是淘宝的交易系统,他就是去做交易,做商品,这些功能都是已有的,他其实不存在一个技术方案的分析。那我们只是去做什么?只是去做一些可能出问题的一些系统的预警方案,或者说我们称之为预案。那么可能就是在什么样的一个压力的情况下,我们要做什么样的反应,是否是需要加急,是否是要做特定的系统降级等等。但是就是可行性分析方案几乎就没有,因为在那个时候你很难去做。就好像考试一样,你临时抱佛脚在淘宝是很难抱的,你只能靠在淘宝,就是你在之前的一系列的积累到现在,那这时候发挥作用,就是临时磨枪是不快的,也不光的。

   

5. 那你所制订的那些预案和最终在10号、11号那两天有没有经过一些验证,或者说发现有那些做得还不是非常好的地方?

这个可能要讲得更全面一点,就是因为那天,我作为联络人,当振飞那天开会的时候,就请了旺旺的团队、支付宝的团队,和我们内部关键应用系统的团队,在一起来开会,我们会对整个活动的开展做了预测。一个是这次活动,预估会带来多大的流量的增量,以及每个系统它有多大的余量,然后到那一天可能会产生什么样的问题,以及这个问题背后,我们如何去做预防,包括刚才说到的服务的降级是否可以去做等。还有就是一些容错措施是否要起作用,我们都做了预估。那么那一天所列出来方案,说实话就是在后期也验证了不足,不足的原因是在哪里呢?一是我们远远低估了全国人民的热情,当面对我们双十一全场半价的这种诱惑力的时候,感觉在淘宝上购物的那帮人都疯狂了,大规模的涌进。造成系统压力持续增高,那么有些方案,包括我们为了应对支付宝的整个系统的一个压力的方案,我们有一些功能上的取舍。

比如说那天,我们大家现在都知道确认收货是被停掉的,大概是下午四点多,五点左右被停掉的,为什么?就是为了应对高峰期的压力,这些预案都基本上起作用了。而之前我们在系统设计的时候,其实这种降级的服务方案,我们都已经放进去了,在那一天就得到了验证。还有些东西是我们没有办法预估的,包括,那天用户疯狂的涌进对我们整个CDN的流量的压力,因为我们平时CDN流量可能是一,但是那天翻到了三,这种200%、300%的增长,对我们整个的体系都是一个很大的冲击。而CDN的布局你是没有办法临时去扩容的,不像我们应用服务器,你可以临时去加机器,它是很难做到的,这时候我们的网络服务团队和应用团队其实是在一起去解决这个问题,不是单方面的努力,而是我们应用和运维团队一起去把整个流量降低下来了。那我们感觉很庆幸,就是那天到晚上,我们之前做过的很多预案都起了作用,到最后才平稳的支撑过了晚上整个的交易高峰期。

   

6. 那我们现在再简单回顾一下,比如说10号、11号那两天,你在做什么?或者说你对整个事件的一个流程有没有什么把握?

这个其实我觉得就用我心态的变化来做介绍好了,我加入淘宝三年,我参加过很多次大型的项目,从最开始的秒杀活动到双十一等一些大型的项目,都感觉不会有太大问题。当时振飞成立的一个团队,我们在开会的时候都很紧张。然后我还说不用这么紧张吧,这绝对不会有问题的,这个大家不用草木皆兵,当时就觉得我自己是一个安心。但是从10号我们开始值班,到10号那天晚上开始就觉得,有点Crazy,就是我们到凌晨两点的时候,我们整个就是商城的交易额已经突破了六千万了,这在平时是不可想象的。我觉得当时心里就一绷,会不会明天太疯狂?然后到第二天凌晨九点我们上班的时候,就已经开始紧张了。就是因为当时整个商城的交易额都已经突破将近一个亿了。而且我们CDN流量当时已经达到了380多个G了,而我们预估的流量是没有那么大的。

这时候我们就开始紧急设计各种各样的预案,在那天能够生效的预案,包括为了降低CDN的压力,我们在应用上要做得分析。当时我们的一些核心数据库也报出来有些风险,因为200%的增量,这个在平时我们不可想象的。这时候我们要去做哪些服务的降级,要停掉哪些在比如说DBS,数据库操作层面的一些东西,让整个数据库的支撑量会更大。那时候我们都开始做,那到下午三四点的时候,那时候紧张达到了顶点,因为我们不知道下午和晚上会发生什么。当时我们可以做得事情我们全都已经去做了。那到晚上九点、十点的时候,我们发现我们支撑过那个压力以后心情慢慢放松了。当时我们头天还在考虑说,双十一活动对吧,半价,我们要去抢购什么商品,在九点十点之前我们从来没有那个心情去做抢购,然后到十点以后,这时候我们才开始放松下来,可以去采购一些商品,为自己买东西。那时候好东西都被抢光了,真的是没办法。因为最后运营才告诉我,真的是只要有好东西上去就疯抢,好东西上去就疯抢,我们最后意思意思买了一些不打折的商品,以支持淘宝的交易额。

所以说整个心态就从一个很稳定,就是觉得放心、放松、没事情到紧张,然后到紧张到高峰,然后最后再下来,就是好像坐了一个过山车。而那个过山车绝对不是说你能预估到的。这种心态的变化对于我们来说还是蛮有挑战性的。而且我之前接受我们内部的采访的时候告诉他们,我说我们是希望双十一平平静静、安安定定,我们的技术人员是不要出面的,你们不要意识到我们存在。开心的是我们那天我们露面了,我们去,真的是为这次活动做出了很大的贡献。然后不安的地方是呢,希望下次不要这样,我们真的就希望暴风雨在淘宝是无声无息的,你每个会员可以开开心心的采购商品,你不要意识到后台我们技术做了什么,也不希望有任何功能去做了降级,比如说确认收货你不能确实收货,而这种事情发生是我们不希望的,所以说既开心又感觉到有点失落,我们还是没有做到无声无息,其实我觉得最大的成就应该在于无声无息。

   

7. 其实根据网上一些读者、网友的反馈,淘宝技术团队已经做得非常非常棒。然后我记得有一个网友他就这样提到说,其实对于一个技术人员来讲,他的整个的业生涯里面能够经历一次这样的事情是非常非常难得的。那对于你个人来讲,你认为这件事情给你印象最深得,或者是还有一些就是你比较后怕的事情是什么?

让我印象最深的第一个是执行力,阿里特有的执行力,就是在我们活动当天,虽然出现了那么多问题。但是因为我们的执行力超高,我们所有去做事情的人没有任何懈怠的意识,任何辛苦他们都能承担下来,任何压力他们都能承担下来。这是我觉得我印象最深刻的之一。第二个呢,也是我庆幸,开心也后怕的,如果没有2010年这一整年,我们花了大力气在系统改造上面,在我们的技术优化上面,那一天就不是森林里面的一点小火了,就是整个森林全都起火,就是火灾,你根本就没有办法应对,就是我们所有预案在那天都不可能起作用,我们就好像一个身患重病的病人,躺在椅子上等死,什么都干不了,也就是因为我们这一年做出了这么大的努力。我也庆幸我们这一年做出了这么多的技术的新的改造和优化,否则的话我们那天肯定撑不过去的。

其实大家只看到说我们那一天,比如说在CDN上做了很多文章,就是为支付宝做了很多事情,但是还有很多更关键的系统,比如说我们的交易详情的页面,商品详情的页面,商品详情页面比平时的压力直接打破了三倍。如果没有我们今年,就是连续三次大型的优化是根本就实现不了的,而我们的优化是什么?我们从直接提升了它的性能的700%,也就是说我们有信心,在双十一高峰期再增长50%到80%的情况下,我们的商品详情页面依然撑得住,还有包括我们的,交易数据库今年做了拆分和读写分离,它直接的系统能力在双十一的基础上还可以再上浮很多。那如果没有这些的话,我们那天根本就支撑不住;还有就是对用户信息访问这种UIC(User Interface Center),当时我们产生了上百亿的内部的访问请求,就是这种系统的压力,如果不是我们做了整个读写分离的优化,以及就是通过MySQL,让我们的系统可以水平的扩展,我们也是支撑不了的。

所以说我感觉庆幸是,感觉开心的是我们的执行力和我们技术团队的工作,我感觉后怕以及庆幸的是我们做了这些技术改造和优化,让我们双十一可以支撑过去,让我们的那些技术的预案有所作为,否则的话就是做无可做了。

   

8. 其实双十一事件它之所以技术团队能够保证它的正常运行,还是和整个淘宝这一年来他这个技术改造是完全分不开的?

对,而且不只是这一年。我们遥想将来,就是明年,就是我们要做的事情就是可能更多,我们的步伐需要更大,否则的话明年年底会再来同样的事情出现,我估计全国人民会更疯狂。是吧?

   

10. 其实刚才我们也在聊的过程中也提到一个容灾和一个降级服务,其实这一个是一个很多大型的网站,特别是一些电子商务的网站,都是非常关注的一点。那么给我们简单介绍一下这两个技术,它的关键点在什么地方?

我也看见了。就是在InfoQ在网上搜集信息的时候,有一个朋友在问,就是我们如何支撑这么大的压力?就是我们如何去应付这种高性能并发访问的,简单而言,我们把这张图画出来,它可能就是一个典型的Web上层架构体系,但其他重点还是在细节上面。为什么我会提到这一点呢?其实我们的容灾、包括降级服务也在淘宝整个发展过程中,我们发现的一些细节上的意识点,而最后成功的关键也在这些地方,就是因为我们现在做了很多事情,就是从一个高性能的就是Oracle,它的稳定性很强。因为我们为了支持它的水平可扩性,我们做了改动。但在一个不稳定的系统上面,你如何去做到容灾,让前端的访问能够顺畅的访问,而后台单点出问题的时候,可以水平上移滑到另外一个点上去,这些都是一些细节;还有包括服务降级,服务降级就更简单了,在系统压力过大的情况下,或者说单点出问题的情况下,能不能通过降级让它的整个系统能支持住更大的流量,而且能够平稳的让用户的购物流程平滑,这就是我们要去做的。

而我们淘宝现在就在这个细节上面已经融入到了我们的设计当中。可能在采访范禹的时候他也会讲到我们淘宝的几个大型系统的一个技术型改造的一个活动,那在这个中间,我们就已经做到了,这种水平的大型改造,我们已做到无声无息,就是我称之为没有新闻就是最好的新闻。就是可能在你上层结构都还不知道情况下,我大型改造都已经完成了,所以说这种细节还是非常关键和至关重要的。所以说降级和容灾只是这些系统中间的一个部分,那只是说,在我们为了应付双十一的这种大流量的并发的情况下,我们在这上面表现的比较关键而已,起的作用会比较大一点,但实际上还有更多的细节。

   

11. 那我们最后来回顾总结一下双十一事件,它给你带来的一些感想。另外就是对其他的电子商务网站,他的一些技术上的朋友,给他们提一些建议什么的?

如果说我们要去总结经验,那我可以这样说,就是战略上要藐视,战术上要重视,然后工作一定要在平时,就是你要在平时做得扎实,你才可能有信心去支持这么大规模的访问增长,否则的话肯定支撑不下。现在因为我们外部的B2C网站有慢慢的持续增长,就是这种系统压力增长的话,给他们带来很多的问题,那我觉得其实应该去做的事情是在细节上做文章,真的是把单点去做大做强,最后才能打造整个系统的稳定性。这个我自己称之为木桶效应,就是因为决定你木桶容量的永远是最短的一个板,就是你要不断的发现你的短板。

而且在淘宝另外一个经验是什么呢?我们每年的增长是200%,那你的技术的增长也必须在200%以上,你才能保证能支撑住这么大的增长量。它如果出现高峰期,远远会超过200%,所以说建议大家每半年Review一下自己的系统,以保证你将来200% 的量是可以支撑得住的。现在淘宝,我说句不太好听的话,我们每半年如果系统没有经过Review,没有经过大型的改造,它在下一个半年可能就会出问题。就是我们对大型的结构,几乎持续的在改动,才能支撑这个量。另外一个就是双十一的经验,这么大规模的量的增长,不是你开发在做事情,也不是数据库在做事情,是整个全局在做事情,从你的网络,从你的应用所在的系统,包括你的数据库,还有包括你应用本身,是要一起来看这件事情的。

很简单的道理,如果你只是去做应用,你不知道网络,那网络结构之间的流量,如果在一个单点出现瓶颈的话,很可能出问题,数据库它能做什么?它是做数据库的运维,如果没有前端应用对技术上的支持可以做到分布式,可以做到水平扩容的话,数据库也没有办法做好。而数据库他要去做什么呢?他为了应用要去保证单点的可容灾,单点的可并发,还有持续提高它底层的一些系统的稳定性,网络的话也要依靠应用,应用也是可以赚钱的,刚才说过,我们在双十一的三天,我们就是减轻整个CDN的流量。

那些流量都是要钱的,所以说真的是一个整体在工作,你不要说你一个作为个人英雄你就可以做完所有的事情。在这2010年我们所有的系统改造都是应用和DBA,应用和网络一起在做事情,然后真的才能达到一个很好的效果,否则的话是很难去做事情的。经验咱们说了这么多,这个可能只有当你真的交易量提升以后,你才能去体会的。我也很庆幸我能在淘宝,因为只有淘宝现在的流量给我们带来了这么大的挑战,我也学习了很多,我也成长了很多,好,谢谢。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT