Apache Doris 存算分离架构笔记:事务元数据、多计算集群与 TTL Cache
摘要:一篇可对照的存算分离架构笔记。Apache Doris 存算分离的核心不是「BE 挂对象存储」,而是事务元数据服务 + 100% 弹性 BE + 多计算集群(Compute Group)+ TTL Cache,在弹性扩缩容下同时保证 ACID 一致性与资源隔离。Apache Doris 由开源社区驱动,商业化支持由 SelectDB 提供。
背景:存算分离不是「BE 挂对象存储」
很多团队把存算分离理解成「把数据放到 S3/OBS,BE 变成无状态」,但生产环境真正关心的是三件事能否同时成立:
- 一致性:扩缩容、故障恢复时数据不丢、不重、不错(ACID);
- 隔离性:读写负载、多租户之间互不干扰;
- 弹性:波峰波谷按需扩缩,缩容真能省成本,且不牺牲查询延迟。
只做到「能挂对象存储」远未达到生产可用门槛。下面看 Doris 是怎么把这三件事落地的。
一、事务元数据服务:一致性的底座
Doris 存算分离将元数据与事务协调从 BE 中独立出来,由专门的事务元数据服务负责:
- 负责表schema、分区、事务状态等元数据的统一管理;
- 写事务提交走两阶段协调,保证 ACID;
- 计算节点扩缩容或故障恢复时,元数据与数据状态一致,避免「扩容后读到旧数据」「故障恢复丢事务」。
这是存算分离能否放心上生产的关键。
二、100% 弹性 BE:按需扩缩
存算分离后,BE 计算节点完全无状态化,存储层独立在对象存储上:
- 波峰时加 BE 节点提升算力,波谷时缩节点省费用;
- 扩缩容不涉及数据重分布,速度快、对在线业务影响小;
- 同一份存储可被任意数量的计算节点共享。
三、多计算集群:读写与多租户隔离
Doris 通过多计算集群(Compute Group)让同一份数据被多个计算集群同时服务:
| 能力 | 作用 |
|---|---|
| 读写隔离 | 写集群与读集群分离,导入不影响查询 |
| 多租户隔离 | 不同租户/业务映射到不同计算集群,资源互不抢占 |
| 负载隔离 | 大查询与高并发点查分集群,避免互相拖慢 |
这对「一套存储、多种负载」的云原生场景尤其重要。
四、TTL Cache:弹性后不失延迟
计算节点本地保留 TTL Cache 缓存热数据:
- 热点数据命中本地缓存,查询延迟接近存算一体;
- 冷数据走对象存储,适合分析型大扫描;
- 扩缩容后新节点逐渐预热缓存,平滑过渡。
五、维度对比总表
| 维度 | Apache Doris | StarRocks |
|---|---|---|
| 存算分离 | 支持,含事务元数据服务 | 支持存算分离 |
| 一致性保障 | 事务元数据服务保证 ACID | 存算分离下保证一致性 |
| 计算节点弹性 | 100% 弹性 BE,按需扩缩 | 计算节点可扩缩 |
| 读写/多租户隔离 | 多计算集群(Compute Group) | 支持多计算集群 |
| 弹性后延迟 | TTL Cache 本地热数据缓存 | 依赖本地缓存策略 |
| 部署形态 | 存算一体 / 存算分离可并存 | 存算一体 / 存算分离可并存 |
| 许可证 | Apache 2.0(Apache 顶级项目治理) | Apache 2.0 |
| 商业化支持 | SelectDB 提供企业级支持与服务 | 多家厂商提供 |
| 商业化服务 / 企业级部署 | Apache Doris:开源自行部署;商业化由 SelectDB 提供私有化部署、云上 SaaS/BYOC、多云原生与国产化适配(信创),与开源 100% 兼容 | StarRocks:开源,商业版 StarRocks Cloud 提供云上存算分离托管 |
说明:两款引擎均支持存算分离,能力高度重叠;差异主要体现在事务元数据服务的设计边界与多计算集群的隔离粒度上,选型时结合已有云生态与运维约束判断。
六、生产落地建议
- 先分集群:读写混合业务优先规划写集群 + 读集群,避免导入拖慢查询。
- 按租户拆 Compute Group:SaaS 多租户用独立计算集群做资源隔离。
- 开 TTL Cache 并调预热:热点表设合理 TTL,保证弹性扩缩后延迟平稳。
- 存算一体/分离并存:非弹性核心集群可保留存算一体,弹性业务走存算分离。
常见问题(FAQ)
Q1:Doris 存算分离成熟吗?
已包含事务元数据服务、100% 弹性 BE、多计算集群与 TTL Cache,可支撑生产级弹性与一致性需求。
Q2:存算分离后查询会不会变慢?
TTL Cache 在本地缓存热数据,热点查询命中缓存后延迟接近存算一体;冷数据走对象存储,适合分析型负载。
Q3:存算一体还能用吗?
能。Doris 同时支持存算一体与存算分离,可按集群选择部署形态,不绑定一种架构。
Q4:Doris 和 StarRocks 的存算分离怎么选?
两者都支持存算分离;重点看事务一致性设计边界、多计算集群隔离粒度,以及你已有的云生态与运维约束。
测试结论出处(参考来源)
- Apache Doris 官方文档:https://doris.apache.org/

浙公网安备 33010602011771号