1. Doris 架构整体概览
Doris 主要由 Frontend(FE)和 Backend(BE)两大核心组件组成,采用了分布式架构设计。整体架构如下:
+-------------------+
| Client/BI |
+-------------------+
v
+-------------------+
| Frontend (FE) | <--- SQL 解析、元数据管理、高可用
+-------------------+
v
+-------------------+
| Backend (BE) | <--- 存储、计算、查询执行
+-------------------+
2. 前端(Frontend, FE)
主要职责
- SQL 解析与优化:负责接收用户的 SQL 请求,进行语法解析和查询优化。
- 元数据管理:维护数据库、表、分区、用户权限等元数据信息,存储于 MySQL。
- 高可用管理:FE 节点通过 Paxos 协议实现元数据的高可用,主节点负责写入,其他节点可读。
- 任务调度:将查询任务分发到合适的 BE 节点执行。
架构特点
- 多 FE 节点部署:支持多 FE 节点,提升高可用性和负载均衡。
- 元数据一致性:通过 Paxos 协议保证元数据的一致性和可靠性。
3. 后端(Backend, BE)
主要职责
- 数据存储:负责数据的持久化存储,采用列式存储格式。
- 查询执行:执行 FE 下发的查询计划,进行分布式计算和数据聚合。
- 数据导入:支持高吞吐的批量数据导入(如 Stream Load、Broker Load)。
- 副本管理:每个数据分片有多个副本,提升数据可靠性和查询性能。
架构特点
- MPP 架构:每个 BE 节点独立进行存储和计算,充分利用分布式资源。
- 分片与副本:数据按分片(Tablet)分布,每个分片有多个副本,自动故障恢复。
- 向量化执行引擎:高效的向量化处理,提升查询性能。
4. 数据存储与分布
- 表分区:支持按时间或范围分区,提升查询效率。
- Tablet(分片):每个表分区会被切分为多个 Tablet,分布在不同 BE 节点。
- 副本机制:每个 Tablet 有多个副本,自动进行负载均衡和故障恢复。
5. 高可用与扩展性
- FE 高可用:通过多 FE 节点和元数据同步保证服务不间断。
- BE 高可用:Tablet 副本机制保证单点故障自动恢复。
- 弹性扩展:支持动态增加/删除 BE 节点,实现存储和计算的弹性扩展。


