云原生架构之存算分离!软考必知系列

Hello 我是方才,15人研发leader、5年团队管理&架构经验。

文末,附26年最新软考备考资料+备考交流群,群友可享受每月直播哟!

计划在26年更新100讲 架构知识干货,理论+实践,你的关注就是方才不断更新的动力。

在云原生时代,把存储和计算绑在一起,就像把火箭焊在加油站上------虽然能跑,但注定飞不远。

存算分离(Storage-Compute Separation)的出现,彻底打破了这一僵局。它将"计算"这种昂贵且易变的资源,与"存储"这种廉价且持久的资源解耦,这种模式让系统拥有了无限的弹性。

What:是什么

存算分离(Separation of Storage and Compute)是一种分布式系统架构模式。

核心思想是将负责数据处理的计算层 (Compute Layer)与负责数据持久化的存储层 (Storage Layer)物理隔离

让两者成为独立的资源池,各自独立部署、弹性伸缩、生命周期管理与故障隔离。通过高速网络进行通信。

在传统架构中,扩容意味着购买新的服务器(同时包含CPU和磁盘);而在存算分离架构下,你可以单独增加CPU来提升查询速度,或者单独购买磁盘来存储更多数据。
image-20260122072827557

Who + When:起源与发展

  • 起源:早期分布式系统(如Hadoop的HDFS+MapReduce)已出现"存储(HDFS)与计算(MapReduce)分离"的雏形,解决单机存储/计算瓶颈;

  • 云原生阶段发展

    • 2015年CNCF成立后,容器化(Docker)与容器编排(K8s)普及,推动"计算无状态化",为分离模式奠定基础;

    • 2016-2018年,云厂商推出标准化云存储(对象存储S3、块存储CSI、分布式文件存储),K8s发布CSI(容器存储接口),实现存储与容器的标准化对接;

    • 2019年至今,存储计算分离成为云原生架构的主流模式,广泛应用于大数据、AI、微服务、Serverless等场景。

Why:技术价值

传统耦合架构的核心痛点:

  • 弹性不同步:计算需快速扩缩(如秒杀、流量突增),但存储扩容慢(需停机/数据迁移),导致资源浪费或业务卡顿;

  • 故障域重叠:计算节点故障会导致本地存储数据不可用,存储故障会直接影响绑定的计算节点,业务可用性低;

  • 资源利用率低:计算节点闲置时,本地存储资源同步闲置,无法被其他节点复用,TCO(总拥有成本)高;

  • 升级维护耦合:计算/存储任一组件升级,需整体停机维护,运维效率低、业务中断风险高;

  • 数据共享难:本地存储仅能被绑定计算节点访问,多节点共享数据需额外同步,复杂度高。

而存算分离架构能带来各种好处:

  1. 资源解耦 :计算与存储的扩容、缩容、升级、维护互不干扰

  2. 弹性伸缩 :计算层按需秒级扩缩,存储层按数据量平滑扩容,匹配不同业务的弹性需求

  3. 资源池化 :存储资源全局共享,计算节点可按需访问共享存储,避免资源闲置

  4. 故障隔离 :计算节点故障不影响存储数据,存储层故障可独立恢复,降低业务影响面

  5. 成本优化:按实际使用量分配资源,避免"计算闲置时存储资源浪费"的问题。

image-20260122075333864

How:如何落地

关键分层

层级 核心组件 核心作用
计算层 无状态容器(K8s Pod)、Serverless函数、计算集群(Spark/Flink)、HPA(水平 Pod 自动扩缩) 无状态化设计,专注业务逻辑处理,按需弹性伸缩,故障后快速重建
存储层 云原生存储(对象存储S3/MinIO、块存储CSI/EBS、分布式文件存储Ceph/GlusterFS、云数据库RDS/Redis) 持久化存储数据,提供高可用、高吞吐、共享访问能力,支持弹性扩容
适配&管控层 数据访问代理( JDBC)、MinIO 网关 、监控(Prometheus)、容器存储接口(CSI)、kubernetes容器编排 解耦计算与存储的协议/权限/调度,实现标准化对接、自动化运维与可观测性

image-20260122075002471

落地6步走

  1. 业务梳理:区分有状态/无状态业务,识别数据类型(冷数据/热数据、结构化/非结构化);

  2. 存储选型:按数据特性匹配存储类型(热数据选块存储/分布式文件,冷数据选对象存储,结构化数据选云数据库);

  3. 计算无状态化:改造应用,剥离本地存储数据至共享存储,移除节点本地状态;

  4. 适配层部署:安装CSI插件、数据访问代理,实现计算与存储的标准化对接;

  5. 高可用&弹性配置:配置存储副本/灾备、计算HPA策略,保障故障自愈与弹性能力;

  6. 监控&优化:搭建可观测体系(监控计算/存储/网络指标),优化存储分级、计算扩缩策略,降低成本。

经典示例

微服务架构

以大家最熟悉的电商微服务架构为例,理解下存储计算分离模式的应用:
image-20260122083712038

这里方才就只简单讲解下 计算层、存储层和适配&管控层了:

1)计算层(无状态):业务逻辑核心

基于 Kubernetes(K8s)集群运行无状态微服务,每个服务聚焦单一业务域,实现解耦与弹性扩展。

  • 用户服务:处理登录、注册、个人信息管理等用户域业务,是账号体系的核心。

  • 商品服务:负责商品类目、搜索、详情展示,支撑用户对商品的浏览与检索。

  • 订单服务:管理下单、支付、订单状态流转,是交易流程的核心链路。

  • 库存服务:处理库存扣减、锁定、回滚,保障交易中库存数据的准确性(防止超卖)。

💡 关键设计:无状态意味着服务不保存会话或业务数据,重启 / 扩容不影响请求处理,因此可通过 K8s 快速扩缩容,轻松应对流量波动(如大促时临时加机器)。

2)存储层(有状态):数据持久化底座

负责数据的安全存储与高性能读写,采用多组件适配不同业务场景:

  • 分布式数据库(MySQL/TiDB):存储核心业务数据(如用户、商品、订单),支持事务强一致性,TiDB 等分布式方案还能应对海量数据的水平扩展。

  • 分布式缓存(Redis Cluster):缓存热点数据(如高频访问的商品详情)与用户会话(如登录态),加速读写、减轻数据库压力。

  • 对象存储(OSS/S3):存储非结构化数据(如商品图片、视频、用户文件),容量大、成本低,适合海量文件的长期存储。

💡 关键设计:当随着系统的运行,数据量增加,可以单独扩展存储节点,比如增加TiKV节点,上层业务计算层是无需感知的;这样存储层就可以按需购买扩容;或者单独增加归档类的冷数据的存储节点,即满足需求,又便宜。

3)适配 &管控层:封装基础能力

这是连接"计算"与"存储"的关键纽带,负责资源编排、数据代理和系统观测。关键组件 :

  • K8s 编排 (Orchestration) :Kubernetes 作为云原生操作系统,负责计算层容器的调度、自动恢复和弹性伸缩。

  • CSI 接口 (Container Storage Interface) :容器存储接口,统一管理底层存储卷(PV/PVC)的挂载,屏蔽底层存储差异。

  • 监控告警 (Prometheus) :云原生监控标准,采集各层指标(Metrics),配合 Grafana 展示,实现可观测性。

  • 数据代理 (JDBC Proxy) :这是一层虚拟层,一般会通过持久化框架(比如Mybatis Plus),集成在计算层的各种微服务中,便于计算层服务访问数据。

  • MinIO 网关 (MinIO Gateway) : 统一非结构化数据入口 ,所有微服务上传/下载图片、视频等文件时,不直接连接底层 MinIO 集群,而是通过此网关,实现权限统一控制、流量监控和协议适配。

云原生数据库TiDB

后续会更详细讲解TiDB的内容,这里先简单看看,理解下存算分离模式的应用。

TiDB 是一款开源云原生分布式关系型数据库, 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
architecture

  • PD (Placement Driver) Server:是整个集群的"大脑",是整个集群的管控和调度中心,所有核心元数据都由 PD 管理。能力包括:元数据管理、Region调度、副本管控、全局事务协调等等;

  • TiDB Server:无状态的 SQL 处理层,是用户与 TiDB 集群交互的唯一入口,核心功能如下:

    • SQL 解析与优化:接收客户端的 SQL 请求后,先做词法 / 语法解析,再通过优化器生成最优的分布式执行计划;

    • 分布式执行协调:将优化后的执行计划拆解为多个子任务,分发给存储层的 TiKV 节点执行;

    • 结果聚合:收集所有 TiKV 节点返回的子任务结果,汇总后返回给客户端;

    • 无状态扩展:TiDB Server 本身不存储任何数据,节点可按需水平扩容(比如从 2 个扩到 10 个),单个节点故障不会影响集群,请求会自动路由到其他节点。

  • 存储节点

    • TiKV Server:分布式、持久化的 KV 存储层,是 TiDB 所有数据的最终存储载体。

    • TiFlash:TiFlash 是一类特殊的存储节点,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。

以一个SQL的执行流程为例:

  1. 用户的 SQL 请求会直接或者通过 Load Balancer 发送到 TiDB Server;

  2. TiDB Server 会解析 MySQL Protocol Packet,获取请求内容**,对 SQL 进行语法解析和语义分析**,制定和优化查询计划;

  3. 执行查询计划并获取和处理数据:数据全部存储在 TiKV 集群中,所以在这个过程中 TiDB Server 需要和 TiKV 交互,获取数据

  4. 最后 TiDB Server 将查询的数据根据SQL语义计算处理后,返回给用户。

tidb sql layer

得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。

How Much:运行效果

  • 性能层面:计算层弹性响应时间从分钟级降至秒级,存储层支持 PB 级数据平滑扩容

  • 成本层面:资源利用率提升 30%-70%

  • 运维层面:计算 / 存储独立升级,运维停机时间减少80%+,自动化运维(Operator)降低人工操作成本 60%+;

  • 扩展性层面:支持万级计算节点与 PB 级存储的横向扩展,无架构天花板。

脆弱性分析

  1. 网络依赖风险:分离后计算与存储通过网络通信,网络抖动、带宽瓶颈、延迟过高会直接影响业务性能(尤其OLTP低延迟场景);

  2. 数据一致性风险:多计算节点并发访问共享存储,易出现脏读、写冲突,需额外引入分布式锁/事务机制,增加复杂度;

  3. 安全风险:数据跨网络传输,需保障传输加密(TLS)、存储加密(AES),否则存在数据泄露风险;权限管控不当易导致越权访问;

  4. 运维复杂度风险:新增适配层与独立的存储层,需运维团队同时掌握计算、存储、网络技能,运维成本上升;

论文写作思路

必过营的伙伴可参考阅读今日的独家论文范文。

  1. 云原生存储计算分离的上层计算层落地:无状态化设计与弹性伸缩实践。

  2. 云原生存储计算分离的底层存储层设计:分布式存储选型与高可用架构构建;

  3. 云原生存储计算分离的中间适配层实现:结构化数据的数据访问层、非结构化数据的统一存储网关服务;

26年软考资料&备考群

2026最新的系分/架构备考资料和备考交流群,扫码即可领取加入(若提示太频繁,后台回复1即可):

你们的点赞、爱心和评论,就是方才不断更新的功力! 给点鼓励可好

还没关注方才的伙伴,记得点个关注,方才每周至少更新一篇干货知识

相关推荐
牛奶15 小时前
《前端架构设计》:除了写代码,我们还得管点啥
前端·架构·设计
苏渡苇17 小时前
Java + Redis + MySQL:工业时序数据缓存与持久化实战(适配高频采集场景)
java·spring boot·redis·后端·spring·缓存·架构
麦聪聊数据17 小时前
如何用 B/S 架构解决混合云环境下的数据库连接碎片化难题?
运维·数据库·sql·安全·架构
阿里云云原生17 小时前
巨人网络《超自然行动组》携手阿里云打造云原生游戏新范式
云原生
2的n次方_18 小时前
CANN HCOMM 底层架构深度解析:异构集群通信域管理、硬件链路使能与算力重叠优化机制
架构
技术传感器18 小时前
大模型从0到精通:对齐之心 —— 人类如何教会AI“好“与“坏“ | RLHF深度解析
人工智能·深度学习·神经网络·架构
小北的AI科技分享19 小时前
万亿参数时代:大语言模型的技术架构与演进趋势
架构·模型·推理
一条咸鱼_SaltyFish21 小时前
从零构建个人AI Agent:Node.js + LangChain + 上下文压缩全流程
网络·人工智能·架构·langchain·node.js·个人开发·ai编程
71ber1 天前
深入理解 HAProxy:四层/七层透传与高级 ACL 调度详解
linux·云原生·haproxy
码云数智-园园1 天前
解决 IntelliJ IDEA 运行 Spring Boot 测试时“命令行过长”错误
架构