跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

Doris 架构详解

Apache Doris 是一款分布式 MPP 数据库,由 Frontend(FE)和 Backend(BE)组成。FE 负责元数据管理、SQL 解析与任务调度,通过 Paxos 协议保证高可用。BE 负责数据存储、计算执行及副本管理,采用列式存储和向量化引擎。支持多种数据导入方式如 Stream Load,兼容 MySQL 协议,适用于实时报表分析、多维数据分析等高并发低延迟场景。

修罗发布于 2026/3/27更新于 2026/10/1899 浏览
Doris 架构详解

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 节点,实现存储和计算的弹性扩展。

6. 查询执行流程

  1. 客户端发送 SQL 到 FE
  2. FE 解析 SQL,生成执行计划
  3. FE 将执行计划分发到相关 BE 节点
  4. BE 节点并行处理数据,执行计算任务
  5. BE 返回结果到 FE,FE 汇总后返回客户端

7. Doris 其他特性

  • 支持多种数据导入方式:Stream Load、Broker Load、Routine Load 等
  • 支持高并发、低延迟查询
  • 支持复杂分析函数、物化视图、分区裁剪等优化
  • 生态兼容性好:支持 MySQL 协议、JDBC/ODBC、与主流 BI 工具集成

8. 架构图示例

+-------------------+
| Client            |
+-------------------+
        v
+-------------------+ +-------------------+
| Frontend Node 1   | <-----> | Frontend Node 2 |
... (FE 集群)
+-------------------+ +-------------------+
        v
+-------------------------------------------------+
| Backend Cluster                                 |
| +-----------+ +-----------+ +-----------+       |
| | BE Node 1 | | BE Node 2 | | BE Node 3 | ... |
| +-----------+ +-----------+ +-----------+       |
+-------------------------------------------------+

9. FE 元数据管理机制

元数据存储
  • FE 节点将所有元数据(库、表、分区、用户、权限等)存储在外部 MySQL 数据库中,保证数据持久性。
  • FE 内部有缓存机制,提升访问效率。
一致性协议
  • FE 节点通过 Paxos 协议(后续版本支持 Raft)实现元数据一致性。
  • 一个 FE 为 Leader,负责所有元数据写入;其他 FE 为 Follower,负责读和同步。
  • 当 Leader 故障时,自动选举新的 Leader,保证服务高可用。
元数据同步
  • 所有元数据变更通过日志同步到所有 FE 节点,保证一致性。
  • 支持在线扩容和故障恢复。

10. BE 存储引擎原理

列式存储
  • Doris BE 采用自研的高性能列式存储格式,支持高效的压缩与编码(如 LZ4、Zlib)。
  • 数据按 Tablet(分片)存储,每个 Tablet 由多个 Segment 文件组成,易于并发读写。
数据分片与副本
  • 每个表分区被切分为多个 Tablet,分布在不同 BE 节点上。
  • 每个 Tablet 有多个副本,分布在不同 BE 节点,实现高可用和负载均衡。
  • BE 节点之间通过心跳机制和元数据同步,自动进行副本修复和迁移。
向量化执行
  • BE 查询引擎采用向量化处理,批量处理数据,大幅提升 CPU 利用率和查询速度。
  • 支持多线程并发执行,充分利用服务器资源。
数据写入与合并
  • 支持高并发写入,采用 LSM-Tree 类似的多层合并机制,保证写入性能和读写一致性。
  • 定期进行 Compaction(合并),减少碎片,提升查询效率。

11. 查询优化与执行流程

查询优化
  • FE 负责 SQL 解析、语法分析、生成逻辑执行计划(Logical Plan)。
  • 优化器会进行谓词下推、分区裁剪、列裁剪等优化,减少数据扫描量。
  • 支持物化视图自动选择,提升聚合查询性能。
查询执行
  • FE 将物理执行计划拆分为多个子任务,分发到 BE 节点。
  • BE 节点并行处理数据,执行过滤、聚合、排序等操作。
  • BE 节点返回中间结果到 FE,FE 汇总后返回客户端。
分布式执行
  • Doris 支持 MPP(大规模并行处理),查询任务在多个 BE 节点并行执行,极大提升性能。
  • 支持 Pipeline 执行模式,减少节点间数据传输延迟。

12. 数据导入机制

Stream Load
  • 适合实时数据导入,客户端直接将数据流推送到 FE,FE 分发到 BE,支持高吞吐量。
Broker Load
  • 适合批量离线导入,支持从 HDFS、S3、OSS 等外部存储导入大批量数据。
Routine Load
  • 持续流式导入,适用于 Kafka 等消息队列场景,自动消费并导入数据。
导入容错
  • 支持数据去重、自动失败重试、分片导入、错误行采集等机制,保证导入高可靠性。

13. 高可用与容错机制

FE 高可用
  • 多 FE 节点,主从切换,自动选举 Leader。
  • 元数据强一致性,服务不中断。
BE 高可用
  • 多副本机制,Tablet 自动迁移和修复。
  • 单点故障自动恢复,无需人工干预。
节点扩缩容
  • 支持 BE 节点动态添加、删除,自动进行数据均衡和副本调整。
  • 支持在线升级和维护。

14. Doris 的生态与扩展性

  • 协议兼容:支持 MySQL 协议,便于与 BI 工具、数据开发工具集成。
  • JDBC/ODBC:支持主流连接方式,方便应用开发。
  • 数据湖集成:支持与 Hive、Iceberg、Hudi 等数据湖集成,支持外部表查询。

15. Doris 的应用场景

  • 实时报表分析
  • 多维数据分析(OLAP)
  • 用户行为分析
  • 广告、金融、互联网等高并发低延迟查询场景

总结

Doris 通过 FE/BE 分离架构、分布式列式存储、强一致元数据管理、MPP 查询执行、灵活的数据导入和高可用容错机制,成为现代企业级实时分析的利器。

目录

  1. 1. Doris 架构整体概览
  2. 2. 前端(Frontend, FE)
  3. 主要职责
  4. 架构特点
  5. 3. 后端(Backend, BE)
  6. 主要职责
  7. 架构特点
  8. 4. 数据存储与分布
  9. 5. 高可用与扩展性
  10. 6. 查询执行流程
  11. 7. Doris 其他特性
  12. 8. 架构图示例
  13. 9. FE 元数据管理机制
  14. 元数据存储
  15. 一致性协议
  16. 元数据同步
  17. 10. BE 存储引擎原理
  18. 列式存储
  19. 数据分片与副本
  20. 向量化执行
  21. 数据写入与合并
  22. 11. 查询优化与执行流程
  23. 查询优化
  24. 查询执行
  25. 分布式执行
  26. 12. 数据导入机制
  27. Stream Load
  28. Broker Load
  29. Routine Load
  30. 导入容错
  31. 13. 高可用与容错机制
  32. FE 高可用
  33. BE 高可用
  34. 节点扩缩容
  35. 14. Doris 的生态与扩展性
  36. 15. Doris 的应用场景
  37. 总结

更多推荐文章

查看全部
  • Linux 信号机制:键盘输入与系统调用产生
  • 世界模型发展脉络与未来趋势:理解世界或预测未来?综合综述
  • Spring 配置类与注解方式详解
  • AI 产品架构设计:从 0 到 1 搭建信息架构与核心流程
  • Stable Diffusion 3.5 FP8 在博物馆展览视觉设计中的应用
  • 人工智能赋能传统医疗设施设备改造:路径、挑战与未来展望
  • Git Commit Message 提交信息规范指南
  • AI Skills 核心概念、使用指南与 Java 生成实战
  • 金仓数据库 SQL 防火墙:主动防御机制与性能实测
  • Struts2 Action 获取 Session 的几种方式及优缺点对比
  • 基于 MCP 与 Skill 的前端 JS 逆向自动化方案实践
  • Python 非官方 Google 搜索 API 使用指南
  • YOLOFuse 环境修复:解决 python 命令缺失的软链接方案
  • Web 安全实战:Robots.txt 协议原理与利用防御指南
  • 1 分钟图文指南:用 Trae AI 将设计稿自动转为前端代码
  • Retinaface+CurricularFace 镜像内 Python 3.11.14 安全补丁升级方法
  • AI 算力提升下的能耗与散热挑战及电源解决方案
  • AI 大模型开发者必读书籍:《GPT 图解大模型是怎样构建的》
  • 采摘机器人毕业设计实战:从机械控制到感知决策的全栈实现
  • Rembg 图像去背服务独立部署与性能优化指南

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online