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

embedded/2025/3/11 10:07:47/

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 等技术框架,构建了高性能、高可用的实时分析系统。其技术栈深度整合了分布式存储、计算优化和生态兼容能力,适用于大规模数据分析和实时数仓场景。


http://www.ppmy.cn/embedded/171726.html

相关文章

【算法学习之路】8.栈和队列

栈和队列 前言一.简介二.题目12 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也写了几篇&#xff0c;题单正在更新&#xff0c;其他的也会陆陆续续的更新&#xff0c;希望大家点…

一站式3D虚拟展厅搭建方案,让企业展示更高效

在数字化浪潮中&#xff0c;众多企业倾向于采用线上3D虚拟展厅来展现其产品特色、环境风貌及企业实力。然而&#xff0c;构建一个高质量的3D虚拟展厅不仅要求专业的技术背景&#xff0c;还需投入大量的时间和人力资源。视创云展能够以低成本高效率地搭建3D虚拟展厅&#xff0c;…

Bug:QT不能生成可执行文件

问题描述&#xff1a;为了生成可执行文件&#xff0c;将项目以release方式进行构建&#xff0c;并且在.pro文件中加入 TEMPLATE app #这生成一个exe QMAKE_LFLAGS -no-pie 并且执行run qmake&#xff0c;生成的仍是shared library!!! 解决方法&#xff1a;将下面代码放在.…

MyBatis Mapper 接口的作用,以及如何将 Mapper 接口与 SQL 映射文件关联起来

MyBatis Mapper 接口在 MyBatis 框架中扮演着至关重要的角色&#xff0c;它充当了 Java 代码与 SQL 映射文件之间的桥梁&#xff0c;使得我们可以通过面向对象的方式来操作数据库。 Mapper 接口的作用&#xff1a; 定义数据库操作方法: Mapper 接口中定义的方法与 SQL 映射文…

Qt:网络编程

目录 UDP Socket UDP服务器编写 UDP客户端编写 TCP Socket TCP服务器编写 TCP客户端编写 HTTP Client 网络编程&#xff0c;操作系统提供的一组 API(Socket API) C 标准库中&#xff0c;并没有提供网络编程的 api 的封装 进行网络编程的时候&#xff0c;本质上是在编写…

【GPT入门】第8课 大语言模型的自洽性

【GPT入门】第8课 大语言模型的自洽性 1.自洽性概念2.代码&#xff08;观察执行结果&#xff09;3.自洽性核心思想 1.自洽性概念 大模型的自洽性&#xff08;self - consistency&#xff09;是指在推理阶段&#xff0c;大模型通过生成多个答案并选择出现频率最高的那个&#x…

Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘(上)

在 Spring Boot 生态中&#xff0c;dynamic-datasource-spring-boot-starter 是一个非常实用的组件&#xff0c;它为我们在多数据源场景下提供了便捷的解决方案。在上一篇文章《一分钟上手&#xff1a;如何创建你的第一个 Spring Boot Starter》中&#xff0c;我们学习了如何创…

deepseek的regflow安装mac版本

deepseek的ragflow部署安装 一:ollama安装,自行完成,我本地已安装 二:查看大模型情况oll::命令ollama list,我本地无ragflow 三:docker安装:命令docker version ,自行完成,我本地已安装 四:安装知识库软件ragflow: 简单科普下Ragflow 是一个基于深度学习模型的问答生成工具&…