Apache Doris中都用了哪些开发语言,编译过程中用到了哪些编译器,以及用到了哪些成熟的技术框架

Apache Doris 作为一款高性能的实时分析型数据库,其技术栈涉及多语言开发、多种编译器支持以及多个成熟技术框架的集成。以下是综合多个来源的详细分析:


一、开发语言

  1. Java

    应用场景 :主要用于开发 Frontend(FE) ,负责元数据管理、查询解析、集群管理等模块。

    关键模块

    ◦ FE 的元数据持久化通过 BDBJE(Berkeley DB Java Edition) 实现。

    ◦ MySQL 协议兼容和 HTTP 服务分别基于 XnioSpringBoot 框架。

  2. C++

    应用场景 :用于开发 Backend(BE) ,核心功能包括数据存储、向量化计算引擎、MPP 架构的分布式查询执行。

    技术优势:通过 C++ 实现高性能的列式存储和实时数据处理。


二、编译器与构建工具

  1. 编译器

    GCC :推荐使用 GCC 7.3 及以上版本 (如 Ubuntu 中安装 gcc-10),用于编译 C++ 代码。

    Clang :作为替代编译器,支持 C++17 特性(如 <filesystem> 头文件)。

  2. 构建工具

    CMake :管理 C++ 项目的构建流程。

    Maven:管理 Java 项目的依赖(如 FE 模块)。


三、成熟技术框架(除用户提及外)

  1. BDBJE(Berkeley DB Java Edition)

    功能 :用于 FE 节点的元数据持久化和集群选举,通过操作日志(EditLog)实现元数据同步。

    场景:支持多副本机制和自动故障恢复,确保集群高可用性。

  2. Thrift

    功能 :实现 RPC 通信,用于 FE 和 BE 节点间的交互(如查询任务下发、数据分片管理)。

    版本兼容性 :从 Doris 0.15 版本开始,Thrift 从 0.9 升级到 0.13,需通过 --clean 参数强制重新生成代码。

  3. SpringBoot

    功能:构建 FE 的 HTTP 服务,提供管控接口和监控指标。

  4. Xnio

    功能:基于 JBoss 的异步 IO 框架,实现 FE 的 MySQL 协议兼容,支持高并发连接处理。

  5. Google Mesa 与 Apache Impala 技术集成

    功能:Doris 融合了 Mesa 的增量数据更新机制和 Impala 的查询优化技术,实现高性能分析能力。

  6. MPP(大规模并行处理)架构

    功能:通过分布式节点并行执行查询任务,支持横向扩展至数百节点。


四、其他关键技术与生态集成

  1. 数据湖与外部存储

    支持框架:HDFS、S3、Iceberg、Hudi 等,实现联邦查询和存算分离架构(Doris 3.0+)。

  2. 流批一体

    集成工具:Flink、Kafka,支持实时数据导入和流式计算。

  3. 容器化部署

    工具 :Docker,官方提供预编译镜像(如 apache/doris:build-env-ldb-toolchain-latest)简化环境配置。


总结

Apache Doris 通过 Java 和 C++ 的双语言架构 实现了 FE 与 BE 的解耦,结合 GCC/Clang 编译器链BDBJE、Thrift、SpringBoot 等技术框架,构建了高性能、高可用的实时分析系统。其技术栈深度整合了分布式存储、计算优化和生态兼容能力,适用于大规模数据分析和实时数仓场景。

相关推荐
xingpanvip12 分钟前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
无忧.芙桃25 分钟前
现代C++讲解之变量模板,泛型lambda,函数返回类型推导的使用
开发语言·c++·visualstudio
格林威1 小时前
工业视觉检测:两大主流异常检测开源框架深度对比(PatchCore vs SPADE)
开发语言·人工智能·深度学习·数码相机·计算机视觉·视觉检测·工业相机
2zcode1 小时前
基于Matlab元胞自动机模拟(CA)静态再结晶过程
开发语言·matlab·静态再结晶
研究点啥好呢1 小时前
滴滴Go后端开发工程师面试题精选:10道高频考题+答案解析
java·开发语言·golang
Levin__NLP_CV_AIGC1 小时前
py文件中文件复制方法
开发语言·python
yong99901 小时前
EKF-SLAM在MATLAB上的仿真实现
开发语言·matlab
广州山泉婚姻1 小时前
C语言三种基本程序结构详解
c语言·开发语言
上弦月-编程1 小时前
【C语言】函数栈帧的创建与销毁(底层原理)
c语言·开发语言
eqwaak01 小时前
PyTorch张量操作全攻略:从入门到精通
开发语言·人工智能·pytorch·python