【软考架构师】云原生架构设计理论与实践 核心考点与学习笔记(超详细解析+图解)
摘要:本文为软考高级系统架构设计师(第14章:云原生架构设计理论与实践)的学习笔记。内容涵盖云原生架构定义、7大核心原则、常见架构模式(服务化、Mesh化、Serverless等)、关键技术(容器、Kubernetes、微服务、服务网格)以及历年真题考点。针对架构演进和关键技术,本文利用 Mermaid 语法绘制了逻辑图,助你快速记忆,顺利通过软考!
目录
- [1. 云原生架构内涵](#1. 云原生架构内涵)
- [2. 云原生架构原则(⭐⭐⭐)](#2. 云原生架构原则(⭐⭐⭐))
- [3. 云原生主要架构模式(⭐⭐⭐)](#3. 云原生主要架构模式(⭐⭐⭐))
- [4. 云原生架构相关技术](#4. 云原生架构相关技术)
- [5. 云原生架构典型案例分析](#5. 云原生架构典型案例分析)
- [6. 典型真题与备考建议](#6. 典型真题与备考建议)
1. 云原生架构内涵
云原生架构 是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,让云设施接管应用中原有的非功能性特性(如弹性、韧性、安全、可观测性等),使业务具备轻量、敏捷、高度自动化的特点。
- 代码结构的三部分 :业务代码、三方软件、处理非功能特性的代码。云原生将非功能特性剥离到 IaaS 和 PaaS 中,但不能剥离所有(如易用性还不能完全剥离)。
- 三大核心特点 :
- 代码结构发生巨大变化:不再需要掌握文件及分布式处理技术,简化业务开发。
- 非功能性特性大量委托给云原生架构:高可用、容灾、安全、灰度发布等。
- 高度自动化的软件交付:自动部署到成千上万的节点。
2. 云原生架构原则(⭐⭐⭐)
云原生架构包含 7大核心原则,考试中常以选择题形式出现(注意区分不属于该原则的选项)。
渲染错误: Mermaid 渲染失败: Parse error on line 8: ...原则 日志(Logging)、链路跟踪(Tracing)、度量(Me ----------------------^ Expecting 'SPACELINE', 'NL', 'EOF', got 'NODE_ID'
3. 云原生主要架构模式(⭐⭐⭐)
3.1 服务化架构模式
以应用模块为颗粒度划分软件,以**接口契约(IDL)**定义业务关系,以标准协议(HTTP/gRPC)互联互通。
- 微服务:独立部署、独立扩缩容。
- 小服务模式:一组关系非常密切的服务的组合,共享数据。适用于非常大型的系统,避免接口颗粒度太细导致过多的调用损耗和治理复杂度。
3.2 Mesh化架构模式
将中间件框架(RPC、缓存等)从业务进程中分离,让中间件SDK与业务代码解耦。
- 特点:业务进程只保留很"薄"的Client,流量控制、安全等逻辑由Mesh进程完成。
- 收益:中间件升级对业务无感,获得更好的安全性(零信任架构能力)。
渲染错误: Mermaid 渲染失败: Parse error on line 8: ...务进程] --> B2薄Client (SDK协议) B2 -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'
3.3 Serverless 模式
将"部署"动作从运维中"收走",开发者只需关注业务代码,把应用的整个运行都委托给云。
- 适用场景:事件驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务。
- 不适用场景:有状态应用(调度导致上下文丢失)、长时间后台密集型计算(无法发挥Serverless优势)、频繁外部I/O(时延大)。
3.4 其他架构模式
- 存储计算分离模式:推荐把各类暂态数据、持久数据都采用云服务保存。
- 分布式事务模式:满足不同业务场景(强一致性、最终一致性等)。
- 可观测架构:Logging(开发者主动提供)、Tracing(完整调用链路跟踪)、Metrics(多维度度量)。
- 事件驱动架构:用于服务解耦、增强服务韧性。
3.5 典型的云原生反模式
- 庞大的单体应用:耦合、边界不清、无法局部扩容。
- 单体应用"硬拆"为微服务:强行拆分耦合度高、代码量少的模块。
- 缺乏自动化能力的微服务:人均工作量大,成本增加。
4. 云原生架构相关技术
4.1 容器技术
容器是标准化软件单元,将应用及其依赖项打包,不再依赖宿主机的OS类型和配置,在不同环境间快速、可靠运行。
4.2 容器编排(Kubernetes)
Kubernetes (K8s) 是容器编排的事实标准,提供分布式应用管理的核心能力:
#mermaid-svg-ou8Jzia8xes6MLXB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ou8Jzia8xes6MLXB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ou8Jzia8xes6MLXB .error-icon{fill:#552222;}#mermaid-svg-ou8Jzia8xes6MLXB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ou8Jzia8xes6MLXB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ou8Jzia8xes6MLXB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ou8Jzia8xes6MLXB .marker.cross{stroke:#333333;}#mermaid-svg-ou8Jzia8xes6MLXB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ou8Jzia8xes6MLXB p{margin:0;}#mermaid-svg-ou8Jzia8xes6MLXB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ou8Jzia8xes6MLXB .cluster-label text{fill:#333;}#mermaid-svg-ou8Jzia8xes6MLXB .cluster-label span{color:#333;}#mermaid-svg-ou8Jzia8xes6MLXB .cluster-label span p{background-color:transparent;}#mermaid-svg-ou8Jzia8xes6MLXB .label text,#mermaid-svg-ou8Jzia8xes6MLXB span{fill:#333;color:#333;}#mermaid-svg-ou8Jzia8xes6MLXB .node rect,#mermaid-svg-ou8Jzia8xes6MLXB .node circle,#mermaid-svg-ou8Jzia8xes6MLXB .node ellipse,#mermaid-svg-ou8Jzia8xes6MLXB .node polygon,#mermaid-svg-ou8Jzia8xes6MLXB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ou8Jzia8xes6MLXB .rough-node .label text,#mermaid-svg-ou8Jzia8xes6MLXB .node .label text,#mermaid-svg-ou8Jzia8xes6MLXB .image-shape .label,#mermaid-svg-ou8Jzia8xes6MLXB .icon-shape .label{text-anchor:middle;}#mermaid-svg-ou8Jzia8xes6MLXB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ou8Jzia8xes6MLXB .rough-node .label,#mermaid-svg-ou8Jzia8xes6MLXB .node .label,#mermaid-svg-ou8Jzia8xes6MLXB .image-shape .label,#mermaid-svg-ou8Jzia8xes6MLXB .icon-shape .label{text-align:center;}#mermaid-svg-ou8Jzia8xes6MLXB .node.clickable{cursor:pointer;}#mermaid-svg-ou8Jzia8xes6MLXB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ou8Jzia8xes6MLXB .arrowheadPath{fill:#333333;}#mermaid-svg-ou8Jzia8xes6MLXB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ou8Jzia8xes6MLXB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ou8Jzia8xes6MLXB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ou8Jzia8xes6MLXB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ou8Jzia8xes6MLXB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ou8Jzia8xes6MLXB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ou8Jzia8xes6MLXB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ou8Jzia8xes6MLXB .cluster text{fill:#333;}#mermaid-svg-ou8Jzia8xes6MLXB .cluster span{color:#333;}#mermaid-svg-ou8Jzia8xes6MLXB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ou8Jzia8xes6MLXB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ou8Jzia8xes6MLXB rect.text{fill:none;stroke-width:0;}#mermaid-svg-ou8Jzia8xes6MLXB .icon-shape,#mermaid-svg-ou8Jzia8xes6MLXB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ou8Jzia8xes6MLXB .icon-shape p,#mermaid-svg-ou8Jzia8xes6MLXB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ou8Jzia8xes6MLXB .icon-shape .label rect,#mermaid-svg-ou8Jzia8xes6MLXB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ou8Jzia8xes6MLXB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ou8Jzia8xes6MLXB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ou8Jzia8xes6MLXB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Kubernetes 核心能力
资源调度
应用部署与管理
自动修复
服务发现与负载均衡
弹性伸缩
4.3 微服务技术
- 主要技术:Apache Dubbo(高性能RPC)、Spring Cloud(丰富的微服务生态)。
- 设计约束 :
- 微服务个体约束:功能业务领域独立。
- 横向关系:可发现性、可交互性。
- 纵向关系(数据层):提倡**数据存储隔离(DSS)**原则。
- 全局分布式约束:全自动化 CI/CD 流水线。
4.4 无服务器技术(Serverless / FaaS)
- 特点:全托管、通用性、自动弹性伸缩、按量计费。
- 函数计算(FaaS):Serverless中最具代表性的产品形态,通过函数拆分,事件驱动触发执行。
- 关注点:计算资源弹性调度、负载均衡和流控、安全性。
4.5 服务网格(Service Mesh)
服务网格是专门处理服务通讯的基础设施层 ,核心是Sidecar模式 ,将服务通信及相关管控功能从业务程序分离,下沉到基础设施层。
- 数据平面(Data Plane):由一组 Sidecar 代理(如 Envoy)构成,接管服务流量。
- 控制平面(Control Plane):负责与数据平面代理通信,下发策略和配置。主流组件:Istio(包含 Pilot、Mixer、Citadel、Galley)。
- 主流技术:Istio、Linkerd、Consul。
#mermaid-svg-0lfVKopaSLelorMT{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-0lfVKopaSLelorMT .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-0lfVKopaSLelorMT .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-0lfVKopaSLelorMT .error-icon{fill:#552222;}#mermaid-svg-0lfVKopaSLelorMT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0lfVKopaSLelorMT .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-0lfVKopaSLelorMT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0lfVKopaSLelorMT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0lfVKopaSLelorMT .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-0lfVKopaSLelorMT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0lfVKopaSLelorMT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0lfVKopaSLelorMT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0lfVKopaSLelorMT .marker.cross{stroke:#333333;}#mermaid-svg-0lfVKopaSLelorMT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0lfVKopaSLelorMT p{margin:0;}#mermaid-svg-0lfVKopaSLelorMT .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0lfVKopaSLelorMT .cluster-label text{fill:#333;}#mermaid-svg-0lfVKopaSLelorMT .cluster-label span{color:#333;}#mermaid-svg-0lfVKopaSLelorMT .cluster-label span p{background-color:transparent;}#mermaid-svg-0lfVKopaSLelorMT .label text,#mermaid-svg-0lfVKopaSLelorMT span{fill:#333;color:#333;}#mermaid-svg-0lfVKopaSLelorMT .node rect,#mermaid-svg-0lfVKopaSLelorMT .node circle,#mermaid-svg-0lfVKopaSLelorMT .node ellipse,#mermaid-svg-0lfVKopaSLelorMT .node polygon,#mermaid-svg-0lfVKopaSLelorMT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0lfVKopaSLelorMT .rough-node .label text,#mermaid-svg-0lfVKopaSLelorMT .node .label text,#mermaid-svg-0lfVKopaSLelorMT .image-shape .label,#mermaid-svg-0lfVKopaSLelorMT .icon-shape .label{text-anchor:middle;}#mermaid-svg-0lfVKopaSLelorMT .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-0lfVKopaSLelorMT .rough-node .label,#mermaid-svg-0lfVKopaSLelorMT .node .label,#mermaid-svg-0lfVKopaSLelorMT .image-shape .label,#mermaid-svg-0lfVKopaSLelorMT .icon-shape .label{text-align:center;}#mermaid-svg-0lfVKopaSLelorMT .node.clickable{cursor:pointer;}#mermaid-svg-0lfVKopaSLelorMT .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-0lfVKopaSLelorMT .arrowheadPath{fill:#333333;}#mermaid-svg-0lfVKopaSLelorMT .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0lfVKopaSLelorMT .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0lfVKopaSLelorMT .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0lfVKopaSLelorMT .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-0lfVKopaSLelorMT .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0lfVKopaSLelorMT .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-0lfVKopaSLelorMT .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0lfVKopaSLelorMT .cluster text{fill:#333;}#mermaid-svg-0lfVKopaSLelorMT .cluster span{color:#333;}#mermaid-svg-0lfVKopaSLelorMT div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0lfVKopaSLelorMT .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-0lfVKopaSLelorMT rect.text{fill:none;stroke-width:0;}#mermaid-svg-0lfVKopaSLelorMT .icon-shape,#mermaid-svg-0lfVKopaSLelorMT .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0lfVKopaSLelorMT .icon-shape p,#mermaid-svg-0lfVKopaSLelorMT .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-0lfVKopaSLelorMT .icon-shape .label rect,#mermaid-svg-0lfVKopaSLelorMT .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0lfVKopaSLelorMT .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-0lfVKopaSLelorMT .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-0lfVKopaSLelorMT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 控制平面
数据平面
下发配置/策略
下发配置/策略
Service A
Sidecar Proxy
Service B
Sidecar Proxy
Istiod
5. 云原生架构典型案例分析
- 旅行公司:多套旧系统合并上私有云 -> 通过 K8s、服务网格提升稳定性 -> 跨地域、跨云自动化灾备,向 DevOps 演进。
- 汽车公司:容器云平台承载核心应用;私有云+公有云混合交付(敏态/稳态划分);微服务治理,构建中台。
- 快递公司:基于 K8s 的云原生架构体系,引入云原生数据库,每个应用创建独立 Namespace 实现资源隔离。
- 电商公司:大促快速扩容(容器化+弹性伸缩),接入链路追踪,全链路压测、限流保护。
6. 典型真题与备考建议
真题 1 :下列不属于云原生架构原则的是?
A. 服务化原则、弹性原则
B. 可观测原则、所有过程自动化原则
C. 零信任原则、接口隔离原则
D. 架构持续演进原则
答案:C。接口隔离原则是面向对象设计原则,不是云原生架构原则。
真题 2 :无服务器技术的技术特点之一是全托管的计算服务,客户只需编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施的( )等工作。
A. 开发、测试、发布、交付
B. 开发、运维、安全、高可用
C. 机房建设、服务器装机、操作系统安装、软件安装
D. 资源调度、性能压测、负载均衡、数据统计
答案:B。无服务器让开发者无需关注服务器的开发、运维、安全、高可用等基础设施工作。
真题 3 :容器作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受( )限制,在不同计算环境间快速、可靠地运行。
A. 环境 B. 操作系统 C. 硬件 D. 网络
答案:A。容器封装了底层OS和硬件差异,消除了不同环境(开发、测试、生产)配置的差异。
💡 备考建议
- 死磕 7 大原则:能够准确识别并理解其含义(特别是零信任、服务化、韧性)。
- 辨析架构模式:清楚 Mesh 化和 Serverless 的特点及适用场景,考试常结合案例背景考察。
- 掌握关键技术:理解 K8s 的核心功能、微服务的拆分边界和数据隔离、服务网格的控制平面与数据平面的分离思想。
标签:#软考 #系统架构设计师 #云原生架构 #Kubernetes #服务网格 #Serverless #微服务 #学习笔记