精选·OLAP与存储

Doris 架构拆解:FE、BE 的职责与三种数据模型

91学AI·2026/7/13·7 阅读

考察点

Doris 面试的开门题,面试官想确认你理解 MPP 架构的分工逻辑,以及三种数据模型(Duplicate/Aggregate/Unique)各自解决什么问题。讲清楚 Unique Key 模型的更新实现(Merge-on-Write vs Merge-on-Read)是拉开差距的点,追问常往这里走。

参考答案

整体架构:只有两种进程

Doris 的部署形态简单到反常:只有 FE(Frontend)和 BE(Backend)两类进程,没有独立的外部依赖——早期版本依赖 ZooKeeper 的印象是错的,Doris 靠 FE 自己选主。这点和 ClickHouse 需要 ZK/Keeper 协调副本形成鲜明对比,面试里经常拿来对比。

FE 负责三件事:元数据管理(库表 schema、分区、副本分布,存在 FE 自己的 bdbje 里)、查询接入与规划(兼容 MySQL 协议,客户端直连 FE 就像连 MySQL)、集群调度(往 BE 下发任务、管理节点上下线)。FE 有 Leader、Follower、Observer 三种角色,Leader 由 Follower 之间类 Raft 协议选出,Observer 只读元数据用于分担查询压力。

BE 负责存储和计算。数据在 BE 上按分桶分片(tablet)存放,多副本;查询时 BE 执行 FE 下发的 fragment,做扫描、聚合、join,节点间通过 exchange 算子交换数据——这就是 MPP 的执行方式:一条 SQL 拆成多个 fragment 并行跑在多个 BE 上,中间结果流动,最后汇总。

数据组织:分区加分桶

建表时两级分布:先按 RANGE 或 LIST 分区(通常按天),再按 HASH 分桶(把分区内数据打散到若干 tablet)。tablet 是副本和均衡的最小单位,FE 发现某个 BE 负载高就迁移 tablet。这个设计面试里能讲出「为什么分区按时间、分桶按高基数字段」就算过关:分区为了裁剪和生命周期管理(按天删分区比 DELETE 快得多),分桶为了并行度和打散热点。

三种数据模型

模型语义适用场景
Duplicate Key只排序不去重,全量保留日志明细、事实表
Aggregate Key同 key 行按列聚合(SUM/MAX/REPLACE 等)固定维度报表
Unique Key同 key 只保留最新,实现行级更新CDC 同步的业务表、维度表

Duplicate 最简单,就是排序后的追加存储。Aggregate 在写入和 compaction 时按 key 聚合,减少存储和扫描量,但维度固定——查别的维度组合就退化成全扫,这是它逐渐被物化视图替代的原因。

Unique Key 是 Doris 的王牌,支持按主键 UPSERT。它有两种实现:老的 Merge-on-Read,写入只管追加,查询时合并多版本,读放大明显;1.2 之后默认的 Merge-on-Write,写入时通过主键索引找到旧行并标记删除,读取无需合并。MoW 让 Doris 的更新场景读性能接近明细表,代价是写入时多一次索引查找。业务库 CDC 入仓、维度表高频更新这类需求,Unique + MoW 是 Doris 相对 ClickHouse 最明显的差异化能力。

查询侧值得一提的点

Doris 的优化器是 CBO(基于代价),新版本 Nereids 优化器对多表 join 的重排、谓词下推做得比较完整,加上兼容 MySQL 协议,BI 工具(Tableau、帆软)接上就能用。向量化执行引擎在 BE 侧,1.x 起默认开启。联邦查询能力(Multi-Catalog 直接查 Hive、Iceberg、MySQL)让它还能当查询网关用。

小结

架构上 Doris 用「FE 单点入口 + BE 对等存储计算」换来了运维简单和 MySQL 生态兼容;数据模型上三选一的核心问题是:你的数据要不要更新、按什么粒度聚合。要明细就 Duplicate,固定报表用 Aggregate,要更新就 Unique——这三个判断清晰了,Doris 建模就不会跑偏。

可能的追问

  • FE 挂了集群还能用吗?—— Follower 会重新选主,秒级切换;Observer 只分担读。元数据靠 bdbje 多副本,FE 部署通常一 Leader 两 Follower 起步。
  • Unique Key 的 Merge-on-Write 为什么读得快?—— 写入时把旧版本行标记删除,存储里同一 key 物理上只有一行有效,查询不用做多路归并,代价是写入多一次主键索引定位。
  • Doris 和 ClickHouse 的副本机制差别?—— Doris 由 FE 集中调度 tablet 副本,多数派写入成功即返回(quorum);ClickHouse 副本间无主、靠 ZK 同步 part 日志互相拉取。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.