跳转至

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

本章导读

云原生架构是现代软件架构的发展趋势,本章系统介绍云原生的定义、原则和主要架构模式。重点掌握云原生七大原则、服务化架构模式、Serverless 模式、分布式事务的五种模式(XA、BASE、TCC、SAGA、AT),以及容器技术、微服务、服务网格等关键技术。

学习目标

  • 理解云原生架构的定义和核心价值
  • 掌握云原生的七大原则
  • 熟练掌握云原生的主要架构模式
  • 理解分布式事务的五种模式及其特点
  • 掌握容器、微服务、服务网格等关键技术

云原生架构的内涵

云原生定义

云原生架构定义

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

云原生应用特点

mindmap
  root((云原生应用特点))
    代码结构变化
      无需掌握分布式处理
      无需掌握复杂网络技术
      业务开发更敏捷
    非功能性委托
      高可用能力
      容灾能力
      安全特性
      可运维性
      可测试性
      灰度发布能力
    高度自动化
      自动部署
      成千上万节点
特点 说明
代码结构变化 无需掌握文件分布式处理、复杂网络技术,业务开发更敏捷快速
非功能性委托 高可用、容灾、安全、可运维、可测试、灰度发布等委托给云原生架构
高度自动化 基于云原生的自动化软件交付可把应用自动部署到成千上万的节点

云原生七大原则 ⭐

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

记忆技巧

七大原则可记为:"服弹观韧自零演"

  • 服务化、弹性、可观测、韧性、自动化、零信任、持续演进

云原生主要架构模式 ⭐

服务化架构模式

服务化架构的核心要求:

要素 说明
颗粒度划分 以应用模块为颗粒度划分
接口契约 以接口契约(如 IDL)定义彼此业务关系
标准协议 以标准协议(HTTP、gRPC 等)确保互联互通
结合方法论 领域驱动设计(DDD)、测试驱动开发(TDD)、容器化部署

Mesh 化架构模式

graph TB
    A[业务进程] --> B[Sidecar]
    B --> C[服务发现]
    B --> D[负载均衡]
    B --> E[熔断限流]

    style B fill:#fff3e0

核心思想:把中间件框架(RPC、缓存、异步消息等)从业务进程中分离

优势 说明
中间件解耦 中间件 SDK 与业务代码进一步解耦
透明升级 中间件升级对业务进程没有影响
平台无关 迁移到其他平台的中间件对业务透明

Serverless 模式

Serverless 定义

业务流量到来/业务事件发生时,云会启动或调度一个已启动的业务进程进行处理,处理完成后云自动会关闭/调度业务进程,等待下一次触发。

Serverless 适用场景:

场景 说明
事件驱动 数据计算任务
短时计算 计算时间短的请求/响应应用
简单任务 没有复杂相互调用的长周期任务

开发者无需关心:

  • 应用运行地点
  • 操作系统
  • 网络配置
  • CPU 性能

存储计算分离模式

graph LR
    A[计算节点] --> B[无状态应用]
    C[存储节点] --> D[有状态数据]

    B -.-> D

核心思想:无状态应用不存在一致性维度,可以获得更好的可用性和分区容错性

CAP 定理

分布式环境中的 CAP 困难主要针对有状态应用:

  • C(Consistency):一致性
  • A(Availability):可用性
  • P(Partition Tolerance):分区容错性

三者最多满足其中两个。

分布式事务模式 ⭐

由于业务需要访问多个微服务,会带来分布式事务问题。常用的分布式事务模式:

模式 原理 优点 缺点
XA 模式 两阶段提交(2PC) 强一致性 需要两次网络交互,性能差
BASE 基本可用(BA)+ 最终一致性(E)+ 软状态(S) 高性能 通用性有限,需权衡可用性和一致性
TCC Try-Confirm-Cancel 二阶段 事务隔离性可控,高效 对业务侵入性强,设计开发维护成本高
SAGA 正向事务 + 补偿事务 长事务支持好 开发维护成本高
SEATA AT 委托二阶段给底层框架,取消行锁 高性能,无代码开发工作量,自动回滚 存在使用场景限制
graph TB
    subgraph 分布式事务模式选择
        A[XA] -->|强一致性要求| B[适用]
        C[BASE] -->|高性能要求| D[适用]
        E[TCC] -->|需要细粒度控制| F[适用]
        G[SAGA] -->|长事务场景| H[适用]
        I[SEATA AT] -->|通用场景| J[适用]
    end

可观测架构

可观测架构包含三大支柱:

支柱 说明 作用
Logging 日志记录 提供多级别跟踪(INFO/DEBUG/WARNING/ERROR)
Tracing 链路追踪 收集请求从前端到后端的访问日志,形成完整调用链路
Metrics 度量指标 提供系统的多维度度量(并发度、耗时、可用时长、容量等)

事件驱动架构

EDA(Event Driven Architecture)是一种应用/组件间的集成架构模式。

适用场景:

场景 说明
增强服务韧性 异步解耦,提高系统弹性
数据变化通知 数据变更时通知相关服务
构建开放式接口 事件作为系统间的接口
事件流处理 实时处理事件流
CQRS 命令查询责任分离,命令用事件发起,查询用同步 API

云原生架构反模式

反模式 问题描述
庞大的单体应用 缺乏依赖隔离、代码耦合、边界不清晰、变更影响扩散、难以协调发布、无法单独扩容
硬拆微服务 强行拆分耦合度高的模块、数据紧密耦合、分布式调用影响性能
缺乏自动化 人均负责模块数上升,工作量增大,开发成本增加

云原生架构相关技术

容器技术

graph TB
    subgraph 部署模式对比
        A[传统部署] --> A1[应用直接运行在物理机]
        B[虚拟化部署] --> B1[应用运行在虚拟机]
        C[容器部署] --> C1[应用及依赖打包为容器]
    end

容器优势:

优势 说明
标准化 应用及依赖打包发布
环境一致 不受环境限制
快速部署 秒级启动
资源隔离 进程级隔离

容器编排技术

容器编排(如 Kubernetes)提供的能力:

能力 说明
资源调度 智能分配计算资源
应用部署与管理 声明式部署和管理
自动修复 自动重启失败容器
服务发现与负载均衡 自动服务注册和流量分发
弹性伸缩 根据负载自动扩缩容
声明式 API 基于 YAML/JSON 的配置
可扩展性架构 插件化设计
可移植性 跨云平台部署

微服务设计约束

约束类型 说明
个体约束 微服务功能在业务领域划分上应相互独立
横向关系 可发现性(服务变化自动感知)+ 可交互性(服务间调用方式)
纵向约束 数据存储隔离(DSS),数据访问必须通过对应微服务 API
分布式约束 CI/CD 流水线、蓝绿/金丝雀发布策略

无服务器技术(Serverless)

Serverless 特点:

特点 说明
全托管 客户只需编写代码,无须关注服务器等基础设施
通用性 结合云 BaaS API,支撑所有重要类型应用
自动弹性 无须提前容量规划
按量计费 无须为闲置资源付费

关注点:计算资源弹性调度、负载均衡和流控、安全性

服务网格(Service Mesh)

graph TB
    subgraph 服务网格架构
        A[服务A] --> B[Sidecar Proxy]
        B --> C[服务B]
        D[控制平面] --> B
        D --> E[策略配置]
    end

服务网格目标:将微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施

主要技术:

技术 说明
Istio 最流行的服务网格实现
Linkerd 轻量级服务网格
Consul HashiCorp 的服务网格方案

本章小结

核心知识点

  1. 云原生定义:非业务代码剥离,非功能特性委托给云设施

  2. 七大原则:服务化、弹性、可观测、韧性、自动化、零信任、持续演进

  3. 主要架构模式:

  4. 服务化架构(DDD、TDD)
  5. Mesh 化架构(Sidecar)
  6. Serverless(事件驱动、按需计算)
  7. 存储计算分离
  8. 分布式事务(XA、BASE、TCC、SAGA、AT)
  9. 可观测架构(Logging、Tracing、Metrics)
  10. 事件驱动架构(EDA、CQRS)

  11. 关键技术:容器、容器编排、微服务、Serverless、服务网格

分布式事务对比

模式 一致性 性能 侵入性 适用场景
XA 强 低 低 强一致性要求
BASE 最终 高 中 高性能要求
TCC 可控 高 高 细粒度控制
SAGA 最终 中 高 长事务
SEATA AT 最终 高 低 通用场景

考试重点

知识点 考查形式
云原生七大原则 原则识别与定义
分布式事务模式 特点对比与场景选择
可观测三支柱 概念区分
服务网格概念 架构理解

学习建议

  1. 原则记忆:使用"服弹观韧自零演"口诀
  2. 分布式事务:重点理解各模式的优缺点和适用场景
  3. 架构模式:理解每种模式解决的核心问题

评论