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

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

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

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

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

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

(文景在双11会场选购宝贝)

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

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

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

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

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

(空见在双11护航现场与“战友们”讨论)

当然,技术的积淀并不是一蹴而就。空见回忆道:每年我们都会预测第二年的峰值,但是每次都低估了电商的爆炸式增长。在这种高强度的业务压力下,基本上所有的瓶颈都会被我们遇到,内存、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这个产品帮助客户去解决问题。也正是因为如此,这次的经历给我们敲响了警钟,后面每当新业务诞生的时候,我们都做足了充分的预案,坚决避免再次重现,更绝不容许这种情况出现在客户身上。”

(CDN团队2017双11合影 左三空见 右三士豪 右六文景 )

在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护航了双11十年,却不知道背后有那么多故事……的更多相关文章

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

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

  2. 【阿里聚安全·安全周刊】阿里双11技术十二讲直播预约|AWS S3配置错误曝光NSA陆军机密文件

    关键词:阿里双11技术十二讲直播丨雪人计划丨亚马逊AWS S3配置错误丨2018威胁预测丨MacOS漏洞丨智能风控平台MTEE3丨黑客窃取<权利的游戏>剧本|Android 8.1   本 ...

  3. 阿里云移动研发平台EMAS,是如何连续5年安全护航双11的?

    摘要: 阿里云作为阿里巴巴IT基础设施的基石,每年的双十一都面临前所未有的巨大技术挑战.阿里云的EMAS移动研发平台,连续5年支持双11,不仅保障了手机淘宝.支付宝这些阿里巴巴集团App的使用体验,也 ...

  4. [转]15年双11手淘前端技术巡演 - H5性能最佳实践

    [原文地址]:https://github.com/amfe/article/issues/21 前言 2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 ...

  5. 第四章 电商云化,4.2 集团AliDocker化双11总结(作者: 林轩、白慕、潇谦)

    4.2 集团AliDocker化双11总结 前言 在基础设施方面,今年双11最大的变化是支撑双11的所有交易核心应用都跑在了Docker容器中.几十万Docker容器撑起了双11交易17.5万笔每秒的 ...

  6. 【TOP100案例专访】当当网工程师林嘉琦谈双11大促经验及APM实践

    导读:第七届TOP100全球软件案例研究峰会将于11月30日-12月3日在北京国家会议中心举办,本届峰会以“释放AI生产力 让组织向智能化演进”为开幕式主题,旨在推动企业在趋势下拥抱AI.探索和思考A ...

  7. 淘宝应对"双11"的技术架构分析

    原文地址:http://kb.cnblogs.com/page/193670/ 双“11”最热门的话题是TB ,最近正好和阿里的一个朋友聊淘宝的技术架构,发现很多有意思的地方,分享一下他们的解析资料: ...

  8. 2684亿!阿里CTO张建锋:不是任何一朵云都撑得住双11

    2019天猫双11 成交额2684亿! "不是任何一朵云都能撑住这个流量.中国有两朵云,一朵是阿里云,一朵叫其他云."11月11日晚,阿里巴巴集团CTO张建锋表示,"阿里 ...

  9. 阿里P8架构师谈:阿里双11秒杀系统如何设计?

    秒杀是电商业务里的标志性事件,这样的典型高并发场景会遇见什么样的挑战呢,然后又是如何来解决的呢? 秒杀活动场景 淘宝双11秒杀场景,大量的用户短时间内涌入,瞬间流量巨大(高并发),比如:1000万人同 ...

随机推荐

  1. linux视频录制,推流处理

    1.linux视频合成(视频后缀要一致) ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -lavfi hstack=inputs=3 4.mp4 (input=3表示希望合并的视 ...

  2. fildder

    来自 墨痕 :https://home.cnblogs.com/u/ink-marks/ FIDDLER的使用方法及技巧总结   一.FIDDLER快速入门及使用场景 Fiddler的官方网站:htt ...

  3. 调用获取学生信息的接口,保存到excel里面

    # 2.http: // doc.nnzhp.cn / index.php?s = / 6 & page_id = 14# 调用获取学生信息的接口,保存到excel里面 import requ ...

  4. CP343-1 扩展ProfibusCPU 314C-2DP

    1. MPI编程电缆连接PLC ,设置接口为PC Adapter MPI.1,如下图所示 2. 硬件组态插入组态,建立ethernet 网络,编译后下载 3.CP343-1安装上后,CPU run不起 ...

  5. js将一篇文章中多个连续的<br>标签替换成两个连续的<br>标签

    写本文的目的是今天恰好有一个之前做SEO的同事问我怎样把一篇文章中多个连续的br标签替换成两个连续的br标签,这里就牵涉到SEO层面的问题了. 在做SEO优化的时候,其中有一个需要注意的地方就是尽量减 ...

  6. codeforces_Codeforces Round #541 (Div. 2)_abc

    A. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. 【CSS 第六天】三种简历

    1.盒子模型 2.三种简历 利用float和CSS制作内容一致,但是样式不一致的三种简历. 代码 3.效果 style-1 3.2效果2 效果三

  8. 使用jQuery.form库中ajaxSubmit提交表单时遇到的一些问题

    初入前端,网上找的很多资料都不够详细,导致遇到很多问题,现记录如下: 1.首先引入 <script src="~/Scripts/jquery-1.10.2.js">& ...

  9. unittest中的测试固件

    运行下面的两段代码,看看有什么不同? 第一段: import unittest from selenium import webdriver class F2(unittest.TestCase): ...

  10. Python练手例子(9)

    49.使用lambda来创建匿名函数. #python3.7 MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y MINIMUM = lamb ...