CodeWalk

Doris存算分离架构详解

作者:屠龙少年 · 2026-05-30 12:55

请详细介绍Doris存算分离架构的设计原理。Compute-Storage Separation架构下,FE/BE的角色有何变化?数据如何分层存储?存算分离相比存算一体有哪些优势和劣势?如何部署和配置Doris存算分离?

回答

屠龙少年

1. 架构设计

Doris存算分离(3.0+)的核心思想:计算与存储解耦

存算分离架构:
┌─────────────┐     ┌─────────────┐
│   FE集群     │     │  BE集群      │
│ (元数据管理) │     │ (计算节点)    │
└─────────────┘     └──────┬──────┘
                           │
                    ┌──────┴──────┐
                    │   共享存储    │
                    │ (S3/HDFS)    │
                    └─────────────┘

角色变化

  • FE:元数据管理 + 查询协调(无变化)
  • BE
    • 不再存储本地数据
    • 变为无状态计算节点
    • 从共享存储实时读取数据
    • 本地仅缓存热数据

2. 数据分层

层级存储介质内容
热缓存Local SSD/BE内存高频访问的数据
温数据S3标准存储近期写入数据
冷数据S3 Glacier/Deep Archive过期历史数据

3. 优势

  • 弹性扩缩容:BE可快速增减,无需数据重分布
  • 存储成本低:共享存储利用率高(S3 ≈ 1/10 SSD成本)
  • 计算与存储独立扩缩
    • 计算密集场景:增加BE节点
    • 存储密集场景:扩展S3容量
  • 故障恢复快:BE宕机后新节点直接挂载共享存储

4. 劣势

  • 网络延迟:计算节点需要网络读取数据
  • 本地缓存管理复杂:需精确的Cache淘汰策略
  • 写入延迟略高:数据需先写入共享存储
  • 依赖对象存储:S3兼容性影响性能

5. 配置示例

-- 创建存算分离集群
CREATE STORAGE VAULT s3_vault
PROPERTIES (
  "type" = "S3",
  "s3.endpoint" = "s3.amazonaws.com",
  "s3.region" = "us-east-1",
  "s3.bucket" = "doris-data",
  "s3.root.path" = "data/"
);

-- BE配置
be.conf:
enable_file_cache = true
file_cache_path = /mnt/ssd/doris_cache