乐于分享
好东西不私藏

软考系统架构师 · 全册考点精讲与真题实战 第 14 章 云原生架构

软考系统架构师 · 全册考点精讲与真题实战 第 14 章 云原生架构

所属篇章:下篇·案例分析考查形式:案例分析题 + 论文题难度等级:★★★★★(新教材重点章节,近年高频出题)


一、本章知识图谱

云原生架构├── 14.1 云计算基础(IaaS/PaaS/SaaS)├── 14.2 云原生核心概念├── 14.3 容器化技术(Docker/Kubernetes)├── 14.4 微服务架构设计├── 14.5 DevOps 与 CI/CD├── 14.6 Serverless 架构└── 14.7 典型案例分析

二、核心考点详解

考点 1:云计算服务模型

模型
全称
提供内容
用户管理
提供商管理
IaaS
基础设施即服务
虚拟机、存储、网络
OS、中间件、应用
硬件、虚拟化
PaaS
平台即服务
运行时、数据库、中间件
应用和数据
OS、运行时
SaaS
软件即服务
完整应用
配置和数据
一切

部署模型:公有云、私有云、混合云、社区云

考点 2:云原生核心概念

云原生(Cloud Native) 是专门为云环境设计和运行应用的方法论。

CNCF 定义的云原生技术栈:

  • 容器化
    Docker、containerd
  • 微服务
    服务拆分、独立部署
  • 服务网格
    Istio、Linkerd
  • 声明式 API
    Kubernetes 声明式配置
  • 不可变基础设施
    通过替换而非修改来更新

云原生 12 要素应用:

要素
说明
基准代码
一份代码,多份部署
依赖
显式声明依赖
配置
配置存储在环境中
后端服务
把后端服务当附加资源
构建、发布、运行
严格分离
进程
无状态进程
端口绑定
通过端口对外提供服务
并发
通过进程模型扩展
易处理
快速启动、优雅关闭
开发/生产一致
保持环境一致性
日志
日志作为事件流
管理进程
一次性任务作为独立进程

考点 3:容器化技术

3.1 Docker 核心概念

概念
说明
镜像(Image)
只读模板,包含运行环境和应用
容器(Container)
镜像的运行实例
Dockerfile
构建镜像的脚本
Registry
镜像仓库(Docker Hub)

3.2 Kubernetes(K8s)核心组件

控制平面:

组件
功能
API Server
集群的统一入口
etcd
分布式键值存储(集群状态)
Controller Manager
管理控制器(副本、节点等)
Scheduler
Pod 调度

工作节点:

组件
功能
kubelet
管理 Pod 生命周期
kube-proxy
服务发现和负载均衡
Container Runtime
运行容器

K8s 核心资源对象:

对象
说明
Pod
最小调度单元,包含一个或多个容器
Deployment
管理 Pod 的声明式更新
Service
为一组 Pod 提供稳定的访问入口
Ingress
HTTP 路由规则
ConfigMap/Secret
配置和敏感数据
Namespace
逻辑隔离

考点 4:微服务架构

微服务设计原则:

  1. 单一职责
    每个服务围绕一个业务能力
  2. 自治性
    独立开发、部署、扩展
  3. 去中心化
    每个服务有自己的数据库
  4. 容错设计
    熔断、降级、限流
  5. 可观测性
    日志、指标、链路追踪

微服务关键模式:

模式
说明
API 网关
统一入口,路由、鉴权、限流
服务注册与发现
服务动态注册和查找
断路器(Circuit Breaker)
防止级联故障
Saga 模式
分布式事务编排
CQRS
读写分离
事件溯源
以事件序列作为状态来源
Sidecar
辅助容器处理横切关注点

考点 5:DevOps 与 CI/CD

DevOps 核心理念:开发(Dev)和运维(Ops)的协作与自动化。

CI/CD 流水线:

代码提交 → 构建 → 单元测试 → 代码扫描 → 打包 → 部署测试环境 → 集成测试 → 部署生产

CI(持续集成):频繁合并代码,自动化构建和测试CD(持续交付/部署):自动化部署到各环境

考点 6:Serverless 架构

Serverless 特点:

  • 无需管理服务器
  • 按需自动伸缩
  • 按执行量计费
  • 事件驱动

两种形式:

形式
说明
示例
FaaS
函数即服务
AWS Lambda、阿里云函数计算
BaaS
后端即服务
Firebase、云数据库

三、案例分析题解析

【案例题】某互联网公司云原生改造

背景:某互联网公司原有单体应用部署在自建机房,面临发布周期长、扩展困难、运维成本高等问题。

问题:请设计云原生改造方案。

参考答案:

1. 应用拆分(微服务化)

  • 将单体应用拆分为用户服务、订单服务、商品服务、支付服务等
  • 每个服务独立数据库,通过 API 网关统一入口
  • 使用消息队列实现服务间异步通信

2. 容器化部署

  • 使用 Docker 将各服务打包为容器镜像
  • 使用 Kubernetes 进行容器编排和管理
  • 采用 Deployment + Service + Ingress 的标准部署模式

3. CI/CD 流水线

  • 使用 GitLab CI / Jenkins 构建自动化流水线
  • 代码提交后自动构建、测试、部署到测试环境
  • 通过蓝绿部署或金丝雀发布上线生产环境

4. 可观测性体系

  • 日志:ELK Stack 集中收集
  • 指标:Prometheus + Grafana 监控
  • 链路追踪:Jaeger / SkyWalking 全链路追踪

5. 容错设计

  • 服务熔断:Sentinel / Hystrix
  • 服务限流:令牌桶算法
  • 服务降级:非核心功能自动降级

考点 7:服务网格(Service Mesh)

服务网格是微服务间通信的基础设施层,以 Sidecar 代理方式部署。

功能
说明
流量管理
路由、负载均衡、金丝雀发布
安全
mTLS、身份认证、授权
可观测性
分布式追踪、指标采集
弹性
重试、超时、熔断

代表产品:Istio + Envoy、Linkerd

考点 8:云原生安全

云原生安全原则:

  • 最小权限的容器运行
  • 镜像扫描和签名验证
  • 网络策略(Network Policy)
  • 密钥管理(Vault、K8s Secrets)
  • 运行时安全监控

考点 9:GitOps 与基础设施即代码

实践
说明
工具
IaC
用代码定义基础设施
Terraform、Ansible
GitOps
Git 作为唯一真相源
ArgoCD、Flux
配置管理
声明式配置
Helm、Kustomize

三、补充历年真题解析

真题 2022 年·综合知识

题目:在 Kubernetes 中,Pod 的最小调度单位是(  )。

A. 容器  B. Pod  C. Node  D. Namespace

答案:B

解析:Pod 是 Kubernetes 的最小调度单位,一个 Pod 可以包含一个或多个容器,这些容器共享网络和存储。容器不是调度单位(A 错),Node 是运行 Pod 的机器(C 错)。

真题 2023 年·综合知识

题目:以下关于 Serverless 架构的叙述中,不正确的是(  )。

A. 无需管理服务器B. 按执行时间计费C. 适合长时间运行的任务D. 自动伸缩

答案:C

解析:Serverless(如 AWS Lambda)通常有执行时间限制(通常不超过 15 分钟),不适合长时间运行的任务。Serverless 适合事件驱动、短时执行的场景。

真题 2023 年·案例分析

题目:某企业计划将单体应用迁移到云原生架构。请从容器化、服务拆分、CI/CD、可观测性四个方面设计迁移方案。

参考答案:

1. 容器化

  • 将各服务打包为 Docker 容器镜像
  • 使用多阶段构建减小镜像体积
  • 镜像推送到私有 Registry

2. 服务拆分

  • 基于 DDD 限界上下文拆分服务
  • 每个服务独立数据库
  • 使用 API 网关统一入口
  • 服务间通过 gRPC 或消息队列通信

3. CI/CD

  • Git 提交触发自动构建和测试
  • 使用 GitOps 方式管理部署(ArgoCD)
  • 蓝绿部署或金丝雀发布

4. 可观测性

  • 日志:Fluentd + Elasticsearch + Kibana
  • 指标:Prometheus + Grafana
  • 追踪:Jaeger 或 OpenTelemetry

考点 10:云原生架构原则

教材提出的云原生架构设计原则:

  1. 服务化原则
    将应用拆分为独立服务
  2. 弹性原则
    系统能够自动伸缩和容错
  3. 可观测原则
    日志、指标、追踪全面覆盖
  4. 韧性原则
    系统能够抵抗故障并自动恢复
  5. 所有过程自动化
    CI/CD、自动伸缩、自动修复
  6. 零信任原则
    不信任任何网络位置
  7. 架构持续演进
    小步快跑、持续迭代

考点 11:主要云原生架构模式

模式
说明
适用场景
聚合器微服务
一个服务调用多个服务聚合结果
复合查询
代理微服务
根据请求转发到不同服务
智能路由
链式微服务
服务间顺序调用形成链
流程处理
分支微服务
服务同时调用多个下游服务
并行处理
事件驱动微服务
通过事件异步通信
松耦合场景
数据共享微服务
服务间共享数据层
强一致需求

考点 12:典型云原生架构反模式

反模式
问题
解决方案
单体应用
无法独立扩展和部署
拆分为微服务
分布式单体
服务间过度耦合
解耦服务依赖
数据库共享
多服务共享同一数据库
每个服务独立 DB
服务粒度不当
服务太细或太粗
DDD 限界上下文指导
忽视可观测性
无法定位问题
全面可观测体系
缺乏弹性设计
级联故障
熔断、限流、降级

四、补充历年真题解析

真题 2022 年·综合知识

题目:以下关于云原生架构反模式的叙述中,正确的是(  )。

A. 分布式单体是推荐的架构模式B. 多个微服务共享同一数据库是良好的实践C. 服务粒度应基于 DDD 限界上下文确定D. 云原生架构不需要可观测性

答案:C

解析:服务粒度应基于 DDD 限界上下文确定,避免过细或过粗。分布式单体是反模式(A 错),数据库共享也是反模式(B 错),可观测性是云原生的核心原则(D 错)。

真题 2021 年·综合知识

题目:以下关于微服务架构的叙述中,正确的是(  )。

A. 微服务必须使用相同的编程语言B. 每个微服务应该有独立的数据库C. 微服务间必须采用同步通信D. 微服务架构不需要服务注册与发现

答案:B

解析:微服务架构的核心原则是每个服务拥有独立的数据库,避免服务间的数据耦合。微服务可以使用不同语言(A 错),可以用异步通信(C 错),服务注册与发现是必需的(D 错)。

真题 2023 年·案例分析

题目:某电商平台的订单服务在促销期间出现级联故障,导致整个系统不可用。请分析可能的原因并提出解决方案。

参考答案:

问题分析:

  1. 订单服务依赖的下游服务(库存、支付)响应超时
  2. 未实施熔断机制,导致故障级联扩散
  3. 缺乏限流措施,流量超过系统承载能力
  4. 无降级策略,所有请求都走完整流程

解决方案:

  1. 熔断器模式(Circuit Breaker)
    当下游服务失败率达到阈值时自动熔断,快速返回默认响应
  2. 限流
    令牌桶算法限制请求速率,保护后端服务
  3. 服务降级
    促销高峰期简化非核心功能(如评论、推荐)
  4. 异步处理
    将订单创建放入消息队列异步处理
  5. 超时与重试
    设置合理超时时间,指数退避重试

四、补充考点

考点 11:容器编排与 Kubernetes 进阶

概念
说明
Operator 模式
自定义资源 + 控制器,自动化运维
Helm
K8s 包管理工具,Chart 模板
Namespace
逻辑隔离多租户,资源配额管理
HPA/VPA
水平/垂直自动伸缩
Pod Disruption Budget
滚动更新时保证最小可用 Pod 数
Service Mesh
基础设施层处理服务间通信

K8s 网络模型:每个 Pod 独立 IP、所有容器共享 Pod 网络、Pod 间可直接通信

考点 12:服务网格(Service Mesh)

组件
说明
Istio
最流行的 Service Mesh 实现
Envoy
数据平面代理(Sidecar 模式)
Pilot(Istiod)
控制平面,服务发现、流量管理
Mixer
策略执行、遥测采集

核心能力:流量管理(金丝雀发布、A/B测试)、安全(mTLS双向认证)、可观测性(Tracing/Metrics)

流量镜像(Mirroring):将生产流量复制到新版本服务进行测试,不影响用户响应

考点 13:GitOps 与云原生 CI/CD

概念
说明
GitOps
Git 作为唯一真实来源,声明式配置
ArgoCD
K8s 原生的持续交付工具
Flux
自动同步 Git 与集群状态
镜像仓库
Harbor、Docker Registry

GitOps 工作流:开发者 Push 代码 → CI 构建镜像 → 更新 Git 仓库中的 K8s manifest → ArgoCD 自动同步部署

考点 14:可观测性(Observability)

支柱
工具
说明
日志(Logging)
ELK、Loki、Fluentd
结构化日志采集与查询
指标(Metrics)
Prometheus、Grafana
时序数据采集与告警
链路追踪(Tracing)
Jaeger、Zipkin、SkyWalking
分布式请求链路可视化

Prometheus 架构:Pull 模型拉取指标 → TSDB 存储 → PromQL 查询 → Alertmanager 告警

分布式追踪核心:TraceID(全局唯一)+ SpanID(单个操作)实现全链路追踪

考点 15:Serverless 架构深入

概念
说明
FaaS
函数即服务,事件驱动执行(Lambda、云函数)
BaaS
后端即服务(数据库、认证等托管服务)
冷启动
函数实例未预热时首次调用延迟高
预热策略
定时调用保持实例存活,减少冷启动
编排
Step Functions、Serverless Workflow

冷启动优化:减小包体积、预置并发、运行时优化、层(Layers)复用

真题 2022 年·综合知识

题目:在 Kubernetes 中,关于 Service Mesh 的叙述正确的是(  )。

A. Service Mesh 要求每个服务自行处理服务发现和负载均衡B. Service Mesh 通过 Sidecar 代理透明拦截服务间通信C. Service Mesh 只能处理 HTTP 协议流量D. Service Mesh 的控制平面负责实际数据转发

答案:B

解析:Service Mesh 通过在每个 Pod 中注入 Sidecar 代理(如 Envoy)透明拦截所有入站/出站流量。服务发现/负载均衡由 Mesh 处理(A 错),支持多协议(C 错),控制平面负责策略和配置下发,数据平面负责实际转发(D 错)。

真题 2023 年·综合知识

题目:以下关于可观测性三大支柱的叙述中,正确的是(  )。

A. 日志、指标、链路追踪三者互相独立,无法关联B. 链路追踪中的 TraceID 用于标识单个操作C. Prometheus 采用 Push 模型采集指标数据D. 三大支柱结合可全面掌握分布式系统运行状态

答案:D

解析:可观测性三大支柱(Logging/Metrics/Tracing)结合可全面观察系统状态。三者可关联(A 错),TraceID 标识全链路,SpanID 标识单个操作(B 错),Prometheus 采用 Pull 模型(C 错)。

真题 2022 年·案例分析

题目:某公司计划将单体应用迁移到云原生架构,请设计迁移策略。

参考答案:

  1. 绞杀者模式(Strangler Fig)
    逐步剥离单体功能到微服务,而非一次性重写
  2. 容器化打包
    将单体应用 Docker 化,部署到 K8s
  3. 数据库拆分
    逐步将共享数据库拆分为服务独立数据库
  4. API 网关
    在单体和新微服务间统一入口,透明路由
  5. 双写策略
    迁移期间同时写入新旧数据库,确保数据一致性
  6. 可观测性建设
    部署 Prometheus + Grafana + Jaeger,确保迁移过程可监控

五、本章小结

  1. 云服务模型
    IaaS/PaaS/SaaS 的区分
  2. 云原生要素
    容器化、微服务、DevOps、声明式 API
  3. Kubernetes
    控制平面和工作节点的核心组件
  4. 微服务模式
    API 网关、断路器、Saga、CQRS
  5. CI/CD
    持续集成和持续交付的流水线设计
  6. Serverless
    FaaS 和 BaaS 的特点,冷启动优化
  7. Service Mesh
    Istio/Envoy,Sidecar 模式,流量管理
  8. GitOps
    Git 为唯一真实来源,ArgoCD 自动同步
  9. 可观测性
    日志/指标/链路追踪三大支柱
  10. 迁移策略
    绞杀者模式、容器化、双写策略

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料