🏠 首页›第二梯队 · 案例选答专题 · 第 17 小时 · 云原生架构设计

云原生架构设计理论与实践

选择 2~4 分案例 25 分论文高频
📄 教材出处 · 第 17 小时《云原生》 (书第 144–150 页) ▸ 查看原文摘录 打开教材 PDF ↗
第 144 页 ↗1 云原生架构设计理论与实践 17.0 章节考点分析 主要学习云原生架构设计理论与实践。
第 145 页 ↗云原生架构设计理论与实践 137 【导读小贴士】 云原生(Cloud Native)是近几年云计算领域炙手可热的话题,云原生技术已成为驱动业务增 长的重要引擎。
第 146 页 ↗ 4.主要架构模式 云原生涉及的主要架构模式有: (1)服务化架构模式:要求以应用模块为颗粒度划分一个应用软件,以接口契约(例如IDL) 定义彼此业务关系,以标准协议(HTTP、gRPC等)确保彼此的互联互通,结合领域模型驱动(Domain Driven Design,DDD)、测试动开发(Test Driven Design,TDD)、容器化部署提升每个接口的代码 质量和迭代速度。
第 147 页 ↗云原生架构设计理论与实践 139 跟踪,例如INFO/ DEBUG/WARNING/ERROR;
第 148 页 ↗2.容器编排技术 容器编排技术包括资源调度、应用部署与管理、自动修复、服务发现与负载均衡、弹性伸缩、 声明式API、可扩展性架构、可移植性。
第 149 页 ↗云原生架构设计理论与实践 141 Pilot 图17.3 服务网格的典型架构 17.3 练习题 1.云的时代需要新的技术架构,来帮助企业应用能够更好地利用云计算优势,充分释放云计 算的技术红利。

知识点目录(共 6 项)

  1. 云原生架构内涵与核心特征(容器化 / 微服务 / DevOps / 持续交付)
  2. 容器技术与 Docker:镜像 / 仓库 / 容器
  3. Kubernetes 容器编排:Pod / Service / 控制平面
  4. 服务网格 Istio:数据平面 Sidecar + 控制平面
  5. 不可变基础设施 / 声明式 API / Serverless
  6. 传统 vs 虚拟化 vs 容器部署模式对比;云原生改造路径

知识点详解

一、云原生架构内涵

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

基于云原生的应用特点 3 条:① 代码结构发生巨大变化(不再需掌握文件及分布式处理、复杂网络技术,开发更敏捷快速);② 非功能性特性大量委托给云原生架构解决(高可用、容灾、安全、可运维、易用、可测试、灰度发布);③ 高度自动化的软件交付(可自动部署到成千上万节点)。

云原生七大原则(必背):

原则要点
① 服务化原则通过服务化架构把不同生命周期的模块分离出来,分别进行业务迭代
② 弹性原则系统的部署规模可以随业务量变化而自动伸缩
③ 可观测原则通过日志、链路跟踪和度量等手段,使多次服务调用的耗时、返回值和参数清晰可见
④ 韧性原则软件依赖的软硬件组件出现异常时,软件表现出来的抵御能力
⑤ 所有过程自动化原则让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化
⑥ 零信任原则不信任网络内部和外部的任何人/设备/系统,基于认证和授权重构访问控制的信任基础
⑦ 架构持续演进原则架构具备持续演进能力
⚠️ 真题陷阱:"接口隔离原则"是面向对象设计原则,不是云原生架构原则——出题人常把它混进选项。

主要架构模式 7 种:

模式核心要点
① 服务化架构模式以应用模块为粒度划分,以接口契约(IDL)定义业务关系,以标准协议(HTTP、gRPC)互联互通,结合 DDD、TDD、容器化部署
② Mesh 化架构模式把中间件框架(RPC、缓存、异步消息)从业务进程中分离,中间件 SDK 与业务代码解耦,中间件升级对业务进程无影响
③ Serverless 模式业务流量到来/事件发生时云启动业务进程,处理完自动关闭;开发者不关心运行地点、OS、网络配置、CPU 性能。适合事件驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务
④ 存储计算分离模式CAP 困难主要针对有状态应用;无状态应用不存在一致性维度,可获得很好的可用性和分区容错性,弹性更好
⑤ 分布式事务模式XA(2PC 强一致但两次网络交互性能差)、BASE(基本可用+最终一致,性能高但通用性有限)、TCC(Try-Confirm-Cancel 二阶段,隔离性可控高效但业务侵入性强)、SAGA(正向事务配补偿事务,开发维护成本高)、SEATA 的 AT 模式(二阶段委托给底层框架、取消行锁,高性能无代码开发量)
⑥ 可观测架构三大支柱:Logging(多级别跟踪 INFO/DEBUG/WARNING/ERROR)、Tracing(请求从前端到后端的完整调用链路)、Metrics(并发度、耗时、可用时长、容量等多维量化度量)
⑦ 事件驱动架构 EDA应用/组件间集成架构模式。适用:增强服务韧性、数据变化通知、构建开放式接口、事件流处理、CQRS(命令查询职责分离——影响状态的命令用事件发起,不影响状态的查询用同步 API)

典型云原生反模式 3 种:① 庞大的单体应用(缺乏依赖隔离、代码耦合、边界不清晰、只能整体扩容);② 单体应用"硬拆"为微服务(强行拆分耦合度高、代码量少的模块;拆分后数据紧密耦合;分布式调用严重影响性能);③ 缺乏自动化能力的微服务(人均负责模块数上升、工作量增大)。

二、容器技术与 Docker

容器是标准化软件基础单元,将应用及其所有依赖项打包发布,使应用不再受环境限制,在不同计算环境间快速、可靠地运行。

传统部署 APP 操作系统 硬 件 虚拟化部署 APP APP APP Bin/Lib Bin/Lib Bin/Lib 虚拟机 虚拟机 虚拟机 操作系统 硬 件 容器部署 APP APP APP Container 容器(共享 Bin/Lib) Container Runtime 操作系统(共享) 硬 件 虚拟机:每个 VM 带完整 Guest OS,重;容器:共享宿主 OS 内核,轻、秒级启动 传统部署:应用直接跑在 OS 上,环境依赖易冲突
图 1 传统部署 vs 虚拟化部署 vs 容器部署

三、容器编排与 Kubernetes

容器编排技术 8 项能力:资源调度、应用部署与管理、自动修复、服务发现与负载均衡、弹性伸缩、声明式 API、可扩展性架构、可移植性。

K8s 核心概念:Pod(最小调度单元,一组容器的组合)、Service(一组 Pod 的稳定访问抽象)、控制平面(调度与状态管理)。核心思想是通过声明式 API 描述期望状态,控制器持续对比实际状态并向期望状态收敛。

四、微服务设计约束(四条,案例常考)

约束要点
① 微服务个体约束微服务的功能在业务领域划分上应相互独立
② 微服务间横向关系划分好边界后,从可发现性(服务 A 发布/扩缩容时,依赖它的服务 B 不重新发布就能自动感知)和可交互性(服务 A 用什么方式调用服务 B)处理关系
③ 微服务与数据层纵向约束提倡数据存储隔离(DSS)原则:对数据的访问都必须通过相应微服务提供的 API 来访问
④ 全局视角下的分布式约束高效运维整个系统,技术上实现全自动化 CI/CD 流水线,支持蓝绿、金丝雀等发布策略
⚠️ 真题陷阱:"从可发现性和可交互性处理服务间关系"属于横向关系(微服务之间),不是纵向约束——纵向约束说的是 DSS 数据隔离。两者常被互换偷换。

五、无服务器 Serverless 技术

四大特点(必背):

关注点:计算资源弹性调度(容错、资源利用率、性能、数据驱动)、负载均衡和流控、安全性。

六、服务网格 Service Mesh

旨在将微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。

控制平面 Control Plane 策略总控:路由规则 / 熔断限流策略 / 安全策略配置(Istio Pilot 等) 服务 A Sidecar 代理 服务 B Sidecar 代理 服务 C Sidecar 代理 服务 A 调用服务 B 的所有请求都被 Sidecar 截获,代理完成服务发现、熔断、限流等策略 策略总控在控制平面配置 · 主要技术:Istio、Linkerd、Consul
图 2 服务网格典型架构:数据平面 Sidecar + 控制平面

七、传统 vs 云原生改造路径

传统应用上云的一般路径:单体应用 → 容器化改造(Docker 化)→ 微服务拆分 → 引入 K8s 编排 → Mesh 化/Serverless 化 → 全链路可观测与 DevOps 自动化。改造的核心判断标准是"哪些非功能特性可以剥离给云"——弹性伸缩、容灾、灰度、安全加固越能下沉,业务代码越专注,交付越敏捷。

⚠️ 真题提醒:"企业的开发人员只须关注业务代码,非业务功能可以完全委托给云原生架构来解决"——错。云原生只能接管大量非功能特性,无法接管所有。
💡 本节框架:"一个定义(剥离非业务代码)+ 七大原则(服弹观韧自零演)+ 七种模式 + 四条微服务约束 + Serverless 四特点 + Service Mesh 双平面"。反模式三兄弟:大单体、硬拆微服务、无自动化微服务。