摘要: 一路走来,文景也曾疑惑过:为什么我们不能把活动的时间跨度拉长到3天,或者1周呢?那样我们或许就不必冒着如此大的风险,承受日常峰值是10倍以上的压力啊!然而当他走到现在才深刻的体会到,正是因为这集中爆发的、一次又一次的业务洪峰,在拉着技术往前狂奔,这才铸就了今天这支能战能胜的技术团队,技术应该感谢业务...

情不知如何而起,竟一往情深。
恰如我们。
十年前,因为相信,所以看见。
十年后,就在眼前,看见一切。

当2018天猫双11成交额2135亿元的大屏上,打出这么一段字的时候,参与双11护航的阿里云CDN技术掌舵人姚伟斌(文景),心中涌起一丝莫名的触动。

CDN是最早参与天猫双11的技术之一,伴随双11走了十年,回首十载春秋,无论是业务规模、技术架构,还是这些幕后的工程师们,都发生了翻天覆地的变化。他们的故事虽不如《阿里云这群疯子》一文中那般精彩,但也值得铭记!

技术掌舵人文景:双11是技术小二最重要的事!

11月11日00:19分,文景看到作战室的小伙伴们在轻松地交谈后,他知道双11的流量洪峰已经平稳地渡过了,他开始刷起了淘宝,他在为24小时后的结束仪式采购龙虾。

不同于往年在光明顶(双11作战总指挥室)的忐忑和亢奋,今年文景团队100多名作战成员多了一份从容和镇定,他们分布在不同的办公地,五地在线协同作战。在文景看来,这些年,业务倒逼了技术发展,推动了个人成长。十年双11磨出来的稳定的系统、成熟的作战方案、默契的团队配合,都是这个团队一路走来,身上的不可磨灭烙印。

作为CDN技术掌舵人,虽然文景不是团队中最“老”的同学,但他却历经了淘宝业务飞速发展的几年,见证了从最初服务淘宝和集团内部的CDN,到如今国内服务客户最多的云CDN的每一步技术蜕变。

读书时期的文景是个非常“爱折腾“的学生,去女生宿舍帮忙调通网络,跟着导师接系统开发的“私活”,相对于从书本上汲取营养,他更偏爱从项目锤炼中获取知识。慢慢地,他接触到了嵌入式开发、无线传感网络、Linux、Nginx、Squid,向服务端开发转型。而真正让他感受到作为一个工程师的技术价值感的,是在做开源以后。“当时写了很多开源模块,有一些在Github上有了上千的STAR,我写的代码能帮到成千上万的开发者,甚至有国外的开发者会给我写感谢信,这不仅让技术得到提升,也给了我十分强烈的认同感,也是因为开源,让阿里看到了我。”在加入阿里后,文景负责的Tengine,曾一度跻身全球第十的WebServer。

很幸运,加入阿里的第一年他就赶上了双11。对于当时的淘宝技术人来说,双11是每年最最重要的事情。“对我们来说,最关键的就是在零点那一刻,系统要扛住,降级的措施越少越好“。文景回忆到,当时的技术原则:第一是要对业务有预估,几千万人同时并发的QPS是多少,系统能不能支持;第二,要做技术预案,所有依赖系统的容量是多少,一旦出了问题后的应对方案。”经过头几年双11考验后,系统逐渐具备了在极限的情况下也能正常运行的能力,在高性能、稳定方面有很大提升。到后来,我们技术能力已经远超当年秒杀的规模,当前的技术架构已经足以支撑,所有的技术人这才安心了。“

启航:从新手上路到一路狂奔

高级技术专家李克(空见)参与了整整十年的双11,现在谈起2009年的那个冬天,恍如昨日。“大家都是新手,该怎么准备、怎么配合,基本都是摸着石头过河,CDN当时采用的是硬件方案,性能和灵活性还有很大的限制。谁也没想到电商的业务发展的速度如此惊人,我们的一部分节点水位基本都跑在崩溃的边缘,当时真的是靠几个运维值班同学人工处理的方式撑了过来。”也就是在那年双11之后,淘宝核心系统部门宣布成立,将自研CDN提上了日程。

当然,技术的积淀并不是一蹴而就。空见回忆道:每年我们都会预测第二年的峰值,但是每次都低估了电商的爆炸式增长。在这种高强度的业务压力下,基本上所有的瓶颈都会被我们遇到,内存、CPU、IO、网络,来来回回做了很多轮软件优化和节点架构升级。比如针对负载过高,增加前后端长连接机制,使得每个连接可以服务多个请求。为了降低IO开销,使用一致性HASH策略,将多个机器的磁盘统一使用。在单机上采取内存->SSD->SATA的多层存储策略,动态进行冷热资源的迁移,提升磁盘效率。为了应对峰值压力,我们会提前准备业务锁量、节点压测、降级预案、采购临时带宽等多种措施。在我们的监控和数据还不完善的那个年代,双十一就靠每个人打开多个终端,盯着一批节点,一旦发现机器负载过高,立马进行人工干预。

就是这样,团队靠着盯屏+人工操作,艰难撑过前几年,CDN架构不断定制、优化,团队的技术实力一直在重重挑战之中不断攀升。

转眼来到了2012年,文景认为这一年对CDN非常关键:“第一,我们决定不再采用外部的商用CDN,因为我们发现淘宝的流量,商用CDN是不足以支撑的。原因是淘宝是中国第一个图片这么多的网站,当时的SSD机器还没有这么流行,大部分的CDN厂商还在用SATA的机器,遇到数据量激增的时候,它的IOPS跑不起来,节点立刻会IOB挂掉。第二,当大部分CDN厂商都在用千兆机器,淘宝CDN已经在用万兆机器,我们是中国第一个使用全SSD机器的厂商,并且完成了40G的节点。当时的技术架构是非常领先的。”

演进:机遇和挑战并存的日子里

2013年,随着CDN能力的增强,很多业务已经开始使用CDN,比如秒杀、红包、详情页等,CDN能够offload大量的请求和带宽,避免源站能力不足带来的服务不可用。空见说到:这一年我们在技术上实现静态化和数据化,通过动静分离,抽象出来静态内容,缓存在CDN上,动态部分通过ESI回源异步获取。静态化改造之后,双11扛住了数十倍的业务峰值流量。

在内部业务越来越丰富的同时,CDN的数据化也开始有了产出,第一版的数据平台能够针对每个域名进行统计,提供节点、区域、运营商维度的五分钟粒度数据,包含业务数据,如命中率、带宽、QPS等,监控数据,如RTT、丢包率等。CDN告别了大锅饭时代,开始了精细化的运营,这也为后面CDN商业化提供了基础。

直到2014年,CDN不仅支持集团内部双11,也开始服务外部客户。空见很清楚地记得,在这年双11,团队内部搞起了流量竞猜,工程师们为此设计了一个预测系统,通过每年双十一的历史数据,以及各业务线的预估和实际情况,实时预测晚高峰流量,用来及时调整资源,比如当天上午11点就准确出来晚上高峰在多少T。

2015年对CDN团队来说也同样意义非凡,因为那一年他们险些背了3.25。

当时淘宝上了全站HTTPS,而由于前期压测、对新业务的评估没有做到位,全站HTTPS带来的计算开销导致CPU、内存都开始成为瓶颈。“当双11开始后,别人都在为数据再创新高而欢呼,我们团队的工程师却眼睁睁的看着线上节点内存被打爆,不停重启,当时我在客户现场驻场,真的连死的心都有了。”文景回忆到。

当时的CDN团队已经到了阿里云,经常全中国到处跑,深入客户现场,贴身服务,整个团队的工作重心不再仅仅是为双11做方案和保障。“我们从纯碎的技术人,变成了需要有商业思维的架构师,用CDN这个产品帮助客户去解决问题。也正是因为如此,这次的经历给我们敲响了警钟,后面每当新业务诞生的时候,我们都做足了充分的预案,坚决避免再次重现,更绝不容许这种情况出现在客户身上。”

在2016年,新兴的直播、短视频业务发展迅速,带宽增速非常快,高级技术专家周哲(士豪)认为,团队在经历过数年双11的大考之后,已经开发出高性能、低延时、稳定的缓存系统,我们有能力服务好这么大规模的图片业务,视频业务当然也不再话下。

“但是真正当有大规模的视频点播业务上来之后,我才认识到对视频点播场景理解不足。视频点播对首屏、卡顿体验,以及对整体命中率和回源保护有更高的要求。于是,我们就通过对整个系统完善全链路监控、基于用户体验的调度、提高整体缓存命中率、TCP协议栈优化,来提高视频播放体验。”

原本专注网络的CDN团队,拉上了兄弟团队,搞了小半年的技术攻坚,打磨出了直播全链路保障的方案。这套方案也成功应用在了天猫双11晚会上,空见还记得在2016年团队在护航天猫双11晚会时,当TFBoy出现在屏幕上,带宽直接飙升好几倍,“这也是我第一次见识到了小鲜肉的威力!”

与此同时,优酷加入了阿里大家庭,这给CDN带来了很多大文件加速、视频加速的业务场景,让整个团队的资源建设和技术水平得到了补充。在技术层面,也加强了CDN团队对视频业务场景的理解,完善视频格式实时转封装、全网防盗链、内容版权保护、P2P等相关技术。

从2017年开始,阿里云CDN走上国际化之路,进行大规模海外节点的建设,以满足国内用户出海加速和海外用户加速的需求。与此同时,在经过了2018俄罗斯世界杯、春晚等多次重大活动的洗礼,CDN的团队规模、客户规模、技术实力一齐进阶,整个系统的自动化、智能化、精细化程度与服务能力全面加码,这支能战能胜的团队再次面对双11的时候,已然非常自信从容。

如今:程序员们一起“剁手”度过双11

有了十年的积累沉淀,文景觉得今年双11可以说是丰收的一年。

CDN团队主要支撑了电商和猫晚,整个过程可以说是如丝般顺滑,零故障零卡顿。同时,猫晚直播提供了超高清、高帧率的4K视频,通过频实时处理、转码向全网直播,窄带高清技术能够进一步提升画质,让网友们过足了眼瘾。

CDN为优酷2500万用户提供的视频分发,整个平台的QPS也突破历史峰值。整个服务过程中依赖全链路质量监控、智能自动化调度,值班人员只需要关注数据大盘就能掌控全局了。

在今年双11期间,文景所在的团队也为Lazada提供电商CDN加速保障,同时结合直播解决方案帮助Lazada把双11晚会推送到泰国、马来西亚,和东南亚人一起狂欢双11。

空见半玩笑半自豪地说:“以前奢望地喝喝茶、购购物过双11的梦想在今年终于实现了,2135亿里也有我们值班人员的一份贡献。”

一路走来,文景也曾疑惑过:为什么我们不能把活动的时间跨度拉长到3天,或者1周呢?那样我们或许就不必冒着如此大的风险,承受日常峰值是10倍以上的压力啊!然而当他走到现在才深刻的体会到,正是因为这集中爆发的、一次又一次的业务洪峰,在拉着技术往前狂奔,这才铸就了今天这支能战能胜的技术团队,技术应该感谢业务!

十年双11,就如同一部浩浩荡荡的阿里技术发展史。CDN就这样用它独有的起伏,添上了浓墨重彩的一笔。期待下一个十年,我们继续一路相随。

点击了解11月CDN、ENS、视频云全线产品限时优惠活动


本文作者:樰篱

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

我们知道CDN护航了双11十年,却不知道背后有那么多故事……相关推荐

  1. 我们知道CDN护航了双11十年,却不知道背后有那么多故事

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 一路走来,文景也曾疑惑过:为什么我们不能把活动的时间跨度拉长到3天,或者1周呢?那样我们或许就不必冒着如此大的风险,承 ...

  2. 护航Lazada双11购物节 阿里云CDN全球化火力全开

    2018年11月12日零点--东南亚最大的电子商务公司Lazada 2018双11购物节正式收官.这是一场超过2000万的消费者在Lazada网站上及APP上浏览和疯狂抢购的盛会. Lazada是东南 ...

  3. 1 小时 47 分钟破 1000 亿, 双 11 十周年,你剁手了多少钱?

    2018 年 11 月 11 日凌晨,上海. 前半夜猫晚狂欢的歌声和欢呼声已经散去,一个显示着双 11 销售额数字的屏幕成为媒体中心现场的焦点:从 0 点 0 分 0 秒开始,在数以毫秒计的时间变换中 ...

  4. 深入探访支付宝双11十年路,技术凿穿焦虑与想象极限 | CYZONE特写 1

    小蚂蚁说: 双11十年间,交易规模的指数级增长不断挑战人们的想象力,而对蚂蚁技术团队来说,这不仅是一场消费盛宴,而是无数次濒临压力和焦虑极限的体验,更是技术的练兵场.如今双11对蚂蚁金服而言,已经绝不 ...

  5. 迎双11十周年,OceanBase 2.0挑战新巅峰

    OB君:2018年是"双11"十周年.2009年11月11日,当时的淘宝商城(天猫的前身)举办了首届网络促销活动,当天销售额为0.5亿元:2017年的双11,天猫.淘宝总成交额16 ...

  6. 阿里巴巴 CEO 张勇:双 11 十周年,已成为商业领域的奥林匹克

    2009 年,时任淘宝网首席运营官兼淘宝商城总经理的张勇,决定在当年的 11 月 11 日打造一个线上商家的促销活动,其目的只是为了淘宝商城的生存和发展:那一年的双 11 ,淘宝商城共有 27 个品牌 ...

  7. 第五章 业务架构,5.5 菜鸟双11“十亿级包裹”之战(作者:兰博)

    5.5 菜鸟双11"十亿级包裹"之战 前言 每年的双11都在刷新物流的世界奇迹,但由于大数据和协同,每次都将看似不可能完成的任务加速完成.以2013年-2016年的一组数据为例,从 ...

  8. 2018双11倒计时 | 双11十年牧码梦

    2018年,双11迎来了十周年. 十年间,依赖于迅速崛起的互联网技术以及各项新兴技术的沉淀,阿里巴巴缔造了全球数字经济时代的第一"操作系统".在这个操作系统上,让全球消费者和商家买 ...

  9. 菜鸟双11“十亿级包裹”之战

    前言 每年的双11都在刷新物流的世界奇迹,但由于大数据和协同,每次都将看似不可能完成的任务加速完成.以2013年-2016年的一组数据为例,从签收时间看,2013年双11包裹签收过1亿用了9天,201 ...

最新文章

  1. 《CUDA C编程权威指南》——1.5节总结
  2. Cookie与Session的区别
  3. (转)hibernate 注解的问题(异常)集合
  4. Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
  5. 致初级开发者的一封信:坚持写代码!
  6. random_state ---summary
  7. Atom飞行手册翻译: 2.7 ~ 2.10
  8. h5弹框滑动 ios_微信 iOS 版更新:细节大更新,你值得拥有
  9. 人工智能 21 个子领域高被引学者Top 3
  10. 笨办法学 Python · 续 练习 29:`diff`和`patch`
  11. shell命令xargs
  12. cin.get(),cin.getline(),getline(),gets(),getchar()
  13. 单板计算机中VPX,VME,cPCI,AdvanceMC,PMC
  14. prewitt算子实现
  15. 产品读书《极简生活法则》
  16. java openCV调用摄像头并以窗体显示出来
  17. mono for andriod 自动提示输入控件AutoCompleteTextView
  18. 三级无刷交流发电机matlab模型,三级无刷交流发电机调压系统的建模及其仿真分析...
  19. 计算机组成原理指导,计算机组成原理课程复习指导课件
  20. innerText和innerHTML区别

热门文章

  1. 小布老师oracle学习笔记
  2. 网站木马检验的方法介绍
  3. Hudi async/inline compaction
  4. 软工网络15团队作业4——Alpha阶段敏捷冲刺(一)
  5. 十进制转十六进制C语言实现
  6. 关于 Dynamic atexit destructor for ***
  7. Android 手机玩转技巧
  8. Python 学习笔记之 networkx 使用
  9. python3 http post get 收发数据
  10. hog特征提取python代码_HOG特征提取