阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年
导读:提到阿里云CDN,不得不提技术掌舵人姚伟斌(文景),虽然他不是团队中最“老”的同学,但他却历经了淘宝业务发展最为飞速的几年,见证了从最初服务淘宝和集团内部的CDN,到如今国内服务客户最多的云CDN的每一步技术蜕变。在他看来是业务在推动着技术的发展,技术带动了人的成长,过程中不乏迷茫和低谷,但最终确实是一次次的业务洪峰把CDN技术推向了顶端。
文景,阿里云CDN技术掌舵人
缘起开源 怀着赤子之心加入阿里
读书时期的文景是个非常“爱折腾“的学生,经常去女生宿舍帮忙调通网络,也接了很多系统开发的私活项目。在研究生阶段接触到了嵌入式开发、无线传感网络、Linux,底层网络,向服务端开发转型。
当时比较火的是金融和通信专业,但是文景对开发就是如痴如醉的喜爱,虽然他的学习成绩不算拔尖,但是因为项目的实操历练经验丰富,他在毕业时候顺利的进入了一家互联网大厂。也就是在这份工作中,他接触到了很多服务端开源软件,如Nginx、Squid、Varnish、Lighthttpd等,也为后续进入阿里奠定了基础。始终认为开源对拓宽程序员的视野和提升代码水平非常重要,所以他开发了很多Nginx开源模块,因为不断的打磨,有一些项目在Github上有上千的星了。回忆当初,技术人员需要一定的价值认同,要么在业务上厉害,有上千万的用户,要么就是技术价值的认可,你做的东西不仅自己在用,成千上万的开发者也在用,甚至有国外的开发者会给你写感谢信,这是非常好的技术认可。
“后来当时的公司业务发展比较慢,遇到了发展瓶颈,而因为自己在开源领域的一些成就,被阿里看中。当时阿里属于业务早期,我心里怀疑这公司到底行不行,没想到面试官竟然是开源领域非常有号召力的“大神”,我当时立刻就决定加入阿里了。有时候程序员选择一份工作不是看业务多强大,而是身为程序员的梦想使然。“文景说。
来到阿里后,文景负责Tengine的研发,从一个人单干,逐渐发展到小团队,Tengine也成为集团95%以上业务的入口。在阿里节奏很快,业务每年的增长几倍甚至几十倍,这十年来有三千倍的增长,这过程中也深刻体会到人和公司的成长是同步的。Tengine业务复杂度非常高,支持整个阿里集团的业务。作为一个支撑性的部门,更需要自驱力,主动做好,主动邀请别人来使用,并且在期间主动解决问题让业务变得更好。
在阿里这么快节奏的工作环境之下,文景还坚持付出额外的时间来做开源,有一段时间Tengine曾跻身全球前十的WebServer,这也是团队成员至今都非常自豪的事情。
这十年,双11和这些程序员“相爱相杀”
文景很幸运,加入阿里的第一年他就赶上了双11。对于当时的淘宝技术人来说,双11是每年最最重要的事情。“对我们来说,最关键的就是在零点那一刻,系统要扛住,降级的措施越少越好“。文景回忆到,当时的技术原则:第一是要对业务有预估,几千万人同时并发的QPS是多少,系统能不能支持;第二,要做技术预案,所有依赖系统的容量是多少,一旦出了问题后的应对方案。”经过头几年双11考验后,系统逐渐具备了在极限的情况下也能正常运行的能力,在高性能、稳定方面有很大提升。到后来,我们技术能力和资源储备,已经远超当年秒杀的规模,当前的技术架构已经足以支撑,所有的技术人这才安心了。“
当然,技术的积淀并不是一蹴而就。在这种高强度的业务压力下,基本上所有的瓶颈都会被文景团队遇到,内存、CPU、IO、网络,来来回回做了很多轮软件优化和节点架构升级。为了应对峰值压力,团队也提前准备业务锁量、节点压测、降级预案、采购临时带宽等多种措施。在我们的监控和数据还不完善的那个年代,双11就靠每个人打开多个终端,盯着一批节点,一旦发现机器负载过高,立马进行人工干预。
转眼来到了2012年,文景认为这一年对CDN非常关键:“第一,我们决定不再采用外部的商用CDN,因为我们发现淘宝的流量,商用CDN是不足以支撑的。原因是淘宝是中国第一个图片这么多的网站,当时的SSD机器还没有这么流行,大部分的CDN厂商还在用SATA的机器,遇到数据量激增的时候,它的IOPS跑不起来,节点立刻会挂掉。第二,当大部分CDN厂商都在用千兆机器,淘宝CDN已经在用万兆机器,我们是中国第一个使用全SSD机器的厂商,并且完成了40G能力的节点上线。当时的技术架构是非常领先的。”
随后的几年,随着CDN能力的增强,双11扛住了数十倍的业务峰值流量,而且很多业务已经开始使用CDN,比如秒杀、红包、详情页等。后来CDN不仅支持集团内部双11,也开始服务外部客户。那几年的发展可以用一路狂奔来形容,每年都有新的业务产生,比如HTTPS、直播、短视频等,文景带领着团队不仅要做产品商业化、要贴身服务客户,还要去快速适应并调整面向新业务的技术方案、优化用户体验、技术攻坚、节点建设,同时也要对集团和客户的双11做全链路的保障方案,双11每年带宽增速在50%-100%,文景的脚步从未停歇。
跌倒了,爬起来继续上路狂奔
这一路,文景经历过高峰,当然也有跌落低谷,他认为2015年对团队来说意义非凡,因为那一年他们险些背了3.25。当时淘宝上了全站HTTPS,而由于前期压测、对新业务的评估没有做到位,全站HTTPS带来的计算开销导致CPU、内存都开始成为瓶颈。“当双11开始后,别人都在为数据再创新高而欢呼,我们团队的工程师却眼睁睁的看着线上一些节点内存被打爆,不停重启,当时我在客户现场驻场,真的连死的心都有了。”文景回忆到。
当时的CDN团队已经到了阿里云,经常全中国到处跑,深入客户现场,贴身服务,整个团队的工作重心不再仅仅是为双11做方案和保障。“我们从纯碎的技术人,变成了需要有商业思维的架构师,用CDN这个产品帮助客户去解决问题。也正是因为如此,这次的经历给我们敲响了警钟,后面每当新业务诞生的时候,我们都做足了充分的预案,坚决避免再次重现,更绝不容许这种情况出现在客户身上。”
在此之前,文景带领的CDN团队已经进入阿里云,完成了从“甲方”到“乙方”的转型。“我们还是很偏技术思维的,我们认为只要把自己这块的技术做好做透,一切就顺理成章了。最开始我们在Tengine团队才不到10个人,是纯技术团队,负责软件开发。在转做CDN后,我们要去owner整个系统,考虑的东西更多,系统稳定性是第一优先级。如今,到了阿里云,我们需要吃透业务,所有技术人员都要去跑客户,去了解客户的需求,研究如何更好的服务他。这对我们来说其实是一个角色的转变,技术与商业结合的思维转变。”文景说到。
转型所带来的彷徨并不是所有人都能顺利度过,一度有很多技术人员抱怨业务做太多了,甚至有人离开。文景做为团队负责人,责无旁贷要帮助大家去适应。他当时鼓励工程师们“荤素搭配”自己的工作,要肩负起偏业务性的工作,当然也留出精力去做系统性的纯粹开发,这对工程师的发展是非常有好处的。他也不断地用自己的亲身经历告诉大家,业务,能让技术人员更好地了解产品的设计、提升去场景的理解。阿里全员一直崇尚着“客户第一”,在文景看来,客户第一就是真正地了解客户的需求,再把它变成产品,解决更多客户的问题,而不是你觉得这个产品牛,硬塞给客户去用。总之,技术牛不牛,要拿商业来证明。
到如今,文景所在的阿里云CDN团队已经拥有遍布全球的2500+节点和120T带宽能力储备,同时凭借全球服务能力和产品技术优势被评为全球级(Global)服务商,即面向全球五大洲提供围绕密集商业和消费城市的接入服务。
给年轻技术人一些建议
最后,对于想了解或者想踏入CDN这一领域的技术人员,文景也给出了一些建议。
了解行业
CDN这个产品的历史,比云计算还要久,因为互联网的发展而应运而生的产品。现在,这行业是充分竞争的行业,它已经有成熟的解决方案和开源的软件,最终决定性产品的核心竞争力就是:稳定性、成本和质量,厂商们都在寻求更好地突破。阿里云CDN通过历年双11沉淀下来的技术和快速响应能力,已经在四年时间内,从零做到了中国最大的云CDN。未来的CDN行业,会更注重客户价值,面对客户关于低成本、服务质量、安全性、高清视频等不同价值需求点,需要不同场景和技术来满足。
研究开源,专注,不断学习
首先,文景认为去选择优秀的开源软件是一种好的方式,Github是程序员非常好的名片,开源软件写的好的人,代码、沟通能力、落地能力都不会差。第二,一定要专注,决定了方向后,至少要沉淀3年左右的时间,当你成为这个行业的专家,去任何公司都会发挥很大的价值。第三,要不断学习,计算机行业日新月异,对于技术人最大的挑战就是不能停止,要不停去接触新的东西。每年的业务都是两三倍的增长,你会发现你原来的技能已经跟不上业务增长的步伐,在互联网这么快速发展的环境和阿里发展这么迅速的公司,不学习就会被淘汰,绝对不能固步自封。
最后,欢迎加入我们!阿里云CDN团队诚招技术人才啦!点此查看最新职位!
本文作者:山哥在这里
本文为云栖社区原创内容,未经允许不得转载。
阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年的更多相关文章
- 突破!阿里云CDN实现毫秒级全网刷新
通常在某网站使用了CDN节点来实现内容分发加速后,当源站内容更新的时候,CDN刷新系统会通过提交刷新请求将CDN节点上的指定缓存内容强制过期.当用户访问的时候,CDN节点将回源获取最新内容返回给用户, ...
- 阿里云 CDN 业务基于边缘容器的云原生转型实践
导读:本文基于边缘容器的阿里云 CDN 云原生实践, 涵盖了边缘容器的背景和趋势,边缘托管集群 ACK Managed Edge K8s(文中简称“Edge@ACK”) 的能力.架构,以及基于边缘容器 ...
- C#调用阿里云CDN API刷新缓存
使用CDN必须要解决CDN缓存的问题,要么在每次更新文件时生成不同的URL,要么在每次更新文件时刷新CDN缓存.我们在一个实际应用场景中用到了后者,所以需要调用阿里云CDN的API进行缓存刷新的操作. ...
- 云计算之路-阿里云上:访问阿里云CDN上的图片,自动跳转到百度首页
昨天有用户向我们反馈一篇博文(一条语句导致CPU持续100%)中的部分图片不能显示,我们的图片访问用的是阿里云CDN,原以为是某个CDN节点不稳定的问题,但在排查时发现这些图片不能显示竟然是因为请求时 ...
- 阿里云-CDN
1.什么是CDN 内容分发网络,意思是将内容(静态资源,如文件等)缓存到全球加速节点,用户请求这些内容时,请求将调度到最近的CDN节点,加快了访问速度. 2.CDN原理 1.用户(北京)向www.a. ...
- 通过AccessKey调用阿里云CDN接口刷新CDN资源案例
通过AccessKey远程调用阿里云CDN接口,快速实现自动化集成部署. CdnService.java package com.nfky.cdn; import com.aliyuncs.Defau ...
- 阿里云CDN+OSS完成图片加速
我们使用React Native开发APP,在列表中显示图片时,列表框经常出现长时间的空白.经过稍微研究和参考其他人的经验,我们知道React Native的ListView以及后来改进版的FlatL ...
- 阿里云CDN接入踩坑记录
最近负责的系统安全要求接入CDN,避免DDOS之类攻击,然后华丽丽踩了两个大坑.回顾问题原因后,发现还是相关人员都对CDN原理不够熟悉.了解导致. 坑一:默认支持的文件上传最大是300M 问题现象: ...
- 什么是阿里云CDN
阿里云内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络.阿里云CDN分担源站压力,避免网络拥塞, ...
随机推荐
- java.lang.IllegalStateException: 1 matchers expected, 5 recorded.
这是一个很神奇的错误. 常规的出错是因为在mock方法里,其中某一个或者几个参数使用了EasyMock.anyxx(),而其他的使用了具体的值. java.lang.IllegalStateExcep ...
- spring JdbcTemplate最基本的使用
package com.com.jdbctemplate; import org.springframework.jdbc.core.JdbcTemplate; import org.springfr ...
- 2016计蒜之道复赛A 百度地图的实时路况
百度地图的实时路况功能相当强大,能方便出行的人们避开拥堵路段.一个地区的交通便捷程度就决定了该地区的拥堵情况.假设一个地区有 nnn 个观测点,编号从 111 到 nnn.定义 d(u,v,w)d(u ...
- 上传同步github
…or create a new repository on the command line echo "# testproject" >> README.md ...
- Laravel(PHP)使用Swagger生成API文档不完全指南 - 基本概念和环境搭建 - 简书
在PHPer中,很多人听说过Swagger,部分人知道Swagger是用来做API文档的,然而只有少数人真正知道怎么正确使用Swagger,因为PHP界和Swagger相关的资料实在是太少了.所以鄙人 ...
- 微信小程序--每个独立的page的page.json只能修改window属性
app.json 配置项列表 app.json文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. window配置 用于设置小程序的状态栏.导航条. ...
- webpack学习之——npm的安装依赖情况
这几天一直在研究webpack模块话打包工具,在网上的资源还是蛮丰富的,现在总结下这块的内容,需要好好的研究下,如果有问题,还请指正. 先是第一个为问题,就是npm-install --save 和n ...
- Hdu 1068 最小路径覆盖
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Day2-转自金角大王
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- Loadrunner常用分析点
Loadrunner常用的分析点 一.在Vuser(虚拟用户状态)中 1.Running Vusers:提供了生产负载的虚拟用户运行状态的相关信息,可以帮助我们了解负载生成的结果.(即用户在几分钟左右 ...