云原生应用万节点分钟级分发协同实践

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 容器镜像服务作为阿里巴巴经济体云原生领域的重要基础设施之一,早在 双11 备战期间就已面临大规模分发需求。为了更好地支持这一需求,产品提前进行规划及迭代更新,全面提升了大规模分发场景下的性能、可观测性和稳定性。

原文作者:瑶靖
原文链接:https://developer.aliyun.com/article/733203?spm=a2c6h.12873581.0.0.3a2b115ex69Iht&groupCode=cloudnative

更多云原生技术资讯可关注阿里巴巴云原生技术圈

引言

2019 年天猫双11,阿里巴巴核心系统首次实现 100% 上云。面对全球最大的交易洪峰,阿里云扛住了每秒 54.4 万笔的交易峰值,这是“云原生”与“天猫全球狂欢节”的一次完美联名。
01.png

(图为 2019 年天猫双11 成交额)
容器镜像服务作为阿里巴巴经济体云原生领域的重要基础设施之一,早在 双11 备战期间就已面临大规模分发需求。为了更好地支持这一需求,产品提前进行规划及迭代更新,全面提升了大规模分发场景下的性能、可观测性和稳定性。在新的 双11 来临前,容器镜像服务新增了数 PB 的镜像数据,月均镜像拉取达数亿次。同时产品提供了云原生应用交付链等功能,全面覆盖阿里经济体及云上用户在云原生时代的使用需求。
本文将介绍容器镜像服务如何通过提升产品能力来应对云原生应用万节点分发场景下的新发展和新挑战。

新发展和新挑战

随着云原生技术的迅速普及,Kubernetes 已经成为事实上应用容器化平台的标准,成为了云原生领域的“一等公民”。Kubernetes 以一种声明式的容器编排与管理体系,让软件交付变得越来越标准化。Kubernetes 提供了统一模式的 API,能以 YAML 格式的文件定义 Kubernetes 集群内的资源。这一些 YAML 格式的资源定义使得 Kubernetes 能轻松被上下游系统所集成,完成一系列原本需要用非标准化脚本、人工来完成的操作。同时社区根据应用交付场景及需求,在原生 YAML 格式的资源定义文件之外衍生出了更多系列的云原生应用交付标准,例如 Helm Chart、Opeartor、Open Application Model 等。
02.png

 
(图为云原生应用交付标准演进)
除了云原生应用交付标准推陈出新,用户对交付方式也提出了更高的要求。越来越多的用户期望能以流程化、自动化、更安全的方式交付云原生应用,因此单纯的万节点分发场景已经演化成万节点分钟级多环节协同分发。再加上全球化业务发展,这意味着在分钟级时间内完成各个环节之后,还需再完成全球化分发,这对支撑云生应用分发的平台提出了更高的要求。

新实践

通过控制容器镜像大小、采用 P2P 分发镜像层、优化 Registry 服务端等方式,我们极大优化了大规模分发的性能,最终达成了万节点分钟级分发的目标:

  • 优化容器镜像大小,降低镜像传输成本

    • 制作基础镜像,将使用频繁的应用或环境制作成基础镜像复用,尽可能减少镜像的层数,控制每次变更层数
    • 采用多阶段镜像构建,将镜像制作过程中的中间产物与最终产物分离,形成最精简的应用镜像
  • 优化服务端处理性能,提高请求响应速率

    • 服务端通过识别热点镜像,采用热点数据缓存等多种方式应对大规模镜像 Manifest 并发拉取
  • 优化客户端容器镜像层下载方式,减少镜像传输时间

    • 客户端使用蜻蜓下载容器镜像, 基于 P2P 方式大幅减少镜像 Layer 下载时间

03.png

(图为镜像大规模分发的优化策略)
为了让拥有同样需求的企业客户能够享受到如上一致的分发能力和体验,容器镜像服务产品在 2019 年 3 月正式推出了容器镜像服务企业版(ACR Enterprise Edition)。容器镜像服务企业版提供了企业级云原生资产托管能力以及云原生应用全球化同步、大规模分发能力,适合有着高安全需求、多地域业务部署、拥有大规模集群节点的企业级容器客户。除此之外,容器镜像服务企业版还在云原生资产托管交付分发等几个方面进一步提升云原生应用万节点分钟级分发协同体验。

云原生应用托管

  • 在应用交付物层面,容器镜像服务企业版目前支持容器镜像Helm Chart 两类云原生应用资产的全生命周期管理。
  • 在访问安全层面,产品提供了独立网络访问控制功能,可以细粒度控制公网及 VPC 网络的访问策略,仅允许符合策略的来源方访问资产,进一步保障云原生资产的访问安全。
  • 在访问体验层面,产品提供容器集群透明拉取插件,支持容器镜像透明拉取,保障业务在弹性场景极速拉取镜像不因凭证配置有误导致业务更新或扩容异常。

04.png

(图为容器镜像服务企业版支持云原生应用交付)

云原生应用交付

云原生应用生产环节,用户可以直接上传托管容器镜像、Helm Chart 等云原生资产;也可以通过构建功能自动从源代码(Github、阿里云 Code、GitLab 等来源)智能构建成容器镜像。同时为了解决流程化、自动化、更安全的方式交付云原生应用这一需求,容器镜像服务企业版引入了云原生应用交付链功能。云原生应用交付链以云原生应用托管为始,以云原生应用分发为终,全链路可观测、可追踪、可自主设置。可以实现一次应用变更,全球化多场景自动交付,从流程层面极大地提升了云原生应用万节点分发的效率及安全性。
05.png

(图为控制台创建云原生应用交付链)
云原生应用交付环节,支持自动发起静态安全扫描并自定义配置安全阻断策略。一旦识别到静态应用中存在高危漏洞后,可自动阻断后续部署链路。用户可基于漏洞报告中的修复建议,更新优化构建成新的镜像版本,再次发起交付。

云原生应用分发

云原生应用分发环节,当前置环节完成无阻断后,云原生应用正式进入全球化分发及大规模分发环节。为了保障万节点分钟级分发协同完成,容器镜像服务联合容器服务、弹性容器实例等云产品提供了端到端的极致分发体验。针对全球化分发,由于基于细粒度同步策略调度、同步链路优化等优化手段,云原生应用的全球同步效率相比手动同步提升了 7 倍06.png

(图为云原生应用的全球化分发)
在 P2P 大规模分发方面,产品针对云环境多次优化基于 Dragonfly 的分发方案,最终通过多个创新技术解决了大规模文件下载以及跨网络隔离等场景下各种文件分发难题,大幅提高大规模容器镜像分发能力。平均镜像大规模分发效率比普通方式提高数倍,适用于容器集群单集群节点数达 100 及以上的场景。
07.png

(图为基于 P2P 的分发流程示意)
除了 P2P 大规模分发手段外,为了更好地满足特定场景下的大规模分发需求,产品还支持基于镜像快照的大规模分发方式。基于镜像快照的分发方式,可避免或减少镜像层的下载,极大提高弹性容器实例创建速度。在容器集群(ASK)及弹性容器实例(ECI)的联合使用场景下,产品可以支持 500 节点秒级镜像拉取,实现业务突发场景下极速扩容。
08.png

(图为基于镜像快照的分发流程示意)

新平台

在功能及性能指标满足云原生应用万节点分钟级分发协同需求外,容器镜像服务还对平台能力进行了提升和优化,保障了分发过程的可观测性及稳定性。同时平台提供了集成能力,进一步延展云原生应用分发的使用场景和价值。

稳定性

稳定性层面的具体提升及优化工作从监控报警、容错容灾、依赖治理、限流降级、容量规划等几个方面展开。

  • 在依赖治理方面,平台对云原生应用交付链中的相关重点环节及外部依赖进行统一管理,提升交付链整体交付能力,帮助用户识别热点仓库及追踪交付链执行结果;
  • 在限流降级方面,平台分析识别云原生应用分发核心环节的主次业务功能,优先保障主要业务逻辑完成,次要业务逻辑可降级延后处理;
  • 在容量规划方面,平台根据上下游业务变化情况,对资源进行按需扩容,确保云原生应用正常交付完成。

09.png

(图为平台的稳定性保障策略)

生态集成

基于平台提供的丰富的集成能力,用户还可以将容器镜像服务企业版作为云原生资产托管及分发的基础设施,为他们的用户提供云原生应用分发能力。其中,容器镜像服务企业版支撑阿里云云市场构建容器应用市场,支撑容器应用市场的容器商品托管及商业化分发,构建云上云原生生态闭环。ISV 服务商,例如 Intel、Fortinet、奥哲,将容器化商品以容器镜像或者 Helm Chart 的形式在云市场快速上架,实现标准化交付、商业化变现。市场客户也可以从容器应用市场获取到优质的阿里云官方及 ISV 容器镜像,快速部署至容器服务容器集群,享受到阿里云丰富的云原生生态。
010.png

(图为容器应用市场流程示意)

写在最后

从支持阿里巴巴 双11 大规模分发需求,到全面覆盖阿里经济体及云用户的云原生资产托管及分发需求,再到支撑构建云上容器生态闭环,阿里云容器镜像服务已成为了云原生时代的核心基础设施之一,释放云原生价值的重要加速器。容器镜像服务也将持续为用户带来更加优异的云原生应用分发功能、性能及体验。

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5天前
|
Cloud Native 安全 持续交付
云原生技术在现代企业中的应用与挑战
本文探讨了云原生技术的基本概念、主要特点以及其在现代企业中的应用和面临的挑战。通过分析云原生技术如何提高应用的灵活性、可扩展性和开发效率,揭示了其对企业数字化转型的重要性。同时,文章也讨论了企业在采用云原生技术时需要克服的技术难点和文化转变问题。
|
1天前
|
Kubernetes Cloud Native 持续交付
深入理解云原生技术及其在现代IT架构中的应用
【9月更文挑战第18天】云原生技术,作为推动企业数字化转型的引擎,正以它独特的魅力重塑着信息技术的未来。本文将带你一探究竟,从云原生的基础概念出发,逐步深入到其核心组件、设计理念以及如何在实际应用中发挥巨大作用。你将了解到容器化、微服务架构、持续集成与持续部署(CI/CD)等关键实践,并见证它们如何帮助企业构建更加灵活、高效和可靠的应用。
|
2天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
2天前
|
运维 Cloud Native Devops
探索云原生技术:构建现代应用的全新方式
本文将深入探讨云原生技术的核心理念和实际应用,揭示其在现代应用开发和部署中的重要性。我们将从云原生的定义开始,逐步解析其关键技术如容器化、微服务、DevOps等,并通过具体案例展示这些技术如何帮助企业实现高效、灵活和可扩展的应用架构。无论是开发者、运维人员还是企业决策者,本文都将为您提供有价值的见解和实用的建议。
|
5天前
|
Cloud Native Devops 持续交付
云原生技术:构建现代应用的新范式
本文深入探讨了云原生技术的核心理念、关键技术和应用实践。首先,文章阐述了云原生的定义和特点,强调其利用云计算优势来构建和运行可扩展应用的能力。接着,详细介绍了容器化、微服务架构、DevOps实践等关键技术,并通过具体案例展示了这些技术在实际应用中的效果。最后,讨论了云原生技术的发展趋势和未来前景。本文旨在为读者提供关于云原生技术的全面理解,帮助其在数字化转型过程中做出明智的决策。
|
5天前
|
运维 Cloud Native 持续交付
云原生技术:构建弹性、高效和可扩展的现代应用
在当今数字化浪潮中,企业面临着日益复杂的技术和业务需求。传统的单体架构已经难以适应快速变化的市场需求,而云原生技术正以其独特的优势成为现代企业构建弹性、高效和可扩展应用的首选。本文将深入探讨云原生技术的基本原理、核心组件及其在实际应用中的案例,揭示其如何帮助企业实现数字化转型和业务创新。
18 3
|
6天前
|
Cloud Native Devops 云计算
云原生技术:构建现代应用的新范式
在当今数字化时代,企业面临着日益复杂的业务需求和不断变化的市场环境。为了保持竞争力,企业需要快速、高效地构建和部署应用程序。本文将探讨一种新兴的软件开发架构——云原生技术,它能够帮助企业实现这一目标。通过采用微服务、容器化、DevOps等理念和技术,云原生架构为企业提供了一种灵活、可扩展且易于管理的方式来构建、部署和运行应用程序。本文将从云原生技术的基本概念入手,深入探讨其核心组件以及如何利用这些组件构建现代化的应用架构。
|
1天前
|
运维 监控 Cloud Native
云原生技术:构建现代应用的未来
本文深入探讨了云原生技术的基本原理、主要特点和应用场景。通过分析其在实际项目中的优势,如弹性扩展、快速部署和高效管理等,揭示了云原生如何成为现代应用开发的主流趋势。同时,本文还讨论了采用云原生技术时需要考虑的关键因素,包括安全性、成本控制及技术栈的选择。旨在为读者提供全面的云原生知识,助力企业在数字化转型中做出明智决策。
11 0
|
1天前
|
Kubernetes Cloud Native Devops
云原生架构的崛起与应用##
云原生架构是现代企业数字化转型的关键,通过容器化、微服务、DevOps等技术,实现高效、灵活的应用部署和管理。本文探讨云原生的核心概念、主要技术及其实际应用价值,揭示其在提升企业运营效率和创新能力中的重要性。 ##
12 0
|
1天前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
8 0