• Doris代码结构


    根目录下

    1. ├── be // BE 代码目录
    2. ├── bin // FE/BE 的启停脚本
    3. ├── build_plugin.sh // FE 插件编译脚本
    4. ├── build.sh // Doris 编译脚本
    5. ├── build-support // 编译用辅助脚本
    6. ├── CODE_OF_CONDUCT.md // 贡献者代码行为准则
    7. ├── conf // FE/BE 的配置文件
    8. ├── contrib // 第三方贡献代码,如 udf
    9. ├── CONTRIBUTING_CN.md
    10. ├── CONTRIBUTING.md
    11. ├── DISCLAIMER
    12. ├── docker // Doris 开发镜像的 Dockerfile
    13. ├── docs // 文档目录
    14. ├── env.sh
    15. ├── extension // 扩展功能代码,如 flink connector 等
    16. ├── fe // FE 代码目录
    17. ├── fe_plugins // FE 插件目录
    18. ├── fs_brokers // Broker 代码目录
    19. ├── gensrc // thrift/protobuf 等代码生成目录
    20. ├── LICENSE.txt
    21. ├── NOTICE.txt
    22. ├── README.md
    23. ├── run-be-ut.sh // BE 单元测试运行脚本
    24. ├── run-fe-ut.sh // FE 单元测试运行脚本
    25. ├── samples // 示例代码目录
    26. ├── thirdparty // 第三方依赖库目录
    27. ├── tools // 一些辅助工具
    28. ├── tsan_suppressions
    29. ├── ui // FE 前端代码目录
    30. └── webroot // 一些静态网页相关代码

    fe/

    1. ├── checkstyle-apache-header.txt
    2. ├── checkstyle.xml
    3. ├── conf
    4. ├── fe-common // 一些 FE 模块的通用代码
    5. ├── fe-core // FE 模块主代码
    6. ├── pom.xml
    7. ├── README
    8. └── spark-dpp // Spark Load 所依赖的 Spark 导入程序代码

    fe-core为FE的核心代码模块

    1. ├── main
    2. │ ├── cup // 语法定义文件
    3. │ ├── java // 主代码
    4. │ ├── jflex // 词法定义文件
    5. │ └── resources
    6. └── test // 单元测试
    7. ├── java
    8. └── resources

    在 main/java/org/apache/doris下即是FE代码的主要部分

    1. ├── alter // 表结构变更操作相关的代码。包括表结构变更,物化视图等。
    2. ├── analysis // 包含所有SQL语法的java实例类
    3. ├── backup // 备份恢复操作相关的代码
    4. ├── blockrule // SQL 黑名单相关代码
    5. ├── catalog // 包含元数据操作的主类和各种数据库、表、分区的元数据实例类
    6. ├── clone // 数据副本修复和均衡相关的代码
    7. ├── cluster // 已废弃
    8. ├── common // 一些工具类和通用定义
    9. ├── consistency // 数据一致性校验相关的代码
    10. ├── deploy // 部署相关代码
    11. ├── external // Doris on Elasticsearch相关的代码
    12. ├── ha // 元数据高可用相关的代码
    13. ├── http // http v1 代码
    14. ├── httpv2 // http v2 代码(逐步替换v1)
    15. ├── journal // 元数据日志相关的代码
    16. ├── ldap // LDAP 认证相关代码
    17. ├── load // 导入作业相关代码
    18. ├── master // FE Master角色相关的操作代码,如元数据Checkpoint,BE任务汇报的处理等。
    19. ├── metric // FE 监控指标相关的代码
    20. ├── monitor // JVM 监控相关代码
    21. ├── mysql // MySQL协议层相关代码
    22. ├── PaloFe.java // Main函数入口
    23. ├── persist // 元数据持久化相关的代码
    24. ├── planner // 查询优化器相关的代码
    25. ├── plugin // Frontend端插件管理相关代码
    26. ├── qe // 用于处理各类SQL请求相关的代码。如查询请求的处理类、DDL请求的处理类等
    27. ├── resource // 资源标签相关的代码
    28. ├── rewrite // 查询优化器重写规则相关的代码
    29. ├── rpc // Frontend和Backend之间RPC协议相关的代码
    30. ├── service // Frontend侧各种服务器端代码
    31. ├── system // 集群节点的实例类和集群节点管理相关的代码
    32. ├── task // Frontend发往Backend的各类任务相关的代码
    33. └── transaction // 导入事务相关代码

    be/

    1. ├── CMakeLists.txt // CMake 编译文件
    2. ├── src // 主代码目录
    3. ├── test // 单元测试

    主代码目录包含:

    1. ├── agent // FE 下发的 agent task 相关处理类
    2. ├── common // 通用类
    3. ├── env // 文件系统操作类
    4. ├── exec // 执行算子相关代码
    5. ├── exprs // 表达式、函数计算相关代码
    6. ├── geo // 地理位置函数相关代码
    7. ├── glibc-compatibility // GLIBC 兼容代码
    8. ├── gutil // Google gutil 相关代码
    9. ├── http // BE 端 http server 相关代码
    10. ├── olap // 存储层代码
    11. ├── plugin // BE 插件管理相关代码
    12. ├── runtime // 查询层运行时相关代码
    13. ├── service // BE 对外服务接口相关代码
    14. ├── testutil // 单元测试辅助类
    15. ├── tools // 辅助工具相关代码
    16. ├── udf // 用户自定义函数相关代码
    17. └── util // 一些工具类

    gensrc/

    1. ├── Makefile
    2. ├── proto // protobuf 定义文件
    3. ├── script // 一些辅助脚本,包括函数定义代码生成模板等
    4. └── thrift // thrift 定义文件

    extension/

    1. ├── DataX // DataX doriswriter 插件
    2. ├── flink-doris-connector // Flink Doris Connector
    3. ├── logstash // logstash 导入插件
    4. └── spark-doris-connector // Spark Doris Connector

    Apache Doris代码合入准则

    开发者在本地修改完代码后,需要完成以下几个步骤,方可提交代码:

    • 运行 run-fe-ut.sh 和 run-be-ut.sh 来运行单元测试并确认通过。

    • 提交 Pull Request

    • Pull Request 会触发准入测试:

      1.Travis CI/continuous-integration:文档编译准入。会对 docs/ 目录进行编译

      2.ut_build:单元测试准入。会运行 fe/be 单元测试。

      3.NewDorisTest:一个包含100多个 case 的最小回归测试集。

    只有在以上准入测试都通过,并且有至少一个 Committer Approve 后,代码方可合入。

  • 相关阅读:
    Android 夸应用传递数据 传递 Parcelable对象
    shell脚本中语法
    Docker 启动容器报错:cannot allocate memory: unknown
    分布式是什么?
    汽车行驶性能的主观评价方法(1)-底盘校准方法
    ControlNet原理及应用
    基于VB6的颜色取色器 - 开源研究系列文章 - 个人小作品
    基于JAVA南京传媒学院门户网计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    springBoot 源码三:Starter机制和springboot整合tomcat
    .Net 8与硬件设备能碰撞出怎么样的火花(使用ImageSharp和Protobuf协议通过HidApi与设备通讯)
  • 原文地址:https://blog.csdn.net/qq_24186017/article/details/125896641