乐趣区

关于云原生-cloud-native:一个改变世界的箱子


作者 | 云希
起源 | 阿里巴巴云原生公众号

一个时代的改革往往始于一个渺小的翻新。

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 根底介绍”和“云原生是什么?”而明天,当你再次搜寻时,“云原生”已是行业公认的“云计算的下一个时代”。

而这所有,都始于那个“箱子”。

退出移动版