4.8 云原生架构

一句话讲明白

云原生=应用从生下来就为云而设计:把弹性、韧性、安全、可观测这些"非业务"的活儿尽量甩给云平台,让业务代码又轻又快又能自动上线。

生活类比

开餐厅的两种方式:传统方式是自己盖厨房、买炉灶、雇维修工、自己盯着冰箱温度(传统架构,非功能性事务全自己扛);云原生方式是进驻美食广场——水电、排烟、消防、收银、清洁由广场统一提供(云设施接管非功能特性),你只管把菜炒好(业务代码),客流暴涨时广场自动给你加窗口(弹性)。

正经定义

云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰,具备轻量、敏捷、高度自动化的特点。

拆解与流程

一、发展概述(瀑布 → 敏捷 → DevOps → 云原生)

传统"瀑布式"开发造成上下游信息不对称、周期长;敏捷开发只解决了开发效率和版本速度,未打通运维;DevOps 是开发、技术运营和质量保障三者的交集,促进沟通协作与整合;云原生的容器、微服务等技术正是 DevOps 的前提条件,使持续交付成为可能。云原生还从一开始就与开源生态结合,并广泛应用于边缘计算、高性能计算(HPC)、AI、大数据场景。

二、架构定义:三大变化

  1. 代码结构发生巨大变化:云把三方软硬件能力升级为服务(对象存储、块存储、文件存储等),开发人员不再需要处理分布式网络、高可用、扩缩容等复杂问题。
  2. 非功能性特性大量委托:高可用交给虚拟机(底层硬件异常时热迁移)、容器(进程异常时节点下线/上线、流量切换)、云服务(有状态交给云服务 → 应用变"无状态",中断降至分钟级)。
  3. 高度自动化的软件交付:容器以标准方式打包,屏蔽环境差异,以"面向终态"的方式完成安装、配置、运行和变更。 - 云原生的代码=业务代码 + 三方软件 + 处理非功能特性的代码,只有业务代码是真正带来价值的核心。

三、基本原则(7 条,必背)

原则 一句话
服务化原则 代码规模超出小团队范围就拆分(微服务/小服务 MiniService),按生命周期分别迭代;是基于服务流量(非网络流量)做限流降级、熔断隔仓、灰度、反压、零信任的前提
弹性原则 部署规模随业务量自动伸缩,无需按容量规划准备固定资源,缩短采购上线周期、降低闲置成本
可观测原则 通过日志、链路跟踪和度量主动呈现一次点击背后的多次服务调用,下钻到三方调用、SQL、节点拓扑、网络响应
韧性原则 抵御软硬件异常的能力,核心目标是提升 MTBF(平均无故障时间);含服务异步化、重试/限流/降级/熔断/反压、主从、集群、AZ 内高可用、单元化、跨 region 容灾、异地多活
所有过程自动化原则 通过 IaC、GitOps、OAM、Kubernetes Operator 与 CI/CD 流水线实现交付与运维自动化
零信任原则 默认不信任网络内外任何人/设备/系统,以身份为中心重构访问控制,从"网络中心化"走向"身份中心化"
架构持续演进原则 架构本身必须具备持续演进能力,存量应用迁移要权衡迁出/迁入成本与风险

四、常用架构模式(7 种,必背)

  1. 服务化架构模式:以应用模块为颗粒度划分软件,以接口契约(IDL)定义业务关系,以标准协议(HTTP、gRPC)互联互通;典型是微服务和小服务(MiniService,一组关系密切、共享数据的服务)模式。
  2. Mesh 化架构模式:把中间件框架(RPC、缓存、异步消息)从业务进程分离,SDK 与业务代码解耦,业务进程只保留很"薄"的 Client,流量控制、安全等由 Mesh 进程完成。
  3. Serverless 模式:把"部署"从运维中收走,业务流量/事件到来时云启动或调度进程,处理完自动关闭。适合事件驱动的数据计算、计算时间短的请求/响应、无复杂互调用的长周期任务;不适合有状态应用、长时间后台运行的密集型计算任务、频繁外部 I/O 的应用。
  4. 存储计算分离模式:无状态应用不存在 CAP 中的 C 维度,可获得更好的 A 与 P(弹性);暂态数据与持久数据尽量用云服务保存。
  5. 分布式事务模式:XA(强一致、性能差)、基于消息的最终一致性(高性能、通用性有限)、TCC(Try-Confirm-Cancel,隔离性可控、效率高,但对业务侵入强)、SAGA(每个正向事务对应一个补偿事务)、SEATA 的 AT 模式(高性能、零代码、自动回滚,但有场景限制)。
  6. 可观测架构:Logging(多级别详细跟踪)+ Tracing(请求全链路跟踪)+ Metrics(多维度度量);目标是度量 SLO 从而优化 SLA。
  7. 事件驱动架构(EDA):事件有 Schema 可校验,具备 QoS 保障与失败响应;用于增强服务韧性、CQRS(命令查询责任分离)、数据变化通知、构建开放式接口、事件流处理、事件触发响应。

五、案例要点:某快递公司核心业务上云

原架构 VMware + Oracle;改造三步:引入云原生数据库(OLTP 与 OLAP 拆分)、应用容器化(环境一致、提效)、微服务改造(按业务域拆分,用 Kubernetes 服务发现替代 OGG 同步)。架构分层:基础设施(裸金属服务器 + Kubernetes)→ 流量接入(云 DNS/PrivateZone + Ingress)→ 平台层(打通 DevOps、资源隔离、日志/链路/Metrics 集成)→ 应用服务层(每应用独立 Namespace)→ 运维管理(托管版容器服务)。效益:成本(按需付费)、稳定性(云产品提供 5 个 9=99.999% 以上 SLA)、效率(持续集成缩短至分钟级)、赋能业务。业务体量:日订单千万量级、亿级物流轨迹、TB 级日增数据、1300+ 计算节点。

考试怎么考

易混辨析

对比 微服务 小服务 MiniService
颗粒度 更细 一组关系密切的服务的组合,共享数据
适用 通用 非常大型的软件系统,避免接口过细导致调用损耗与治理复杂度
对比 弹性 韧性
管什么 规模随业务量伸缩 异常下的持续服务能力
指标 资源利用率、上线周期 MTBF、容灾级别

一秒记忆

"服弹观韧自零演"(服务化、弹性、可观测、韧性、自动化、零信任、演进)——七原则; "服、网、无、存、事、观、件"(服务化、Mesh、Serverless、存储计算分离、分布式事务、可观测、事件驱动)——七模式; 云原生代码:"业务代码是主角,另外两个是配角"。

相关