企业级云原生白皮书项目实战 目录 3.2 业务部署 3.2.1ACR容器镜像服务 1515 CATALOG 3.2.2优雅更新3.2.3健康检查 2832 3.2.4QoS设置 33 第一章引言 3.2.5滚动更新 36 3.2.6亲和性&污点容忍 38 第二章云原生发展历史及现状 3.2.7CPU/内存 40 3.2.8Scheduler调度 43 2.1云原生发展历史及现状 02 3.2.9nginxcontroller最佳调度部署实践 46 2.2云原生的发展及现状 03 3.2.10服务发现 49 3.2.11伸缩与优化 55 第三章容器 3.3 访问链路 57 3.3.1入方向 57 3.1创建集群 11 3.3.2出方向 59 3.1.1 运行时runtime选择 11 3.1.2 集群版本选择 12 3.1.3 网络插件选择 12 3.1.4 集群网络规划 13 3.1.5 网络代理模式选择 13 3.1.6 节点池配置 14 3.1.7 组件配置 14 第四章云原生中间件 4.1消息队列RocketMQ&&Kafka63 4.1.1消息队列RocketMQ版概述63 4.1.2消息队列RocketMQ版的优势63 4.1.3消息队列RocketMQ版最佳实践64 4.1.4消息队列Kafka版概述 67 4.1.5消息队列Kafka版的优势 69 4.1.6消息队列Kafka版最佳实践 70 4.2 微服务引擎MSE 73 5.1.2 创建实例 95 5.1.3 变更实例 103 5.1.4 集群监控告警 113 5.1.5 日志查询 129 5.1.6 数据备份恢复 130 5.1.7 数据同步 137 4.2.1 MSE概述 74 4.2.2 MSE功能介绍 74 4.2.3 微服务概述 74 4.2.4 MSE最佳实践 75 4.3 可观测产品ARMS 79 4.3.1ARMS概述 79 4.3.1ARMS优势 79 4.3.1ARMS最佳实践 81 4.4 日志服务SLS 86 5.2云原生大数据计算服务MaxCompute141 5.2.1 开始使用 141 5.2.2 使用安全 146 5.2.3 数据上云 152 5.2.4 SQL开发参考 158 5.2.5 多引擎开发参考 160 5.2.6 数据开发及任务调度 162 5.2.7 运维 166 5.2.8 小结 168 4.4.1 阿里云日志服务产品介绍 86 4.4.2 产品功能 86 4.4.3 开源日志方案比对 88 4.4.4 最佳实践 89 5.3实时计算Flink版169 5.3.1 开始使用 169 5.3.2 Flink任务开发相关 175 5.3.3 任务性能 188 第五章大数据 5.1检索分析服务Elasticsearch版94 5.1.1产品介绍94 5.4QuickBI数据可视化分析平台 5.4.1背景 5.4.2产品介绍 202 202 202 5.4.3 版本选择 202 5.4.4 开始使用 206 5.4.5 功能进阶 217 第七章云原生未来发展趋势 第六章云原生最佳实践 6.1vivoAI计算平台的ACK混合云实践 224 7.1多云融合 7.2无服务器 7.3低代码、无代码 7.4场景化与多样的云原生应用 7.5场景化的解决方案 249 249 250 250 250 6.1.1 背景 224 6.1.2 方案 225 6.1.3 落地实践 226 6.1.4 落地效果 228 6.1.5 未来展望 228 全面容器化之后,来电科技如何实现微服务治理229 6.2.1 缘起 229 6.2.2 初见 232 6.2.3 落地 234 6.2.4 未来 238 6.2 6.3基于RocketMQ的基金数字化陪伴体系的架构实践 6.3.1行业背景 6.3.2RocketMQ在陪伴体系中的应用 6.3.3RocketMQ事务消息的金融应用场景 6.3.4未来规划 239 239 240 242 248 第一章引言 随着数字化转型深入社会的千行百业,随着近10年云计算的高速发展,以容器化为代表的云原生技术作为云计算的新界面加速云计算发展的同时,也势必将成为企业数字化转型升级成功的关键。 云原生概念定义了一种全新的软件架构开发方法论,旨在利用云计算在公有云、私有云或混合云环境中,构建弹性、健壮、可扩展的业务应用。 典型的云原生技术代表有:容器、微服务、serverless、ServiceMesh技术、云原生中间件等。相应地,阿里云在云上提供了丰富的云原生技术产品,例如:容器服务ACK、容器镜像服务ACR、服务网格ASM、消息队列RocketMQ版等。 这些云产品将极大助力企业云原生架构转型的企业,更加聚焦于业务本身并借助云原生技术与产品实现更多业务创新,有效提升企业增长效率,爆发出前所未有的生产力与创造力。 第二章云原生发展历史及现状 一切技术和架构的出现都是为了解决一个问题:提高效率,降低成本。如今越来越多的应用正在迁移到“云”上,如我们生活中接触的各种“云盘”存储。实际上,“云”并不新潮,已经持续了超过10年,并还在不断扩大到所有领域。可预见的事:下一个10年中,几乎所有的应用都会部署到云端,而它们中的大部分都将直接通过移动设备,为我们提供各种各样的服务。 传统的应用正在变得越来越复杂:需要支持更多的用户,需要更强的计算能力,需要更加稳定安全等等,而为了支撑这些不断增长的需求,企业不得不去购买各类硬件设备(服务器,存储,带宽等等)和软件(数据库,中间件等等),另外还需要组建一个完整的运维团队来支持这些设备或软件的正常运作,这些维护工作就包括安装、配置、测试、运行、升级以及保证系统的安全等。可以发现支持这些应用的开销变得非常巨大,而且它们的费用会随着应用的数量或规模的增加而不断提高。这也是为什么即使是在那些拥有很出色IT部门的大企业中,那些用户仍在不断抱怨他们所使用的系统难以满足他们的需求。而对于那些中小规模的企业,甚至个人创业者来说,创造软件产品的运维成本就更加难以承受了。所以在目前的大环境下,软件开发商不使用云基本上无法在竞争中取得优势。 解决上述问题的方法就是使用云原生,将应用部署到云上,可以不用再关注令人 头疼的软硬件问题,这些问题将由云服务提供商的专业团队解决。阿里云致力于用户在部署应用时利用云服务就像使用水电煤一样快捷便利。 大型赛事上云,作为一种新兴发展领域,顺应了时代发展,也见证了时代进步。在第八章节,我们展望未来丰富多彩的云上世界,脚踏实地走好技术的发展创新之路。 2.1云原生的诞生及定义 根据公开发表的文献来看,云原生一词最早可追溯至2012年4月,Andrikopou-los等人在发表的论文中,在该论文中只提出了云原生应用工程的解决方案并描述了应用程序和中间件在云环境中的良好运行状态,但并未对云原生这一概念作出具体的定义。在本节中,通过对云计算及其上应用的特点进行分析,结合阿里自身的云原生技术和上云实践,尝试给出云原生的定义。 云原生从字面上来拆分,可以分成云+原生,云与本地是相对的,传统应用运行在本地服务器上,云原生应用运行在云上。而原生则指为适配云的特性而设计的一套技术体系。我们从这云和原生两方面分别展开介绍。 云即云计算,是一种模型,实现对可配置计算资源(如网络、服务器、存储、应用和服务)的随时随地按需使用。云计算模型通常满足以下五个特点: 1.按需自助使用:用户可以根据需要,配置相应的计算能力,并且无需服务提供商的人工介入。 2.随时随地接入:用户可以方便快捷地使用各种终端通过网络接入到云计算平台中。 3.可池化的资源:服务商计算资源汇集在一个“资源池”中,使用多租户模型为消费者提供服务,根据消费者的需求动态分配不同的物理和虚拟资源,在消费者使用完后,计算资源重新回到“资源池“中。 4.弹性伸缩:资源可以灵活地供应和释放,根据需求的变化,可以自动地、快速地扩展和收缩。从消费者的视角来看,可以在任何时间使用任意数量的资源。 5.可观测服务:云系统可以监视、控制和报告资源使用情况,为所使用服务的提供者和使用者提供透明度。支持存储、带宽、处理能力等其他适合于服务类型的抽象度量。 云计算的服务模型可分为以下三种: 1.软件即服务(SaaS):服务商提供基于云基础设施的应用程序并负责应用程序的升级维护等工作。使用者不管理或控制底层云基础设施,包括网络、服务器、操作系统和存储,只能管理有限的特定于用户的应用程序配置。 2.平台即服务(PaaS):服务商提供基于云基础设施的支持应用程序开发、测试、交付等所需的环境。使用者不管理或控制底层云基础设施,包括网络、服务器、操作系统和存储,但可以控制已部署的应用程序,还可以控制应用程序托管环境的配置。 3.基础设施即服务(IaaS):服务商提供计算、存储、网络等基本的计算资源。使用者可以在这些资源中部署和运行任意软件,包括操作系统、中间件、应用程序。使用者不管理或控制底层云基础设施,但可以控制操作系统、存储和部署的应用程序;以及有限的网络组件(例如,主机防火墙)。 从以上云计算服务的特点和服务模型中可以看出,区别于传统的本地服务器,云服务器具有更快的接入效率,更高的弹性能力以及更强的容灾能力。而传统的应用设计模式无法发挥出云服务器的全部优势,因此需要设计一套适应和满足云特性的方法论和技术体系,软件的设计架构、开发方式、部署维护上均做出改变来满足云化,使得软件的开发和构建能够依托于云计算。云原生应用应具有如下的要点: 1.微服务:每个微服务都有一个自治的生命周期,可以独立发展和频繁部署。客户可以只更新软件的一部分,快速部署新功能从而降低破坏整个系统的风险。每个微服务都可以独立扩展,无需将整个应用程序扩展为一个单元,而是仅扩展那些需要更多处理能力,以满足所需性能级别和服务级别协议的服务。细粒度扩展可更好地控制系统,并有助于在扩展系统的某些部分时,无需扩展所有部分来降低总体成本。 2.容器化:容器提供可移植性并保证跨环境的一致性。通过将所有内容封装到一个包中,可以将微服务及其依赖项与底层基础设施隔离开来。可以在托管Docker运行时引擎的任何环境中部署容器。容器化工作负载还消除了使用框架、软件库和运行时引擎预先配置每个环境的复杂度。通过共享底层操作系统和主机资源,容器的占用 空间比完整的虚拟机小得多。当使用许多独立运行的容器进行大规模操作时,还需要使用Kubernetes编排容器;Kubernetes是为生产环境而设计的容器调度管理系统,对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持,目前K8S已经是云原生容器管理的事实标准。 3.DevOps:强调的是以开发运维的视角,去构建一套高效完备的CI/CD流程,并通过自动化构建工具及发布系统,来实现软件生命周期的管理。从而使得普通开发人员,能够更快、更频繁地交付更加稳定的软件代码。DevOps可以视作一组实践,旨在缩短将变更应用到生产环境的时间,保障在代码和交付机制方面的软件质量。持续交付(CD)是一种DevOps实践,可以通过自动化机制按需将软件部署到任何环境。随着可部署单元数量的增加,CD是微服务中必不可少的一环。 基于以上的讨论,可以对云原生应用做出定义:云原生应用是一个分布式、弹性和可水平扩展的系统,由多个状态相互隔离的、可独立部署的服务组成。应用程序依据云平台的特点进行设计的,将大量非功能特性(弹性、安全、可用性、可观测性等)交由云设施接管,开发者只需关注实际业务的开发。 2.2云原生的发展及现状 云原生大数据计算服务MaxCompute是适用于数据分析场景的企业级SaaS (SoftwareasaService)模式云数据仓库,以Serverless架构提供快速、全托管的在线数据仓库服务,消除了