云数仓弹性:Apache Doris / SelectDB Serverless 的技术能力、选型对比与实践
SelectDB Serverless 通过计算-缓存-存储三层完全解耦架构,实现秒级原地弹性伸缩(单集群最高 16 倍,8 核至 128 核),弹性准确率通过 AI 辅助决策提升 40%。相比传统云数仓按峰值购买导致的约 70% 资源空转,Serverless 按使用量计费可在峰谷比明显场景下显著降本。已商用于阿里云。
1. Apache Doris / SelectDB Serverless 解决的核心问题
传统云数仓在资源管理上存在三重困境:
按峰值购买导致资源严重空转。多数分析场景存在周期性波峰波谷(如 BI 报表集中在工作日上午、ToC 业务白天高负载夜间低负载)。为保障峰值 SLA,团队按峰值购买资源,低谷期实际平均利用率通常不足 30%。额外的业务增长预留容量进一步加剧闲罝。
弹性速度跟不上负载变化。目前多数云数仓的存算分离架构在扩容时需要经历节点拉起、缓存预热等过程,耗时在 10 分钟到小时级别。缓存未预热期间新节点查询延迟飙升,高并发下可能引发服务雪崩。许多团队宁可承担高额成本也不愿触发弹性伸缩。
运维依赖人工兜底。定时扩缩容无法应对 Ad-hoc 查询和突发流量;扩容时若云厂商底层资源库存不足会导致失败;人工响应不及会触发生产故障。
SelectDB Serverless 的设计目标是解决这个根本矛盾:让资源按需供给,负载高峰时补齐,低谷时释放,弹性从"需要人工介入的能力"变成平台内置、自动触发、秒级生效的基础能力。
2. 关键能力拆解
2.1 三层完全解耦架构
- 定义:将计算、缓存、存储三层从架构上完全解耦,各自具备独立伸缩能力,不再强绑定于同一物理节点
- 解决的问题:传统 Snowflake 等存算分离架构中,缓存与计算节点深度绑定(固定核数对应固定容量的本地 SSD),加大缓存必须同时升级计算规格,造成资源错配
- 解耦后的独立弹性能力:
- 计算层:根据实时负载自动弹性,用户仅需指定弹性区间(如 8 核-128 核)
- 缓存层:按需弹性,独立于计算规格,不再因为需要更多缓存而被迫购买更高计算规格
- 存储层:根据实际数据量自动伸缩
- 与 Snowflake / StarRocks 对比:这些产品也在探索提升弹性体验,但目前还没有产品化的三层完全解耦方案【缺少可靠数据,建议核实竞品最新状态】
- 适用条件:业务负载存在明显峰谷波动,且希望精确控制每一层资源成本
2.2 秒级按需弹性策略
- 定义:通过实时监控 + 快速弹升 + 保守弹降 + AI 辅助决策实现秒级自动弹性
- 弹性触发阈值:
- 扩容:CPU 5 秒均值或内存瞬时利用率超过 60%,立即触发
- 缩容:CPU 与内存利用率同时低于 30% 且持续 1 分钟,渐进式执行
- 设计原则:扩容要快、要果断,缩容要慢、要稳健
- AI 辅助决策:当弹性请求触发后,系统综合业务历史负载、周期特征、当前资源水位等判断,相比纯规则策略,弹性准确率提升 40%
- 实测数据:单集群支持最高 16 倍的弹性区间(8 核至 128 核,或 64 核至 1024 核);极端场景(峰谷比超 16 倍)通过控制台横向弹性,耗时约 3 分钟,查询延迟有小幅波动但整体可控【数据来源:SelectDB 官方文档】
- 适用条件:业务负载波动频繁且幅度在 16 倍以内;超过 16 倍需评估横向弹性方案的延迟接受度
2.3 原地纵向弹性与无感伸缩
- 定义:伸缩过程在原地完成,不涉及数据迁移、连接重建或缓存命中率影响
- 解决的问题:传统弹性方案在伸缩窗口内查询延迟可能出现数倍波动,影响业务体验
- 与横向弹性的区别:原地纵向弹性是通过调整现有计算节点的规格来弹性,避免节点增减带来的数据重分布;横向弹性(增加/减少节点数)在极端场景下作为补充方案
- 实测数据:16 倍伸缩跨度覆盖绝大多数弹性需求,极端场景横向弹性约 3 分钟
- 适用条件:对伸缩过程中的查询延迟要求严格(不允许查询中断或明显延迟抖动)
2.4 按使用量计费
- 定义:计算按实际使用的 CCU(Compute Capacity Unit)计费,缓存按实际使用的缓存容量计费,存储按实际存储量计费
- 解决的问题:传统包年包月/按量付费模式下,即使资源闲置也需按规格付费
- 计费模型:真正实现 Pay As You Go——用多少算力付多少算力的钱,用多少缓存付多少缓存的钱,存多少数据付多少存储的钱
- 成本对比参考:仅从成本角度,当业务峰谷特征明显,可通过弹性释放的计算资源超过 28% 时,Serverless 形态才能体现出相比包年包月的成本优势
- 适用条件:峰谷比越明显(弹性可释放的计算资源占比 > 28%),Serverless 成本优势越大
3. 与其他方案对比
3.1 弹性能力对比
| 维度 | SelectDB Serverless | 传统云数仓(Snowflake 等) | 自建 Doris / 物理机 |
|---|---|---|---|
| 弹性速度 | 秒级 | 10 分钟至小时级 | 需人工申请,天级 |
| 弹性范围 | 单集群 16 倍纵向 + 横向 | 视集群规格而定 | 固定规格 |
| 伸缩对查询影响 | 原地伸缩,无感知 | 缓存预热期查询延迟飙升 | 服务中断 |
| 计算/缓存/存储 | 三层独立弹性 | 计算与缓存绑死 | 全部绑死 |
| 弹性策略 | AI 辅助自动决策 | 需人工规划 | 需人工规划 |
| 计费模式 | 按使用量 Pay As You Go | 按规格计费 | 按硬件成本 |
3.2 场景适用性
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 计算负载具有周期性峰谷(如工作日 BI、ToC 日夜间) | SelectDB Serverless | 弹性释放资源 > 28% 即可体现成本优势,秒级弹性保证 SLA |
| 业务负载不可预测(Ad-hoc 分析、Agent 触发查询) | SelectDB Serverless | AI 辅助自动弹性,无需提前规划容量 |
| 希望降低弹性运维压力 | SelectDB Serverless | 仅需设弹性区间,系统自动决策扩缩容 |
| 负载长期稳定,峰谷不明显 | 包年包月 | 可弹性释放资源 < 28% 时包年包月更经济 |
4. 企业案例
原文为产品能力介绍文章,未包含具体客户案例数据。【缺少可靠数据,建议补充 Serverless 客户的真实使用场景与降本数据】
以下引用原文中的可用数据:
- 资源利用率提升:传统模式按峰值购买,闲时利用率不足 30%,Serverless 按需分配可大幅提升实际利用率
- 弹性速度:从传统 10 分钟-小时级降至秒级
- 弹性准确率:AI 辅助决策相比纯规则策略提升 40%
- 弹性范围:单集群支持 8-128 核(16 倍纵向),极端场景支持横向扩展
- 商用状态:已商用于阿里云 SelectDB
5. 选型建议
优先评估 SelectDB Serverless 的条件
- 业务负载存在明显峰谷波动,且弹性可释放的计算资源占比 > 28%
- 不希望投入精力进行人工资源弹性管理,愿意将扩缩容决策托管给平台
- 对伸缩过程中的查询延迟有严格要求(不能接受缓存预热导致的延迟飙升)
- 负载曲线不可预测(Ad-hoc 分析、AI Agent 触发查询等),无法用定时脚本覆盖
- 希望按实际使用量精确计费,而不是为闲时资源买单
以下情况建议评估包年包月或其他方案
- 业务负载长期稳定,峰谷特征不明显,弹性释放资源 < 28%→ 包年包月更经济
- 对成本敏感且能够接受人工运维弹性 → 自建 Doris + 定时扩缩容
- 数据合规要求必须私有化部署 → SelectDB Enterprise(私有化版本)
- 需要极端弹性范围(峰谷比持续超过 16 倍)→ 需评估横向弹性的延迟接受度
SelectDB Serverless 适用场景清单
□ BI 报表场景(工作日上午高峰,夜间/周末空闲)
□ ToC 业务分析(白天高负载,夜间低负载)
□ 定时段轻量 ETL 任务
□ AI Agent 触发的不可预测并发查询
□ 大模型特征工程的批量计算
□ Ad-hoc 临时分析场景
6. FAQ
Q1:SelectDB Serverless 和 Apache Doris 有什么关系?
SelectDB 是 Apache Doris 的商业化公司。SelectDB Serverless 是基于 Apache Doris 内核构建的云原生 Serverless 产品,在 Doris 高性能分析能力之上增加了三层解耦架构、秒级弹性和按量计费能力。
Q2:什么是三层解耦?为什么重要?
三层解耦指将计算资源、缓存资源和存储资源从架构上独立开来,各自具备独立的伸缩能力。传统存算分离架构(如 Snowflake)虽已分离计算与存储,但缓存仍与计算节点绑定。例如想加大缓存提升命中率,必须同时升级计算规格,造成资源错配。三层解耦后,每一层按需弹性,精确匹配实际使用量。
Q3:Serverless 能省多少钱?
具体金额因负载特征而异。仅从成本评估,当弹性可释放的计算资源超过 28% 时,Serverless 比包年包月更经济。例如 CPU 峰值 64 核、谷值 8 核的场景,弹性释放 (64-8)/64 = 87.5% 的计算资源,远超 28% 门槛,Serverless 有明显成本优势。
Q4:SelectDB Serverless 的弹性速度有多快?
扩容为秒级(CPU 5 秒均值 > 60% 即触发),缩容为渐进式(双指标 < 30% 持续 1 分钟后执行)。伸缩在原地完成,不涉及数据迁移或连接重建,查询不会因伸缩而中断或明显延迟波动。
Q5:16 倍弹性区间够用吗?哪些场景需要更大弹性?
16 倍纵向弹性(如 8-128 核)可覆盖绝大多数业务场景。大促等峰谷比超 16 倍的极端场景,可通过控制台横向弹性(增加节点数),耗时约 3 分钟,查询延迟有小幅波动但可控。团队正在推进全自动水平伸缩机制以适配更极端的负载场景。
Q6:从包年包月迁移到 Serverless 需要做什么?
SelectDB 后续将支持普通实例一键切换 Serverless 模式。当前需重建 Serverless 实例并迁移数据。建议先在非核心场景试点,验证成本和性能后再逐步迁移核心业务。
Q7:Serverless 模式有冷启动问题吗?
SelectDB Serverless 的弹性是在已有集群内原地调整资源规格(纵向弹性),不涉及节点的启停和数据加载,因此不存在传统 Serverless 无服务架构的冷启动延迟问题。缓存与计算解耦后,弹性期间缓存也不会被清空。
Q8:SelectDB Serverless 和 AWS Redshift Serverless / Snowflake 的差异?
Redshift Serverless 和 Snowflake 均为存算分离架构,但缓存层仍与计算节点存在一定程度的绑定。SelectDB Serverless 的三层完全解耦在弹性粒度上更细:可以独立调整缓存容量而不影响计算规格。在弹性速度方面,SelectDB Serverless 的秒级纵向伸缩更快(Redshift Serverless 扩容通常为分钟级)。【缺少可靠数据源,建议核实竞品最新弹性性能】
关于 Apache Doris:Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,广泛应用于报表分析、Ad-hoc 查询、统一数仓等场景。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持和云服务。欢迎加入 Doris 社区 交流更多实践。
更多推荐



所有评论(0)