ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TDengine 源码构建指南:从编译、测试到打包部署的完整实践

TDengine 源码构建指南:从编译、测试到打包部署的完整实践 TDengine 源码构建指南从编译、测试到打包部署的完整实践【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineTDengine 是一个面向物联网IoT、车联网与工业物联网IIoT场景的开源高性能时序数据库。本篇指南基于仓库根目录 README.md 的完整脉络系统讲解从源码构建 TDengine 的每一步环境准备、CMake 构建选项、单元测试与集成测试、社区版打包、安装与运行并结合 cmake/options.cmake 等源码文件对关键配置进行深度解读。读完本文你将具备独立完成 TDengine 源码级构建、自测、打包与部署的全链路实战能力。1. TDengine 是什么面向工业物联网的高性能时序数据库TDengine 是一个开源、云原生cloud native且由 AI 赋能的时序数据库专为物联网、车联网和工业物联网设计目标是高效支撑由数十亿传感器与采集设备产生的海量时序数据的实时写入、处理与分析。它通过以下核心设计区别于传统时序数据库以下特性均源自 README.md 的项目定位说明高性能High Performance以解决高基数high cardinality问题为核心设计目标支持数十亿采集点规模下的数据写入、查询与压缩这是其架构设计的出发点。简化方案Simplified Solution内置缓存、流式计算、数据订阅与 AI Agent 能力降低时序数据处理的系统设计复杂度与运维成本。云原生Cloud Native原生分布式设计、分片与分区、存储与计算分离、RAFT 一致性协议支持 Kubernetes 部署与全链路可观测性可部署于公有云、私有云或混合云。AI 赋能AI Powered内置 AI Agent——TDgpt可对接多种时序基础模型、大语言模型、机器学习与传统算法提供时序数据预测、异常检测、插值与分类能力。最新组件说明见 tools/tdgpt/README.md。易用性Ease of Use对管理员降低部署与维护成本对开发者提供简洁接口与第三方工具无缝集成对数据使用者提供便捷的数据访问方式。数据分析友好Easy Data Analytics通过超级表super table、存储与计算分离、按时间区间分区、预计算与 AI Agent让数据探索、格式化与访问变得高效。开源Open Source核心模块含集群能力与 AI Agent均以开源许可证发布社区与运行实例广泛。需要说明的是README 中提到的解决高基数问题简化系统设计等属于项目官方定位陈述具体性能表现需以实际环境测试为准本文不再重复其营销性表述。仓库根目录还提供 README-CN.md简体中文与 README-JP.md日语版本完整用户手册与系统架构设计请查阅官方文档而本指南聚焦于开发者视角的构建、测试、打包与运行。2. 构建前置条件2.1 系统要求根据 README 的明确说明构建 TDengine 需满足以下系统要求项目要求操作系统LinuxUbuntu 18.04、CentOS 7、macOS 10.15Windows 支持有限开源树构建以 Linux/macOS 为主CPUx86_64 或 ARM64内存建议 4 GB 及以上磁盘建议 2 GB 及以上可用空间主构建平台LinuxTDengine 主要在 Linux 上构建与测试macOS 构建可用于本地开发开源树中的 Windows 支持有限。为保证构建结果可复现默认应选择 Linux 作为构建平台。2.2 安装构建工具Ubuntu/Debiansudo apt-get update sudo apt-get install -y build-essential cmake gitCentOS/RHELsudo yum groupinstall -y Development Tools sudo yum install -y cmake3 git注意外部依赖构建要求CMake 3.21。如果你的发行版自带版本过低需要安装更新版本的 CMake。此外根据所构建内容还可能用到以下工具Python 3用于test/目录下的测试框架Go 1.23用于构建 taosAdapter、taosKeeper 等 Go 组件。2.3 可选工具ccache加速增量重编译sudo apt install ccacheConan 2.x仅taos-gen组件需要pip3 install conan。3. 从源码构建 TDengine3.1 快速开始git clone https://gitcode.com/GitHub_Trending/tde/TDengine cd TDengine mkdir debug cd debug cmake .. -DBUILD_CONTRIBON # 首次构建-DBUILD_CONTRIBON 必须指定 make -j$(nproc)重要首次源码构建必须使用-DBUILD_CONTRIBON。该选项会下载并编译 xxhash、zstd、lz4 等外部依赖到.externals/目录。后续构建通常可以省略该选项自动复用已缓存的构建产物。常用构建变体# Release 构建并附带命令行工具 cmake .. -DBUILD_CONTRIBON -DCMAKE_BUILD_TYPERelease -DBUILD_TOOLSON make -j$(nproc) # macOS 下并行构建 cmake .. -DBUILD_CONTRIBON -DCMAKE_BUILD_TYPERelease cmake --build . --parallel $(sysctl -n hw.ncpu)3.2 构建选项详解README 表格中的默认值对应开源独立构建standalone场景下 cmake/options.cmake 的定义。该文件以option()与set(... CACHE ...)的形式集中管理全部构建开关下面是与 README 一致的完整选项表选项默认值说明BUILD_CONTRIBLinux 为OFF其他平台为ON从源码构建第三方依赖首次构建必须开启CMAKE_BUILD_TYPEDebug标准 CMake 构建类型Debug、Release、RelWithDebInfoBUILD_TESTOFF使用 googletest 构建单元测试BUILD_TOOLSOFF构建 taosBenchmark、taosdump 等工具BUILD_SANITIZEROFF启用 sanitizer 检测BUILD_COVERAGEOFF启用覆盖率插桩BUILD_JEMALLOCOFF启用 jemalloc 分配器BUILD_WEBSOCKETOFF启用 WebSocket 支持BUILD_ASSERT_NOT_COREOFF断言时不生成 core 文件BUILD_PTHREAD_TWEAKOFF为旧版 Linux 环境应用 pthread 调整BUILD_ASTRAOFF针对 Astra 平台构建BUILD_ASTRA_RPCOFF使用 Astra RPC 传输构建BUILD_WITH_LEMONON使用 lemon 解析器支持BUILD_WITH_UDFON构建 UDF 支持BUILD_GEOSON构建 GEOS 支持非 AstraBUILD_SHARED_LIBSOFF构建共享库RUST_BINDINGSON构建 Rust 绑定BUILD_PCRE2ON构建 PCRE2 支持BUILD_ADDR2LINEOFF构建 addr2line 辅助支持BUILD_WITH_LEVELDBOFF启用 LevelDB 支持BUILD_ROCKSDBLinux 为OFF其他平台为ON从源码构建 RocksDBROCKSDB_USE_DEPSLinux 为ON其他平台为OFF使用deps/下的预编译 RocksDB 而非源码构建TD_USE_ROCKSDBON启用 RocksDB 支持BUILD_WITH_LZ4ON构建 LZ4 支持BUILD_S3Linux 为ON社区构建强制OFF启用 S3 相关构建路径社区版会关闭BUILD_WITH_S3Linux 为ON社区构建强制OFF可用时构建 S3 支持BUILD_WITH_COSOFF构建 COS腾讯云对象存储支持BUILD_WITH_LZMA2ON构建 LZMA2 支持BUILD_WITH_ANALYSISLinux 为ON启用分析相关构建路径BUILD_WITH_SQLITEOFF构建 SQLite 支持BUILD_WITH_BDBOFF构建 Berkeley DB 支持BUILD_WITH_LUCENEOFF构建 Lucene 支持BUILD_WITH_NURAFTOFF构建 NuRaft 支持BUILD_WITH_UVON构建 libuv 支持BUILD_WITH_UV_TRANSON构建 libuv 传输支持BUILD_DEPENDENCY_TESTSLinux 为ON构建依赖测试BUILD_DOCSOFF构建 Doxygen 文档BUILD_WITH_INVERTEDINDEXON启用倒排索引支持BUILD_TAOSD_INTEGRATEDOFF以集成库方式构建taosdBUILD_AS_LIBOFF以库方式构建 TDengineBUILD_RELEASEOFF启用发布版本构建路径BUILD_LIBSASLOFF构建 libsasl2BUILD_FLEX_DEPLOYOFF启用灵活部署模式BUILD_WITH_RAND_ERROFF启用随机错误注入BUILD_TSZ_ENABLEDON启用 TSZ 压缩支持BUILD_USE_PUBLIC_DEPSOFF外部依赖使用公网 URL 而非备用镜像从源码结构看cmake/options.cmake 还在TD_COMMUNITY_STANDALONE分支下暴露了BUILD_ENTERPRISE、BUILD_VER_NUMBER、BUILD_VER_COMPATIBLE、BUILD_VER_TYPE等版本相关缓存变量版本号的实际拼接逻辑位于 cmake/version.cmake社区版打包时正是通过这些变量控制产物版本。示例组合cmake .. -DBUILD_CONTRIBON -DCMAKE_BUILD_TYPERelease -DBUILD_TOOLSON该命令等价于 README 推荐的 Release 构建模板开启第三方依赖源码构建、以 Release 优化级别编译、并同时产出 taosBenchmark 与 taosdump 工具。3.3 构建产物默认构建树debug/下的产物布局如下二进制文件位于debug/build/bin/taosd—— TDengine 服务端守护进程taos—— TDengine 命令行客户端taosBenchmark—— 基准测试工具需BUILD_TOOLSONtaosdump—— 数据导入/导出工具需BUILD_TOOLSON库文件位于debug/build/lib/libtaos.soLinux或对应平台的客户端库4. 测试 TDengine4.1 单元测试TDengine 使用 googletest 组织单元测试构建并运行方式cd debug cmake .. -DBUILD_CONTRIBON -DBUILD_TESTON make -j$(nproc) ctest --output-on-failure部分单独的测试二进制也会输出到debug/build/bin/。仓库中单元测试源码分散于各模块的test/子目录例如 source/util/test/、source/common/test/ 等可用 ctest 统一调度执行。4.2 集成测试TDengine 在test/目录下提供了基于 Python 的集成测试框架tests/system-test中的用例在仓库中对应test/cases/下的各类场景脚本。完整流程# 先构建服务端与工具 cd debug cmake .. -DBUILD_CONTRIBON -DBUILD_TOOLSON -DBUILD_TESTON make -j$(nproc) # 使用生成的测试配置启动 taosd ./build/bin/taosd -c test/cfg # 运行系统测试 cd ../tests/system-test python3 test.py -f 2-query/basic.py说明当前仓库中 README 引用的tests/system-test路径对应实际存在的 test/ 目录更多测试框架细节可阅读 test/README.md。5. 打包社区版5.1 使用打包脚本Linux 构建成功后使用打包脚本组装开源社区版 tarball。README 中引用的脚本路径source/taos-community/packaging/pack_community_tar.sh在当前仓库中对应 packaging/pack_community_tar.sh其脚本头注释完整说明了参数语义参数含义默认值-cCMake 构建输出目录如debug/必填-n版本号如3.3.6.0必填-m兼容版本号3.0.0.0-V版本类型stable可选beta、preRelease完整调用示例mkdir debug cd debug cmake .. -DCMAKE_BUILD_TYPERelease -DBUILD_CONTRIBON -DBUILD_TOOLSON make -j$(nproc) cd .. ./packaging/pack_community_tar.sh -c debug -n 3.3.6.0带全部可选参数的等价写法./packaging/pack_community_tar.sh \ -c debug \ -n 3.3.6.0 \ -m 3.0.0.0 \ -V stable生成包输出到packaging/release/典型产物为packaging/release/TDengine-server-3.3.6.0-Linux-x64.tar.gz packaging/release/TDengine-client-3.3.6.0-Linux-x64.tar.gz从 packaging/pack_community_tar.sh 源码看脚本通过getopts解析-c/-n/-m/-V参数-h打印用法并使用set -e保证出错即停默认productNameTDengine、serverNametaosd、configFiletaos.cfg。服务端与客户端压缩包采用与既有打包流程一致的两层结构外层为分发用 tarball内层package.tar.gz包含bin/、cfg/、inc/三个目录。5.2 打包内容范围该脚本只打包由本仓库自身构建出的开源产物taosd服务端taos命令行客户端taosBenchmarkBUILD_TOOLSON时存在taosdumpBUILD_TOOLSON时存在taosudf存在时libtaos.solibtaosnative.so头文件、examples/c目录与安装脚本它不打包位于其他仓库或需要独立构建流程的组件例如taoskeeper、taos-explorer、taosx、各语言连接器以及taosinspect。这是仓库本地 OSS 制品的标准打包方式后续仓库应保持一致。6. 安装与运行6.1 从安装包安装对于由 packaging/tools/makepkg.sh 产出的官方安装包tar -xzf TDengine-server-version-Linux-x86_64.tar.gz cd TDengine-server-version sudo ./install.sh如果是从本地源码构建树直接安装而非打包归档也可以cd debug sudo make installinstall.sh脚本位于 packaging/tools/install.sh负责将二进制、库、配置文件与启动脚本部署到系统目录。6.2 启动服务并连接# 安装后启动服务端 sudo systemctl start taosd # 使用 CLI 连接 taos如需在构建树内快速本地运行cd debug ./build/bin/taosd -c test/cfg另开一个终端连接cd debug ./build/bin/taos -c test/cfg这里-c指定配置文件目录构建树中test/cfg提供了一套便于本地调试的测试配置。7. 持续集成工作流与测试覆盖率TDengine 的构建检查工作流通过 GitHub Actions 中的taosd-ci-build.yml定义见 README 的 Workflow 章节更多工作流会陆续补充。测试覆盖率方面最新覆盖率报告可在 Coveralls 上查看。README 还给出了本地生成 HTML 覆盖率报告的方法cd tests bash setup-lcov.sh -v 1.16 ./run_local_coverage.sh -b main -c task其中-b指定分支、-c task指定运行longtimeruning_cases.task中的用例更多选项可通过./run_local_coverage.sh -h查看。需要注意-b与-i选项会以-DCOVERtrue重新编译 TDengine耗时较长。仓库中与覆盖率相关的脚本位于 test/ci/cov/。8. 贡献与许可证TDengine 以 GNU Affero General Public License 3.0 授权开源许可证全文见 LICENSE。若你在使用过程中发现安全问题可参考仓库的 SECURITY.md社区构建、测试与 CI 相关的补充说明还可参考 test/ci/ 下的脚本与 tools/tdgpt/README.md。如需深入了解各模块的源码实现仓库核心代码位于 source/客户端、公共库、dnode 各节点与各类功能库头文件定义集中在 include/可直接按模块深入阅读。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表