• 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 后,代码方可合入。

  • 相关阅读:
    【限流与Sentinel超详细分析】
    【云原生 | Docker 高级篇】10、Docker 资源配额
    JavaScript中this关键字实践
    相关分析——皮尔森相关系数、t显著性检验及Python实现
    线程退出学习
    Docker 系列之 DockerDesktop 常用第三方应用安装以及命令解释
    python 为 网易云下载的 本地音乐文件增加 序号
    主频计算-架构真题(二十三)
    C++标准模板(STL)- 类型支持 (定宽整数类型)(int8_t,int_fast8_t,int_least8_t,intmax_t,intptr_t)
    HNU工训中心STC-B学习板大作业-基于OLED模块的多功能MP4
  • 原文地址:https://blog.csdn.net/qq_24186017/article/details/125896641