文章目录
前言
我们从一个简单的定义开始:
云原生体系结构和技术是一种方法,用于设计、构造和操作在云中构建并充分利用云计算模型的工作负载。
云原生计算基金会提供了官方定义:
云原生技术使组织能够在新式动态环境(如公有云、私有云和混合云)中构建和运行可缩放的应用程序。 容器、服务网格、微服务、不可变基础结构和声明性 API 便是此方法的范例。
这些技术实现了可复原、可管理且可观察的松散耦合系统。 它们与强大的自动化相结合,使工程师能够在尽量减少工作量的情况下,以可预测的方式频繁地进行具有重大影响力的更改。
云原生是关于速度和敏捷性的。 业务系统正在从实现业务功能演变为加快业务速度和增长的战略转型武器。 必须立即将新想法推向市场。
同时,业务系统也变得越来越复杂,用户要求也越来越高。 他们希望实现快速响应、创新工作和零故障时间。 他们再也无法接受性能问题、反复出现的错误以及不能快速移动。 你的用户将访问你的竞争对手。 云原生系统旨在支持快速更改、大规模操作和复原能力
下面是一些实现了云原生技术的公司。 请考虑其实现的速度、敏捷性和可伸缩性。
Company | 体验 |
---|---|
Netflix | 在生产环境中有 600 多种服务。 每天部署 100 次。 |
Uber | 在生产环境中有 1,000 多种服务。 每周部署数千次。 |
微信 | 在生产环境中有 3,000 多种服务。 每天部署 1,000 次。 |
如你所见,Netflix、Uber、微信公开了由许多独立服务组成的云原生系统。 这种体系结构样式使它们能够快速响应市场条件。 它们即时更新实时、复杂应用程序的小区域,而无需完全重新部署。 它们根据需要单独缩放服务。
云原生的支柱
云原生的速度和敏捷性源自许多因素。 最重要的是云基础结构。 不过还有其他内容:图 1-3 中显示的五个其他基础支柱也为云原生系统提供基础。
图 1-3。 云原生基础支柱
让我们花一些时间来更好地了解每个支柱的重要性。
云
云原生系统充分利用了云服务模型。
这些系统设计为可在动态的虚拟化云环境中蓬勃发展,广泛使用平台即服务 (PaaS) 计算基础结构和托管服务。 它们将底层基础结构视为可处置:可在几分钟内进行预配,并根据需要重设大小、缩放或销毁(通过自动化)。
请考虑被广泛接受的 DevOps 概念:宠物 (Pets) 与牲畜 (Cattle)。 在传统数据中心内,服务器被视为“宠物”:一台物理计算机,被赋予有意义的名称,并受到照料。 你通过将更多资源添加到相同计算机(纵向扩展)来进行缩放。 如果服务器出现问题,你会进行修复,使它恢复正常运行状况。 如果服务器不可用,则每个人都会注意到。
“牲畜”服务模型有所不同。 你会将每个实例预配为虚拟机或容器。 它们是相同的,并分配有系统标识符(如服务-01、服务-02 等等)。 你通过创建更多实例(横向扩展)来进行缩放。 当一个实例不可用时,无人会注意到。
牲畜模型采用不可变基础结构。 服务器不会进行修复或修改。 如果一台服务器发生故障或需要更新,则会销毁它并预配新服务器 – 所有操作都通过自动化完成。
云原生系统采用牲畜服务模型。 它们会在基础结构横向缩减或扩展时持续运行,而不考虑运行它们的计算机。
Azure 云平台支持这种具有自动缩放、自我修复和监视功能的高弹性基础结构类型。
新式设计
如何设计云原生应用? 你的体系结构是什么样的? 你将遵守哪些原则、模式和最佳做法? 哪些基础结构和运营问题十分重要?
十二要素应用程序
十二要素应用程序是一种被广泛认可的用于构建基于云的应用程序的方法。 它介绍了一系列原则和做法,开发人员在构建针对新式云环境进行优化的应用程序时需要遵循这些内容。 其中特别关注了跨环境的可移植性和声明性自动化。
尽管适用于任何基于 Web 的应用程序,不过许多从业人员都将十二要素视为构建云原生应用的坚实基础。 基于这些原则构建的系统可以快速部署和缩放,并添加了功能以快速应对市场变化。
下表重点介绍了十二要素方法:
因素 | 说明 |
---|---|
1 - 基本代码 | 每个微服务都有单个基本代码,存储在其自己的存储库中。 它通过版本控制进行跟踪,可以部署到多个环境(QA、暂存、生产)。 |
2 - 依赖项 | 每个微服务都隔离并打包其自己的依赖项,以在不影响整个系统的情况下进行更改。 |
3 - 配置 | 配置信息通过代码之外的配置管理工具移出微服务和实现外部化。 在应用了正确配置的情况下,相同部署可以在环境间传播。 |
4 - 支持服务 | 辅助资源(数据存储、缓存、消息中转站)应通过可寻址 URL 进行公开。 这样做可使资源与应用程序分离,使其可 |