TDengine 支持平台全解:服务端/客户端/连接器平台矩阵与安装构建的平台识别机制
2026/9/14 19:13:28 网站建设 项目流程

TDengine 支持平台全解:服务端/客户端/连接器平台矩阵与安装构建的平台识别机制

【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine

TDengine 面向工业物联网(IIoT)场景,在部署前必须确认操作系统与硬件架构是否在官方支持范围内。本文基于仓库中的《支持平台列表》文档,完整梳理 v3.0.7.1 之后社区版的服务端支持平台矩阵、客户端与连接器(C/C++、JDBC、Python、Go、NodeJs、C#、Rust、REST API)的平台覆盖情况,并结合 安装脚本、CMake 平台探测逻辑 与网络层源码,讲清 TDengine 是如何识别操作系统与 CPU 架构、以及 IPv4/IPv6 网络环境的实际支持能力,帮助你在选型、部署和排障时快速判定“能否装、怎么装”。

社区版支持范围的总体说明

v3.0.7.1之后的社区版所支持的操作系统范围,以本文档中的两张矩阵为准。如果使用国产操作系统,官方建议使用企业版本,或者使用 Docker 方式安装。

社区版仅支持主流操作系统较新版本(Ubuntu 18+ / CentOS 7+ / Debian / Fedora / FreeBSD / OpenSUSE / SUSE Linux / macOS 等)。若有其他操作系统及版本需求,需联系企业版支持。

矩阵中的标记含义如下:

  • :经过官方测试验证
  • :非官方测试验证
  • E:仅企业版支持

服务端支持的平台列表

TDengine 服务端(taosd)支持的操作系统及最低版本要求如下:

操作系统版本要求X64 64bitARM64
CentOS7.9 以上
Ubuntu18 以上
RedHatRHEL 7 以上
Debian6.0 以上
FreeBSD12 以上
OpenSUSE全部版本
SUSE Linux11 以上
Fedora21 以上
Windows Server2019–2022● / E
Windows10/11● / E
银河麒麟V10 以上● / E● / E
中标麒麟V7.0 以上● / E● / E
统信 UOSV20 以上● / E
凝思磐石V8.0 以上● / E
华为欧拉 openEulerV20.03 以上● / E
龙蜥 Anolis OSV8.6 以上● / E
macOS14.0 以上

从这张表可以读出三点关键信息:

  1. x86_64 是服务端覆盖面最广的架构。主流 Linux 发行版在 x64 上均为官方验证通过(●);ARM64 在 CentOS/Ubuntu/RedHat/Debian/FreeBSD/OpenSUSE/SUSE/Fedora 上同样得到官方验证,适合在国产 ARM 服务器上部署。
  2. Windows 平台没有 ARM64 列,且部分场景标记为● / E,即社区版验证通过但部分能力仅企业版提供;国产操作系统(银河麒麟、中标麒麟、统信 UOS、凝思磐石、openEuler、Anolis OS)普遍标注E,意味着这些平台的官方支持以企业版为主,这也是文档开头提示“国产操作系统建议使用企业版或 Docker 方式”的原因。
  3. macOS 仅支持 ARM64 且要求 14.0 以上,即 Apple Silicon(M 系列)环境,社区版在该平台上的定位偏向开发测试。

安装脚本如何识别当前操作系统

上述支持矩阵并非“口头承诺”,安装脚本中有对应的操作系统识别与分发逻辑。get_os.sh 通过读取/etc/*-release中的NAME=字段(macOS 直接判定为 Darwin)输出发行版名称,供上层构建/安装流程使用。

install.sh 在正式安装前会解析/etc/os-releaseNAME字段,并按发行版选择包管理器路径(deb 或 rpm):

# packaging/tools/install.sh(节选) # ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification if echo $osinfo | grep -qwi "ubuntu"; then os_type=1 # deb 系 elif echo $osinfo | grep -qwi "debian"; then os_type=1 elif echo $osinfo | grep -qwi "Kylin"; then os_type=1 elif echo $osinfo | grep -qwi "centos"; then os_type=2 # rpm 系 elif echo $osinfo | grep -qwi "fedora"; then os_type=2 elif echo $osinfo | grep -qwi "Linx"; then os_type=1; service_mod=0; initd_mod=0 else echo " This is an officially unverified linux system," ... fi

这里能看到两点与文档一致的实现事实:

  • 脚本明确将Ubuntu/Debian 归为 deb 包、CentOS/Fedora 归为 rpm 包,而 OpenSUSE、RedHat 等其余发行版走通用流程但标注“no verification(未官方验证)”,与矩阵中“●/○/E”的分级思路一致;
  • 对非白名单发行版会打印“this is an officially unverified linux system”提示,即未经验证的平台安装不被推荐用于生产

此外,install.sh 中对非 root(user)安装方式还有 systemd 版本门槛:

echo -e "${RED}Non-root install requires systemd >= 232, current version: ${sd_ver:-unknown}${NC}" echo -e "Supported: CentOS/RHEL 8+, Ubuntu 18.04+, Debian 9+, SUSE 15+" echo -e "CentOS/RHEL 7 (systemd 219) does not support non-root installation."

这说明以普通用户身份安装 TDengine 需要 systemd ≥ 232(CentOS/RHEL 8+、Ubuntu 18.04+、Debian 9+、SUSE 15+),CentOS/RHEL 7(systemd 219)不支持非 root 安装,部署时需注意这一隐含限制。

仓库中还存在一个更细粒度的发行版检测脚本 check_os.sh,它通过/etc/issue/etc/redhat-releaselsb_release -is等途径识别 CentOS(区分 5/6/7 大版本)、Debian 系(Debian/Deepin/Kali)、Ubuntu 系(Ubuntu/Linux Mint/elementary),无法识别时直接报错退出——从源码结构看,这类脚本用于安装/打包流程中更精确地匹配发行版。

客户端和连接器支持的平台列表

与服务端不同,TDengine 客户端与连接器的覆盖面显著更广。官方连接器目前包括X64 / X86 / ARM64 / ARM32 / MIPS / LoongArch64(或 Loong64)等硬件平台,以及Linux / Win64 / Win32 / macOS等开发环境。

各连接器在上述平台上的验证状态矩阵(● 官方测试验证通过,○ 非官方测试验证通过,— 未经验证)如下:

连接器Linux X64 64bitWin64macOSLinux ARM64macOS ARM64
C/C++
JDBC
Python
Go
NodeJs
C#
Rust
REST API

从该矩阵可以推断出选型建议:

  • C/C++、JDBC、Python、Go、NodeJs、REST API在 Linux X64/ARM64、Win64 和 macOS 上均获官方验证,是生产环境的主力连接器;
  • C#在 macOS 及 Linux ARM64 上为非官方验证(○),Rust在 Linux ARM64 上为非官方验证,选型时若运行在这些平台组合上需自行评估;
  • 该矩阵未列出 X86(32 位)、MIPS、LoongArch64 的具体行,但文档明确说明连接器整体覆盖这些硬件平台,说明这些架构的支持主要面向 C/C++ 底层客户端及其衍生生态。

多架构支持在构建系统中的实现

客户端为何能覆盖这么多架构?从 cmake/platform.cmake 可以看到构建时对操作系统和 CPU 架构的完整探测逻辑:

# cmake/platform.cmake(节选) IF (CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin") ... ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows") SET(TD_WINDOWS TRUE) ADD_DEFINITIONS("-DWINDOWS") ENDIF()
IF ("${BUILD_VER_CPUTYPE}" STREQUAL "") IF (CMAKE_SYSTEM_PROCESSOR MATCHES "(amd64)|(AMD64)|(x86_64)|(X86_64)") SET(PLATFORM_ARCH_STR "amd64") SET(TD_INTEL_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)") SET(PLATFORM_ARCH_STR "i386") SET(TD_INTEL_32 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l") SET(PLATFORM_ARCH_STR "arm") SET(TD_ARM_32 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(arm64)") SET(PLATFORM_ARCH_STR "arm64") SET(TD_ARM_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") SET(PLATFORM_ARCH_STR "loongarch64") SET(TD_LOONGARCH_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") SET(PLATFORM_ARCH_STR "mips") SET(TD_MIPS_64 TRUE) ENDIF ()

即构建系统原生识别x64 / x86 / arm32 / arm64 / loongarch64 / mips64六类 CPU 架构,并支持通过-DBUILD_VER_CPUTYPE=aarch64等参数显式指定交叉目标架构。与之配套的是deps/目录下的分平台预编译依赖布局:

目标平台依赖目录(TD_DEPS_DIR)
Linux x86_64x86
Linux ARM(32/64 位)arm
Linux MIPS64mips
macOS Apple Silicon / ARMdarwin/arm
macOS Intel x64darwin/x64
Windows 64 位win/x64
Windows 32 位win/i386

仓库中的deps/arm/dm_staticdeps/x86/rocksdb_staticdeps/mips/dm_staticdeps/win/x64deps/darwin/arm等目录即为各架构预置的静态库,从源码结构看,多平台支持在构建层面是通过“平台探测 + 分目录依赖”机制落地的,未命中任何已知平台的构建会直接FATAL_ERROR "unsupported platform"终止。

支持的网络环境:IPv4 与 IPv6

TDengine 支持 IPv4 和 IPv6 两种通信方式。IPv6 能力在源码中有明确落地:

  • 客户端地址解析逻辑处理了[IPv6]:port、纯 IPv6 地址等格式(见 tmisce.c,其中if (tsEnableIpv6)分支控制 IPv6 行为);
  • 消息层包含SIpV6Range等 IPv6 地址范围结构及处理代码(见 tmsg.c)。

IPv6 的完整配置方法参见仓库文档 网络与 FQDN 配置,其关键约束与操作要点如下:

支持范围

  • 支持版本:TDengine Server 和 Client 版本均需 ≥3.3.7.0
  • 支持组件:taosd(服务端)、taos shell、各连接器(JDBC、Go、Python、C#、Rust 等,需使用支持 IPv6 的版本);
  • 网络环境:纯 IPv6 环境或 IPv4/IPv6 双栈环境均支持。

服务端配置/etc/taos/taos.cfg):

// firstEp/secondEp 设为接口对应的 IPv6 地址,"::" 表示监听所有 IPv6 接口 firstEp ipv6_address1:port secondEp ipv6_address2:port fqdn ipv6_address1 enableIPv6 1

修改后重启服务生效:

sudo systemctl restart taosd

客户端连接方式

  1. 使用 FQDN:域名 AAAA 记录指向正确 IPv6 地址时,客户端自动通过 IPv6 建连,例如taos -h your_server_fqdn -P 6030
  2. 直接使用 IPv6 地址:命令行或连接字符串中必须用中括号包裹,例如taos -h [2001:db8::1] -P 6030

注意事项:默认端口 6030 同样适用于 IPv6 连接;强烈建议使用 FQDN 而非直接写死 IP,通过 DNS 解析自动选择地址;确保服务器、客户端及中间网络设备(路由、防火墙)均正确放行 6030 端口的 IPv6 通信;双栈主机上需显式让 FQDN 指向 IPv6 地址以优先走 IPv6。

小结:选型与部署核对清单

结合本文两张矩阵与仓库实现,部署 TDengine 前可按以下清单核对:

  1. 服务端:确认发行版与版本在服务端矩阵内(如 Ubuntu 18+、CentOS 7.9+、RHEL 7+、macOS 14.0+ ARM64 等);国产系统优先企业版或 Docker 方式。
  2. 客户端/连接器:按“连接器 × 平台”矩阵确认验证等级,C# 在 macOS/Linux ARM64、Rust 在 Linux ARM64 属于非官方验证项。
  3. 安装方式:非 root 安装要求 systemd ≥ 232(CentOS/RHEL 7 不支持),发行版识别逻辑见 install.sh。
  4. 网络:需要 IPv6 时确保服务端与客户端版本均 ≥ 3.3.7.0,并配置enableIPv6 1firstEp/secondEp
  5. 构建部署:源码构建的平台/架构探测由 cmake/platform.cmake 完成,覆盖 Linux/macOS/Windows 与 x64/x86/arm32/arm64/loongarch64/mips64。

以上矩阵以当前仓库文档为准;实际可用版本能力可能随发布版本演进,请以对应版本的官方发布说明为准。

【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询