一个改变世界的“箱子”
撰文| 云希
编辑| 猛哥 丹如
一个时代的变革往往始于一个微小的创新。
1956年,对航运一窍不通的卡车大亨麦克莱恩第一次将集装箱用于货物运输时,恐怕连他自己也想象不到,一个普通的铁箱子将会引发一场全球的巨大变革。
集装箱尺寸一致,运输流程标准、系统。每个箱子只装一件货物,能在港口、火车、轮船间自由装卸。它大大提升效率的同时,也让运输成本降低了90%,从实质上打破了各个国家、港口之间的物流壁垒。
这个箱子将世界就变成了一座大工厂,促使了全球分工和资源流通——苹果找到中国的富士康,丰田公司创造出“及时生产”,美国人吃到了巴西的牛肉……一个微不足道的创新让世界的经济和政治格局都为之改变。
在IT届,这个箱子被称为“容器”。
和集装箱一样,容器将应用封装好后,便可以在任意环境之下自由装卸、敏捷运行,提高研发效率的同时,大大降低了运维成本,从而掀起科技圈的新浪潮。
自2013年Docker出现以来,“容器”便成为云计算领域炙手可热的关键词。2019年公开信息显示,Docker开源版的下载次数超过800亿次,有约有三分之一的财富100强和五分之一的全球500强公司都使用Docker企业版。权威机构Gartner预测,2022年将有75%的企业使用容器。
不同于以往追随硅谷的姿态, 国内的容器化实践早在10年前便已拉开帷幕。
性能危机
这其中,布局最早的是阿里。
2011年,随着云计算的普及,阿里巴巴走过物理机时代,全面迈向虚拟机。
如果说物理机是家里的电脑,那虚拟机则是在电脑上模拟出的许多台小电脑,它拥有完整的软硬件功能,使用体验就跟电脑一致。但“虚拟化”有性能损耗。如果一台100个CPU的物理机能虚拟出来100台小电脑,那么只有90台真正干活,另外10台要额外做管理工作,损耗由此形成。
规模小时损耗无伤大雅,但阿里数万集群,光是虚拟化过程中耗损的算力就抵得过一家中型互联网公司。
2011年,为了缓解巨大的虚拟化损耗,淘宝的第一个程序员蔡景现(花名:多隆)和第一代架构师林昊(花名:毕玄)在无心插柳中研发出了阿里第一代容器——T4。
T4同样基于物理机而来。普通虚拟机将整个操作系统运行在虚拟的硬件平台上,进而提供运行环境供应用程序运行,而T4则直接在宿主平台上加载运行应用程序。
所以T4使用体验和虚拟机一致,却能减少性能损耗,一经推出便大受欢迎,并逐渐取代虚拟机,承担了集团整个交易系统的计算资源。
但它依然无法解决阿里高企的运维成本。
彼时,为了维系庞大集群的稳定,阿里运维团队超过300人,24小时轮班,依然追不上逐年攀升的业务量。“双11”期间,用户暴涨,应用激增,数以百计的工程师更要手动扩容,用人肉筑起堤坝才不至于被流量洪峰冲倒。
也是在这一年,大洋彼岸一家名不见经传的Dotcloud公司开源了其容器创建技术Docker。
容器并不是Dotcloud公司的创新,但他们开源的Docker为容器引入了镜像机制。
镜像,简而言之是一个压缩包, 里面包含应用代码和所依赖的所有文件和目录。将镜像打包上传到镜像库后,无论在何种环境,工程师只需到库里下载镜像,便能重新创造出跟之前一摸一样的容器,无缝操作。
有了它,工程师就像拥有魔法,能在任意环境中,快速构建出需要的容器。
它完美地解决了 传统IT流程下的两大难题——发布成功率低和运维压力。
传统的IT流程下, 业务、研发、运维职责不明晰,运维要一次次调整参数来保障应用运行稳定。
但用了Docker,情况便大为不同。研发工程师在写应用代码的同时,便会交代清楚运行所依赖的环境,应用发布成功率自然能提高,也减小了运维压力。这也形成了一种DevOps (研发运维一体化)的工作模式。
Docker扇动翅膀,科技圈出现容器风暴。拥有了镜像后的容器,成为了IT届的“集装箱”,与之配套的技术、标准也纷纷上线。
微软、谷歌、亚马逊等巨头公司热烈拥抱,先前濒临淘汰的小公司Dotcloud成为炙手可热的新星,尔后还直接将公司名字改成了大功臣Docker,并利用Docker着手商业化。
大洋彼岸的阿里不遑多让。2015年,林昊招募林轩加入团队,持续完善T4。后者敏锐地捕捉到了这股容器化热浪。他和林昊、蔡景现一致决定将T4镜像化升级,以保持技术先进性。
在林轩的摇旗呐喊下, 杨育兵(花名:沈陵)、张振(花名:守辰)、一啸等人先后加入,成为最早的容器小分队。大半年后,他们成功将T4升级为Alidocker。
一盆凉水
容器团队期望将T4全部替换成Alidocker。原想一鸣惊人,没承想等来的却是冷板凳。
如先前所说,容器,作为封装业务应用的集装箱,如若替换便会带来一整条研发、运维链路的改变。而阿里的技术体系之复杂世所罕见,一个参数的改变都有可能引发故障,故而甚少业务部门愿意拿身家性命冒险。
但容器团队有自己的考虑。在技术迭代频仍的科技圈,即便是具有垄断地位的产品、技术和公司,也会骤然被时间的浪潮打翻,
危机感是科技公司的达摩克利斯之剑。
2015年,Docker正式成为了容器届的标准,但阿里却还在使用T4。
不能再等了!容器团队夹着PPT,奔走宣扬,为了让业务团队留下深刻印象,林轩介绍杨育兵“这是我们容器小王子”,而张振是“镜像小王子”,他还在内网写下长帖疾呼《阿里人请用Alidocker !》
一番操作下,大家记住了Alidocker和两位王子,依然无动于衷。有主动找上门的,问的都是T4,也有禁不住热情的,送上几个没有名字的边缘应用。
转眼来到2016年6月,团队只接到30多个应用。此时各业务已开始筹备双11,说服其用Alidocker更是难上加难。
林轩急了,在一次会议中舌战百人,痛陈镜像化的必要性:“弓马再娴熟,迟早要换成火枪大炮原子弹。不接受先进的文明,总有一天像大清朝一样完蛋!”
事情陷入僵局,时任阿里集团CTO张建锋(花名:行癫)站了出来,“我支持Alidocker,在线应用要100%容器化!”
张建锋
对于容器化,张建锋有完整的布局。容器的优势有目共睹,阿里业务逐年爆发,容器规模化后,跑在云服务器上是必然趋势。
阿里云的飞天操作系统已经可以成熟调度数万台物理机,但因为虚拟化损耗,容器依然只跑在物理机上,无法享受到上云便利。
为了给容器打造最合适的底座,在2016年双11复盘会上,张建锋点将张献涛(花名:旭卿)为首的弹性计算团队,打造神龙服务器,攻克云计算十数年的难题——将虚拟化损耗降低为零。
从上层的容器到下层的资源底座神龙,如此,阿里便能构建敏捷、高效的业务运行体系。
在张建锋的支持下,阿里容器化的进程按下“加速键”, 一场横跨了5个事业部,9个团队,11个业务域的容器化改革拉开帷幕。
初露锋芒
容器掀起的风暴继续在科技圈狂吹,若想将Docker进行大规模应用,编排、调度就显得尤为重要。
2015年,谷歌的K8S、Docker的Swarm、以及开源社区的Mesos在容器编排市场呈“三足鼎力”之势。
为了避免Docker一家独大,谷歌(Google)、红帽(RedHat)等开源玩家们,共同成立了一个名为CNCF(Cloud Native Computing Foundation)的基金会,它本质上是以K8S为核心的开源社区。
容器编排市场进入长达两年的混战。期间,阿里容器化进程也如火如荼。
Alidocker起初表现不稳定,发布卡单、响应延时、镜像下载慢、扩容难……每一个Bug的出现,都会带来一次业务方的跳脚。容器团队7乘24小时轮班值守,为了与不同的业务高度匹配,他们每周迭代十几个版本,杨育兵专门写了《Alidocker的1000个细节》来答疑解惑。
2016年9月,双11进入全链路压测,容器团队一举一动都在聚光灯下。
第一次压测,Alidocker因为发布链路慢,导致压测失利。为了解决问题,杨育兵把上下游相关系统全摸了一遍;张振做镜像到吐,直到双11所有交易业务都能跑通。
时间逼近,连阿里集团CEO逍遥子都忍不住过问:“毕玄,你觉得今年上Alidocker靠不靠谱?”
开弓没有回头箭,双11如约而至。零点,大屏幕数字飞速翻滚。容器团队紧紧盯着屏幕。
17.5万笔/秒,订单创建峰值再破记录。数百应用,20万容器,100%核心流量,Alidocker成功扛住,数据处理能力提升5倍。
万重大山落地,容器团队露出久违的笑容。
突破瓶颈
容器编排市场的国际战局也逐渐清晰。
K8S在开源社区Github上的各项指标一骑绝尘,将Docker原配Swarm远远甩在身后,2017年底,随着Docker宣布支持K8S。K8S最终胜出,成为容器编排平台的标准。
有了K8S这个护城河,CNCF社区迅速推出了一系列容器生态的知名工具和项目。大量的公司和创业团队开始围绕CNCF而非Docker制定容器化策略。社区日益繁荣,号召力贯彻中外。
AWS、Azure、阿里云、谷歌云和IBM云等前五大云厂商都已经成为了CNCF 会员,并在自己的云平台中提供了K8S服务——国外媒体称“他们确认了云原生和容器是企业计算的未来”。
珠玉在前,国内公司也纷纷加快了容器化的步伐。华为从2017年开始,在内部支撑华为终端云服务等核心业务容器化。一年后, 腾讯自研业务开始上云,并计划完成云原生技术的改造。
阿里步子更大,在线业务于2017年实现全面容器化(Alidocker正式更名为PouchContainer),容器数量上升至百万。
带领团队完成这项工程的,正是丁宇(花名:叔同)。2017年初,丁宇接手容器团队,阿里备战双11的制胜法宝——全链路压测,也是他的手笔。
丁宇
码头上的集装箱仅仅凭借箱子本身,并不能实现如此巨大的变革。麦克莱恩的伟大之处在于,围绕着集装箱提出了全新的货运体系,包括管理者、港口、货船、起重机、卡车和全新的交付流程等。
IT行业同样如此,容器只是集装箱和简单吊装,背后的编排、调度等配套设施同样不可或缺。
为了让容器实现最佳性能,团队将PouchContainer融合整套设施,升级为ASI容器服务(Alibaba Serverless Infrastructure)。
使用ASI容器服务后,用户只需关心容器中的应用即可,至于容器的创建、调度、运维管控等一系列琐事,交给容器厂商即可。
为了能让阿里集团、阿里云及外部用户都享受到同样的容器服务,ASI势必要兼容通用标准K8S和Docker,但难度极大。
“你得保证几百万个容器迁移到ASI时运行稳定,不掉链子,”ASI项目负责人黄涛(花名:智清)说,“这就像给一个百米冲刺的人移植心脏。”
而且K8S有一个致命弱点,当集群达到万级规模,便会出现延迟和拒绝访问,无法适应动辄上万的集群,这也是业界难以突破的瓶颈。
Docker同样有弱点,创建容器时镜像下载慢,无法实现快速扩容。
黄涛不敢掉以轻心,选出3人组成突击队,为大部队探路。花了2个月时间,试遍了所有方法,依然想不出万全之策。
林昊远赴海外,请来张瓅玶(花名:谷朴)和李响。张瓅玶曾在谷歌管理着云原生资源池。李响则是ETCD分布式存储系统的作者,ETCD一经问世,就成为了业界标准。2019年,李响成为CNCF 9 位 委员之一,也是委员会有史以来首位中国委员。
引发ASI的性能瓶颈的重要原因之一,便是管理节点中的存储瓶颈。为了突破存储性能,阿里技术团队改进ETCD底层存储引擎的分配算法,将存储空间从原本的2GB提升为100GB,且没有延时。除了存储,团队还通过提前加载节点所需数据,减少同步事件等方式,拓展了管理节点的各项性能。
与此同时,PouchContainer也迎来喜讯。之前创建容器时,必须完整地拉取镜像,一旦遇到大规模的业务量,扩容速度甚至会飙升至10分钟。而团队研发出了秒级镜像技术,让镜像能够按需加载,实现了秒级下载扩容。
前排左一:黄涛,右二:张振 ;后排左四:杨育兵,右三:林昊,右二:林轩
突破两大瓶颈,ASI打破业界难题,实现超万级节点稳定运行。阿里内外越来越多的业务方接入。
血的教训
现实总是在不经意间给予痛击。
“一个基础技术团队,在推动技术变革期间,万众瞩目下,捅出一个大篓子……”。回忆起曾经的一个大故障,总裁直接技术负责人打电话,团队成员们心有余悸。
那次事故后,原打算接入的业务方陆续退出,ASI团队士气低落,有人顶不住压力离开。
痛定思痛后,丁宇在内网发帖,如此自省:“基础不牢,地动山摇。这一年跑得太快了,不停接入新业务,忽略了团队的承受能力,希望大家记住这个血的教训,引以为戒。”
不够成熟的调度,就像一个拥有“关键按钮”的顽皮孩子,后果不堪设想。有一次,调度系统误判,直接抹掉了一整个机房的容器,一秒钟,几万个容器不见了,“就像天塌了一样”。
黄涛不得不开始考虑最极端情况下的保障措施,比如阿里集群都挂了,容器如何恢复;又或者调度系统崩溃了,如何让业务不受影响......
为了打造一个固若金汤的“集装箱”, 他们苦修内功。
冲上云霄
与此同时,阿里集团开始了轰轰烈烈的上云之路。
2019年初,时任阿里集团CTO兼阿里云智能总裁的张建锋召集阿里的技术骨干开会,“今年开始,阿里巴巴不再采购物理机,所有新增计算都上公共云。”
阿里终于迎来冲向云霄的时机。ASI团队决定将让所有容器搭载在阿里自研的神龙服务器上,完成最关键的一步——上云。
神龙服务器将虚拟化损耗降低至几乎不计,可以让计算成本下降50%,容器性能提升30%,这是真正为容器而生的云服务器。
但PouchContainer下搭载着阿里用了十多年的物理机,运行着上万应用, 要从云下搬迁至云上,仅靠ASI团队,难以面面俱到。为了争取业务方的配合,丁宇带着所有人到一线技术团队宣讲如何上云。
与此同时,为了真正让阿里云、阿里集团内部以及开源社区享受到同样的容器服务,实现“三位一体”。李响带领团队与云产品ACK(阿里云对外的容器服务产品)融合。团队熟读ACK代码,在阿里云飞天园区闭关数周,“做不出来不回西溪!”
历时近一年,这场集结了阿里5万名工程师的浩大工程,在2019年双11禁受住了全球最高流量洪峰的考验。阿里正式宣布,其核心系统已100%跑在阿里云上。
ASI也成功实现了与云产品ACK的会师。如今的云产品ACK,既保留了云上的各种能力,也能成功应对阿里集团复杂的业务环境。
少为人知的是,这同时是全球最大规模的云原生实践。
所谓云原生,便是以“天生就在云上”的理念打造的一整套IT体系,自容器开始,云原生中间件、数据库、服务器等基础系统也陆续出炉,共同构建出幅员辽阔的云原生版图。
正如集装箱的出现缔造了全新的航运体系,容器的出现也开启了云计算的新时代。
集装箱的威力
2019和2020年,在云计算史上注定是两个热闹的年份。
谷歌推出了以K8S为核心的混合云/多云管理平台Anthos;微软推出了开源的云原生服务网络Open Service Mesh;华为云发布了第二代零损耗裸金属容器;阿里继2019年之后,在2020年实现了更彻底的最大规模云原生实践……
阿里集团CTO程立(花名:鲁肃)表示:阿里核心系统实现了全面云原生化,每万笔峰值交易的IT成本较四年前下降了80%,规模化应用交付效率提升了一倍之多,可在1小时内扩展超百万容器,弹性伸缩性能提升10倍以上。
云原生大潮奔腾而来。
权威机构Gartner预测,到2020年,将有50%的传统老旧应用被以云原生化的方式改造,到2022年,将有75%的全球化企业将在生产中使用云原生的容器化应用。
没有人再怀疑——“云原生就是未来”。
2020年9月的云栖大会上,阿里巴巴成立云原生技术委员会 ,负责人蒋江伟(花名:小邪)称将对外赋能数百万家企业进行云原生改造,提升 30% 研发效率的同时降低 30% IT 成本。
蒋江伟
云原生拓展商业边界,并将这股浪潮渗透到人类活动的每个角落。
中国移动使用容器取代虚拟机;网商银行已将400多个应用程序调整为云原生架构;
京东云也在进行微服务和容器化改造;
疫情爆发期,钉钉基于阿里云容器解决方案,在2小时内扩容一万台主机支撑2亿上班族线上工作;
申通快递将核心系统搬到云上,大规模部署阿里云容器,亿级包裹过境,系统稳如泰山,IT成本还降低了30%;
阿里自研云原生技术 Virtual Cluster、 Open kruise,在社区开源后,已经被领英、苹果等公司采用。
如果是5年前,你会看到“Docker基础介绍”和“云原生是什么?”而今天,当你再次搜索时,“云原生”已是行业公认的“云计算的下一个时代”。
而这一切,都始于那个“箱子”。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2020-10-13 2020年十大大数据趋势
2019-10-13 ABP进阶教程7 - 功能按钮
2007-10-13 .NET中完成FTP各功能操作 (转)
2007-10-13 2004,2005,2006年CSDN中国程序员大调查-2006 (转)
2007-10-13 2004,2005,2006年CSDN中国程序员大调查-2005 (转)
2007-10-13 2004,2005,2006年CSDN中国程序员大调查-2004 (转)