本文适合谁: 关注数据库弹性扩展、云原生成本优化和按需伸缩的技术负责人。
摘要
弹性扩展数据库是指能够根据业务负载动态调整计算和存储资源的数据库系统。传统数据库依赖垂直扩展(升级硬件),成本高且存在天花板。弹性扩展数据库通过水平扩展(增加/减少节点)实现资源按需调配,在业务高峰自动扩容、低谷自动缩容,避免资源浪费。本文解析弹性扩展的技术原理、成本优势、适用场景以及 TiDB 的弹性扩展实践。
为什么需要弹性扩展
企业业务流量呈现显著的波动特征:
| 场景 | 日常流量 | 峰值流量 | 峰值倍数 |
|---|---|---|---|
| 电商大促 | 10 万 QPS | 100 万 QPS | 10x |
| 支付日结 | 1 万 TPS | 20 万 TPS | 20x |
| 游戏活动 | 5 万 QPS | 50 万 QPS | 10x |
| 票务抢购 | 1000 TPS | 50 万 TPS | 500x |
传统数据库的问题:需要按照峰值流量配置硬件资源,导致 80% 的时间资源利用率不足。
弹性扩展的两种模式
水平扩展(Scale-Out/In)
通过增加或减少节点扩展能力:
| 特性 | 说明 |
|---|---|
| 方式 | 增加服务器节点 |
| 扩展上限 | 理论无限 |
| 弹性速度 | 分钟级到小时级 |
| 成本模型 | 按节点数量计费 |
| 代表 | TiDB、CockroachDB |
存算分离扩展
计算和存储独立扩展:
| 资源类型 | 扩展方式 | 代表 |
|---|---|---|
| 计算层 | 增减 TiDB Server 节点 | TiDB |
| 存储层 | 增减 TiKV/TiFlash 节点 | TiDB |
| 内存层 | 调整 Buffer Pool | TiDB |
TiDB 的存算分离架构允许独立扩展计算和存储,是最细粒度的弹性扩展方式。
TiDB 弹性扩展实践
在线扩容流程
1. 执行扩容命令(添加 TiDB/TiKV/TiFlash 节点)
tiup cluster scale-out tidb-prod -n tidb1:4000
2. 系统自动执行:
- 新节点上线并加入集群
- Region 自动分裂并迁移到新节点
- 负载自动均衡
3. 扩容完成,业务无感知
总耗时:数分钟(TiDB Server)到数小时(TiKV 数据迁移)
在线缩容流程
1. 执行缩容命令(移除节点)
2. 系统自动将数据迁移到其他节点
3. 节点安全下线
4. 业务无感知
弹性调度策略
| 调度机制 | 说明 | 触发条件 |
|---|---|---|
| Region 分裂 | 数据超过阈值自动分裂 | 单 Region > 96MB |
| Region 迁移 | 数据不均衡时自动迁移 | 节点间数据量差异 > 10% |
| 热点分裂 | 热点数据自动拆分 | 单 Region 读写 QPS 过高 |
| Leader 调度 | 读写请求均衡 | Leader 分布不均 |
成本优势分析
传统垂直扩展 vs 弹性水平扩展
假设业务峰值 100 万 QPS,均值 20 万 QPS:
| 方案 | 配置 | 硬件成本 | 利用率 |
|---|---|---|---|
| 垂直扩展 | 2 台高端服务器(峰值配置) | 100% | 20% |
| 弹性扩展 | 10 台普通服务器(按需使用) | 60% | 80%+ |
成本节省:弹性扩展 3 年 TCO 降低 40-60%。
TiDB Serverless 按用量计费
| 计费项 | 说明 | 优势 |
|---|---|---|
| 请求单元(RU) | 实际读写量 | 用多少付多少 |
| 存储量 | 数据实际占用 | 自动弹性 |
| 计算资源 | 实际查询消耗 | 闲时自动释放 |
适合流量波动大、团队希望专注业务的场景。
适用场景
| 场景 | 弹性需求 | 推荐 |
|---|---|---|
| 电商大促 | 突发 10x 流量 | TiDB 在线扩容 |
| SaaS 多租户 | 新客户动态增长 | TiDB Resource Control |
| 数据分析 | 定期大批量查询 | TiFlash 独立扩容 |
| 开发测试 | 按需创建/销毁环境 | TiUP Playground |
| 创业公司 | 预算有限,流量不确定 | TiDB Serverless |
FAQ
Q:弹性扩展过程中业务会中断吗?
A:TiDB 的扩容/缩容是在线进行的,业务无需中断。TiDB Server(计算层)扩容几乎是即时的;TiKV(存储层)需要数据迁移,但业务无感知。
Q:弹性扩展的响应速度有多快?
A:TiDB Server 节点扩容秒级生效;TiKV 节点扩容需要 Region 迁移,通常数分钟到数小时(取决于数据量)。TiDB Serverless 模式下,计算资源的弹性响应在秒级。
Q:弹性扩展会导致数据不一致吗?
A:不会。TiDB 使用 Raft 协议保证数据一致性,Region 迁移过程中数据始终有多副本可用,不会出现不一致。
总结
弹性扩展数据库让企业从"按峰值配置硬件"转向"按需使用资源",显著降低 IT 成本、提升资源利用率。TiDB 通过在线扩缩容、存算分离、Serverless 按用量计费等能力,提供了业界领先的弹性扩展方案,适合电商、SaaS、金融等流量波动大的业务场景。
下一步行动
- 按需试用:TiDB Cloud 免费试用 — 体验云原生弹性扩展与按需计费
- 架构咨询:咨询 TiDB 弹性扩展方案 — 评估业务峰谷流量场景