17-云原生架构设计实践

17-云原生架构设计实践(第17小时)

软考-系统架构设计师 | 第4篇 架构设计实践知识 出题形式:下午案例分析题(必出 25 分)+ 上午选择题(2-4 分)+ 论文题 分值占比:约 25-30 分(重点!必出案例


0. 考点分析

  • 云原生定义与特点:剥离非业务代码、委托非功能性
  • 云原生 7 大原则:服务化、弹性、可观测、韧性、自动化、零信任、持续演进
  • 6 大架构模式:服务化、Mesh 化、Serverless、存储计算分离、分布式事务、可观测、事件驱动
  • 5 种分布式事务模式:XA / BASE / TCC / SAGA / SEATA AT
  • 容器 vs 虚拟化 vs 传统部署
  • Serverless 4 特点
  • Service Mesh(Istio/Linkerd/Consul)
  • 3 种云原生反模式

1. 核心架构知识

1.1 云原生架构内涵

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

应用特点

  1. 代码结构发生巨大变化:不再需要掌握文件及其分布式处理技术、各种复杂的网络技术
  2. 非功能性特性大量委托:高可用、容灾、安全、可运维、易用、可测试、灰度等
  3. 高度自动化的软件交付:自动部署到成千上万的节点上

1.2 云原生 7 大原则

原则含义
服务化原则通过服务化架构把不同生命周期的模块分离出来,分别进行业务迭代
弹性原则系统的部署规模可以随着业务量的变化而自动伸缩
可观测原则通过日志、链路跟踪和度量等手段,使多次服务调用的耗时、返回值和参数都清晰可见
韧性原则软件所依赖的软硬件组件出现各种异常时,软件表现出来的抵御能力
所有过程自动化原则让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化
零信任原则不应该信任网络内部和外部的任何人/设备/系统,需要基于认证和授权重构访问控制的信任基础
架构持续演进原则架构具备持续演进能力

1.3 云原生 6 大架构模式

1.3.1 服务化架构模式

  • 以应用模块为颗粒度划分应用软件
  • 以**接口契约(IDL)**定义业务关系
  • 以**标准协议(HTTP、gRPC)**确保互联互通
  • 结合 DDD(领域驱动设计)、TDD(测试驱动开发)、容器化部署

1.3.2 Mesh 化架构模式

  • 把中间件框架(RPC、缓存、异步消息)从业务进程中分离
  • 中间件 SDK 与业务代码进一步解耦
  • 中间件升级对业务进程没有影响

1.3.3 Serverless 模式

  • 业务流量到来/事件发生时,云启动/调度业务进程
  • 处理完成后自动关闭/调度业务进程
  • 开发者不用关心应用运行地点、操作系统、网络配置、CPU 性能
  • 适用场景:事件驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务

1.3.4 存储计算分离模式

  • 分布式环境中的 CAP 困难(C-一致性、A-可用性、P-分区容错性)最多满足其中两个
  • 无状态应用不存在一致性维度,可获得更好的可用性和分区容错性,因而弹性更好

1.3.5 分布式事务模式(5 种对比)

模式机制优点缺点
XA 模式2PC 两阶段提交强一致性性能差(两次网络交互)
BASE 模式基于消息的最终一致性性能高通用性有限(最终一致)
TCC 模式Try-Confirm-Cancel 二阶段隔离性可控,高效业务侵入性强,开发维护成本高
SAGA 模式正向事务 + 补偿事务长事务支持开发维护成本高
SEATA AT 模式二阶段委托给框架 + 取消行锁高性能,无代码工作量有使用场景限制

1.3.6 可观测架构(3 大支柱)

支柱作用
Logging提供多个级别跟踪,如 INFO/DEBUG/WARNING/ERROR
Tracing收集从前端到后端的访问日志聚合,形成完整调用链路跟踪
Metrics提供系统量化的多维度度量(并发度、耗时、可用时长、容量)

1.3.7 事件驱动架构(EDA)

应用/组件间的集成架构模式。适用于:

  • 增强服务韧性
  • 数据变化通知
  • 构建开放式接口
  • 事件流处理
  • CQRS(命令查询的责任分离):把对服务状态有影响的命令用事件发起,对状态没有影响的查询才使用同步 API

1.4 云原生反模式(3 种)

  1. 庞大的单体应用:缺乏依赖隔离,代码耦合,整体扩容难
  2. 单体应用"硬拆"为微服务:强行拆分耦合度高、代码量少的模块;拆分后分布式调用严重影响性能
  3. 缺乏自动化能力的微服务:人均负责模块数上升,工作量增大

1.5 云原生相关技术

1.5.1 容器技术

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

部署模式对比

维度传统部署虚拟化部署容器部署
OS共享每 VM 独立 OS共享 OS
启动速度最慢秒级
资源占用
隔离性

1.5.2 容器编排技术

8 大能力:

  • 资源调度
  • 应用部署与管理
  • 自动修复
  • 服务发现与负载均衡
  • 弹性伸缩
  • 声明式 API
  • 可扩展性架构
  • 可移植性

1.5.3 微服务设计 4 大约束

约束内容
微服务个体约束在业务领域划分上应是相互独立的
微服务之间横向关系处理可发现性(自动感知变化)和可交互性(调用方式)
微服务与数据层纵向约束提倡 DSS(数据存储隔离),数据访问必须通过对应微服务 API
全局分布式约束全自动 CI/CD 流水线,支持蓝绿、金丝雀发布策略

1.5.4 无服务器(Serverless)4 大特点

  1. 全托管的计算服务:客户只编写代码,无须关注开发、运维、安全、高可用
  2. 通用性:结合 BaaS API 支撑云上所有重要类型应用
  3. 自动弹性伸缩:无须为资源使用提前容量规划
  4. 按量计费:成本有效降低,无须为闲置资源付费

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

1.5.5 服务网格(Service Mesh)

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

架构:服务 A 调用服务 B 的所有请求都被其下的服务代理截获,代理服务 A 完成到服务 B 的服务发现、熔断、限流等策略,控制平面(Control Plane)配置策略。

主要技术:Istio、Linkerd、Consul

1.6 实践案例

案例 1:电商大促场景的云原生实践

  • 服务化:订单、商品、用户、支付拆分为微服务
  • 弹性:K8s HPA 根据 CPU/流量自动扩缩容
  • 韧性:Sentinel 限流熔断
  • 可观测:Prometheus + Grafana + Jaeger

案例 2:Serverless 文件处理

  • 用户上传文件 → 触发函数计算 → 处理完成后自动销毁
  • 适用场景:图片压缩、日志分析、转码

2. 关键概念速查

概念定义/说明常见考点
云原生基于云原生技术的架构原则和设计模式集合7 大原则、6 大模式
IDLInterface Description Language接口契约
DDDDomain-Driven Design领域驱动设计
TDDTest-Driven Design测试驱动开发
CAPConsistency/Availability/Partition tolerance三选二
2PCTwo-Phase Commit两阶段提交
TCCTry-Confirm-Cancel业务侵入性强
SAGA长事务拆分补偿事务
BASEBasically Available/Soft state/Eventually consistent弱一致
XA分布式事务规范强一致但慢
SEATA AT阿里分布式事务自动回滚
CQRSCommand Query Responsibility Segregation命令查询分离
EDAEvent-Driven Architecture事件驱动
Serverless无服务器4 大特点
Service Mesh服务网格Istio/Linkerd
HPAHorizontal Pod AutoscalerK8s 弹性伸缩
蓝绿发布Blue-Green Deployment两套环境切换
金丝雀发布Canary Release灰度发布
DSSData Storage Segregation数据存储隔离

3. 典型例题(案例分析题)

例题 1:选择题(陷阱题)

题目:云计算无法为企业带来的改进是( )。

A. 通过 DevSecOps 应用开发模式,业务功能开发更加敏捷,提升迭代速度,成本更低 B. 企业软件架构可以获得强大的可伸缩性和高可用性 C. 结合云平台全方位企业级安全服务和安全合规能力,保障企业应用在云上安全构建 D. 企业的开发人员只须关注业务代码部分的开发,非业务功能可以完全委托给云原生架构来解决

参考答案D 解析:云原生架构可以将非业务代码部分最大化剥离,让云设施接管大量非功能特性,但无法接管所有的非功能特性。


例题 2:选择题

题目:下列关于云原生架构原则的描述,错误的是( )。

A. 服务化原则、弹性原则、韧性原则 B. 可观测原则、所有过程自动化原则 C. 零信任原则、接口隔离原则 D. 架构持续演进原则

参考答案C 解析接口隔离原则是面向对象设计原则,不是云原生架构原则。


例题 3:选择题(陷阱题)

题目:关于微服务的描述,错误的是( )。

A. 微服务是将后端单体应用拆分为松耦合的多个子应用 B. 微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率 C. 微服务与数据层之间的纵向约束的含义是:在合理划分好微服务间的边界后,主要从微服务的可发现性和可交互性处理服务间的关系 D. 驾驭微服务的前提是高效运维整个系统,从技术上要准备全自动化的 CI/CD 流水线

参考答案C 解析:可发现性和可交互性是横向关系。正确的纵向约束是:对于微服务的私有数据的访问都必须通过当前微服务提供的 API 来访问(DSS 数据存储隔离原则)。


例题 4:选择题

题目:无服务器技术的特点之一是全托管的计算服务:客户只需要编写代码构建应用,无须关注同质化的、负担繁重的基于服务器等基础设施的( )等工作。

A. 开发、测试、发布、交付 B. 开发、运维、安全、高可用 C. 机房建设、服务器装机、操作系统安装、软件安装 D. 资源调度、性能压测、负载均衡、数据统计

参考答案B 解析:无服务器免去的是开发、运维、安全、高可用等负担。


例题 5:选择题

题目:容器作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受( )限制,在不同计算环境间快速、可靠地运行。

A. 环境 B. 操作系统 C. 硬件 D. 网络

参考答案A 解析:B、C、D 都有局限性,A 最贴切——容器消除了对环境(OS、硬件、网络)的依赖。


4. 论文素材

本章是论文题出题范围,以下 3 个题目方向可以重点准备:

  1. 论云原生架构在企业数字化转型中的应用

    • 写作要点:7 大原则、容器+编排、Serverless 实践
    • 实战案例:从传统单体迁移到 K8s + 微服务的过程
  2. 论微服务架构的分布式事务处理方案选择

    • 写作要点:CAP 理论、5 种事务模式对比、SEATA AT 实践
    • 实战案例:电商订单+库存+支付的事务一致性
  3. 论云原生应用的可观测性体系构建

    • 写作要点:Logging/Tracing/Metrics 三大支柱
    • 实战案例:Prometheus + Grafana + Jaeger 监控体系

5. 高频考点

  1. 7 大原则:每年必考,零信任/接口隔离的区分
  2. 6 大架构模式:服务化/Mesh 化/Serverless/存储计算分离/分布式事务/事件驱动
  3. 5 种分布式事务模式对比:CAP 理论与 BASE 妥协
  4. 容器 vs 虚拟化:部署模式对比
  5. 微服务 4 大约束:横纵向约束区分
  6. Serverless 4 大特点:免去开发/运维/安全/高可用
  7. 可观测 3 大支柱:Logging/Tracing/Metrics
  8. Service Mesh 主要技术:Istio/Linkerd/Consul
使用 Hugo 构建
主题 StackJimmy 设计