news 2026/10/1 10:22:12

TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)

已把真实 IP 和主机名全部替换成了示例值,重点保留这次真正有用的部署步骤、配置、验证和踩坑。下次换服务器,基本只需要替换IP、主机名、安装路径。

一、部署说明

本文记录一次TDengine TSDB-OSS 3.4.2.8 Community三节点生产集群部署过程。

最终架构:

TDengine:3 DNode MNode: 3 个 业务库: iot 副本数: REPLICA 3 VGROUPS: 6 组件: taosd taosAdapter taosKeeper taosExplorer

示例服务器:

节点IPFQDN
Node01192.168.100.81td01.example.com
Node02192.168.100.82td02.example.com
Node03192.168.100.83td03.example.com

本文中的 IP、主机名均为虚拟示例。


二、部署前检查

正式安装前不要直接解压安装包,先把三个节点的基础环境确认好。

1. 检查操作系统

服务端支持的平台列表https://docs.taosdata.com/operations-and-tooling/supported-platforms/

三台都执行:

cat /etc/redhat-release uname -r uname -m ldd --version | head -1

确认:

操作系统版本 内核版本 CPU 架构 x86_64 glibc 版本

不同 TDengine 版本对操作系统、内核和 glibc 的要求可能不同,生产环境应提前按照对应版本官方兼容要求检查。


2. 检查服务器资源

lscpu free -h df -h

重点确认:

CPU 内存 Swap 系统盘 TDengine 数据盘

例如本次统一规划独立的:

/app

作为 TDengine 安装及数据目录。

3.测试磁盘io

注:如果磁盘io低于150MB,需要客户找主机人员排查raid5的情况,如果磁盘io还是低,可以进行拆盘多挂载点。

dd oflag=direct if=/dev/zero of=/home/diskdata1 bs=480k count=100000 //写入测试,写入大于150M正常 dd if=/home/diskdata1 of=/dev/null bs=1M count=10000 //读取测试大于150M正常 根据实际情况目录调整如下: dd oflag=direct if=/dev/zero of=/app/diskdata1 bs=480k count=100000 dd if=/app/diskdata1 of=/dev/null bs=1M count=10000 dd oflag=direct if=/dev/zero of=/data/diskdata1 bs=480k count=100000 dd if=/data/diskdata1 of=/dev/null bs=1M count=10000

三、配置主机名

节点1:

hostnamectl set-hostname td01.example.com

节点2:

hostnamectl set-hostname td02.example.com

节点3:

hostnamectl set-hostname td03.example.com

检查:

hostname hostname -f

例如节点1:

td01.example.com

TDengine 集群部署时主机名/FQDN 非常重要,不建议三个节点主机名配置混乱。


四、配置 hosts

三个节点统一修改:

vi /etc/hosts

加入:

192.168.100.81 td01.example.com td01 192.168.100.82 td02.example.com td02 192.168.100.83 td03.example.com td03

验证:

ping td01.example.com ping td02.example.com ping td03.example.com

同时检查:

getent hosts td01.example.com getent hosts td02.example.com getent hosts td03.example.com

三个节点必须能够正确解析。


五、检查时间同步

数据库集群时间必须保持一致。

timedatectl systemctl status chronyd chronyc tracking chronyc sources -v

重点确认:

chronyd 正常 系统时间正常 时区一致 三个节点时间基本同步

六、防火墙端口

网络端口要求https://docs.tdengine.com/operations-and-tooling/operations/planning/#network-port-requirements

生产环境保持 firewalld 开启,根据实际启用组件按需永久放行端口。本次 Community 三节点部署主要使用 6030/TCP、6041/TCP、6043/TCP、6060/TCP;6044~6049 为可选采集协议端口,6050/6055 为 taosX 相关端口,未启用对应功能时无需开放。

TDengine 可能涉及这些端口。

不等于:

所有 TDengine 节点必须永久开放所有这些端口。

本次部署涉及的核心端口:

端口当前是否需要你这套用途
6030/TCP需要taosd、DNode/MNode、原生连接、集群内部通信
6041/TCP需要taosAdapter,应用 JDBC-RS / WebSocket / REST
6043/TCP需要taosKeeper 监控上报
6060/TCP需要taosExplorer Web 页面
端口用途
6030taosd / TDengine 集群通信
6041taosAdapter,JDBC-RS/REST/WebSocket
6043taosKeeper
6060taosExplorer Web

本次环境实际放行:

firewall-cmd --permanent --add-port=6030/tcp firewall-cmd --permanent --add-port=6041-6049/tcp firewall-cmd --permanent --add-port=6044-6045/udp firewall-cmd --permanent --add-port=6050/tcp firewall-cmd --permanent --add-port=6055/tcp firewall-cmd --permanent --add-port=6060/tcp firewall-cmd --reload

检查:

firewall-cmd --list-ports
[root@sxdb03 ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 一 2026-09-28 16:52:25 CST; 14h ago Docs: man:firewalld(1) Main PID: 909 (firewalld) CGroup: /system.slice/firewalld.service └─909 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 9月 28 16:52:10 sxdb03.sjzt.cn systemd[1]: Starting firewalld - dynamic firewall daemon... 9月 28 16:52:25 sxdb03.sjzt.cn systemd[1]: Started firewalld - dynamic firewall daemon. 9月 28 16:52:27 sxdb03.sjzt.cn firewalld[909]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future rel...ling it now. Hint: Some lines were ellipsized, use -l to show in full. [root@sxdb03 ~]# firewall-cmd --list-ports 61858/tcp 6030/tcp 6041-6049/tcp 6044-6045/udp 6050/tcp 6055/tcp 6060/tcp [root@sxdb03 ~]#

实际生产应根据启用的 TDengine 协议和组件精确开放端口。


七、系统资源检查

检查文件句柄:

ulimit -n

检查进程数:

ulimit -u

检查系统文件句柄:

sysctl fs.file-max

检查本地端口范围:

sysctl net.ipv4.ip_local_port_range

检查 taosd systemd 限制:

systemctl show taosd | egrep 'LimitNOFILE|LimitNPROC|LimitCORE'

本次环境最终确认:

LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity

八、规划目录

本次统一使用:

/app/tdengine

目录规划:

mkdir -p /app/tdengine/{server,data,log,tmp,core,dump,soft}

结构:

/app/tdengine/ ├── server 程序目录 ├── data 数据目录 ├── log 日志目录 ├── tmp 临时目录 ├── core Core文件 ├── dump 导入导出 └── soft 安装包

下次部署如果路径不同,只需要统一替换/app/tdengine即可。


九、下载安装包

版本功能对比-免费开源的 TDengine TSDB-OSS (社区版)和TDengine TSDB-Enterprise(企业版)。https://www.taosdata.com/feature-comparison#full-comparison-tableTDengine 下载中心https://www.taosdata.com/download-center?product=TDengine+TSDB-OSS&version=3.4.2.8&platform=Linux-Generic&architecture=x64

本文版本:

TDengine TSDB-OSS 3.4.2.8 Community

安装包:

tdengine-tsdb-oss-3.4.2.8-linux-x64.tar.gz

建议从 TDengine 官方下载对应 Linux x64 Community 安装包,然后上传至:

/app/tdengine/soft

检查:

cd /app/tdengine/soft ls -lh

本次安装包 MD5:

8127b24ef6b2fe2d5574c3639b4d2de6

校验:

md5sum tdengine-tsdb-oss-3.4.2.8-linux-x64.tar.gz

生产安装前建议一定进行完整性校验。


十、解压 TDengine

cd /app/tdengine/server tar -zxvf /app/tdengine/soft/tdengine-tsdb-oss-3.4.2.8-linux-x64.tar.gz

进入安装目录:

cd /app/tdengine/server/tdengine-tsdb-oss-3.4.2.8

十一、安装 TDengine

本次采用 TDengine TSDB-OSS 3.4.2.8 Community,实际部署 taosd、taosAdapter、taosKeeper、taosExplorer 四个常驻服务,同时使用 taosc/taos CLI 等客户端工具;taosX 与 taosX-Agent 属于 Enterprise 数据接入体系,本次 Community 环境未部署。

组件主要作用本次部署Community / OSSEnterprise 专属备注
taosdTDengine 核心数据库服务,承载 DNode、MNode、VNode✅✅❌本次三台服务器均部署,核心端口6030
taoscTDengine 原生客户端库,供客户端/其他组件连接 taosd✅ 随包安装✅❌属于客户端库,不是独立常驻服务
taosAdapterREST、WebSocket、JDBC-RS 等应用接入适配层✅✅❌本次应用主要通过6041接入
taosKeeper收集 TDengine 各组件监控指标并写入监控库✅✅❌本次运行在6043,监控数据写入log库
taosExplorerWeb 图形化管理界面✅✅ 免费提供❌本次6060;从 3.3.0.0 起随官方安装包提供
taosX零代码数据接入、数据管道等数据集成能力❌❌✅Enterprise 核心组件
taosX-Agent部署在数据源侧,帮助 taosX 接入 OPC、PI 等受网络限制的数据源❌❌✅与 taosX 配合使用,通常单独部署
TDinsight基于 Grafana 的 TDengine 可视化监控方案❌✅ 可使用❌不是数据库核心常驻进程,本次未部署 Grafana/TDinsight

三个节点都执行:

./install.sh -v server -e no -d /app/tdengine/server/taos

安装完成后程序位于类似:

/app/tdengine/server/taos/taos/bin/

例如:

taos taosd taosadapter taoskeeper taos-explorer taosudf

验证:

/app/tdengine/server/taos/taos/bin/taosd -V

版本:

3.4.2.8.community

十二、配置 taos.cfg

主要配置文件:

/etc/taos/taos.cfg

三个节点大部分参数一致。

Node01

dataDir /app/tdengine/data logDir /app/tdengine/log firstEp td01.example.com:6030 fqdn td01.example.com serverPort 6030 tempDir /app/tdengine/tmp logKeepDays 30

Node02

只需要修改:

firstEp td01.example.com:6030 fqdn td02.example.com

Node03

firstEp td01.example.com:6030 fqdn td03.example.com

也就是说:

firstEp

三个节点都指向首节点。

而:

fqdn

必须是当前服务器自己的 FQDN。

检查:

grep -Ev '^#|^$' /etc/taos/taos.cfg

一个小坑

安装程序可能已经自动写入部分fqdn配置。

修改时注意检查:

grep -n 'fqdn' /etc/taos/taos.cfg

不要因为重复修改造成多个错误配置值。


十三、启动 taosd

先启动节点1:

systemctl enable --now taosd

检查:

systemctl status taosd

确认:

active (running)

检查 6030:

ss -lntp | grep 6030

随后启动 Node02、Node03:

systemctl enable --now taosd

十四、创建 DNode

登录节点1:

taos -u root -p

添加另外两个节点:

CREATE DNODE "td02.example.com:6030"; CREATE DNODE "td03.example.com:6030";

查询:

SHOW DNODES;

正常应看到:

1 td01.example.com:6030 ready 2 td02.example.com:6030 ready 3 td03.example.com:6030 ready

核心判断:

status = ready

十五、创建三个 MNode

第一个节点本身已经存在 MNode,再在节点2、节点3创建:

CREATE MNODE ON DNODE 2; CREATE MNODE ON DNODE 3;

查询:

SHOW MNODES;

正常状态:

1 个 leader 2 个 follower 全部 ready

例如:

td01 leader td02 follower td03 follower

Leader 并不是固定的,发生节点重启或故障后可以自动重新选举。


十六、创建三副本业务库

本次生产环境为3 台 TDengine 节点,每台服务器约:

CPU:8 Core 内存:15 GB TDengine 数据盘:约 200 GB

因此数据库参数没有完全采用默认值,而是综合考虑:

三节点高可用 CPU / 内存资源 VGroup 数量 单节点内存占用 时序数据查询特点 数据保留周期 WAL可靠性

本文业务库:

iot

最终使用:

CREATE DATABASE `iot` VGROUPS 6 REPLICA 3 BUFFER 256 CACHEMODEL 'both' CACHESIZE 5 COMP 2 DURATION 60d KEEP 3650d PRECISION 'ms' WAL_LEVEL 2 WAL_FSYNC_PERIOD 3000 WAL_RETENTION_PERIOD 3600;
参数本次值主要依据
VGROUPS68核CPU、并行能力、VNode资源开销
REPLICA33节点生产高可用
BUFFER256MB每节点约15GB内存,控制VNode内存
CACHEMODELboth最新值/最新行查询场景
CACHESIZE5MB控制最新数据缓存内存
COMP2长期时序数据压缩存储
DURATION60d与10年KEEP配合,控制文件数量
KEEP3650d数据生命周期10年
PRECISIONms业务毫秒级时间戳
WAL_LEVEL2生产数据可靠性
WAL_FSYNC_PERIOD3000ms可靠性与IO性能平衡
WAL_RETENTION_PERIOD3600sWAL保留1小时

KEEP 3650d= 数据保留策略为10年,但并不代表当前每节点约200GB磁盘一定能容纳10年数据。正式运行后仍需根据实际日增量、压缩率和磁盘增长趋势进行容量评估及扩容。

查看:

SHOW DATABASES;

检查副本:

SHOW iot.VGROUPS;

重点关注:

v1_status v2_status v3_status is_ready applied/committed

正常应该看到每个 VGroup:

1 Leader 2 Follower is_ready = true

例如:

DNode1 follower DNode2 follower DNode3 leader

三副本并不是三个独立数据库。

本质上是:

同一个 iot 数据库 ↓ 多个 VGroup ↓ 每个 VGroup 保存 3 个副本 ↓ 1 Leader + 2 Follower

某一个节点故障后,剩余副本可以完成重新选主继续提供数据服务。


十七、创建业务账号

管理员:

root

业务账号:

CREATE USER appl_sjzt PASS '<PASSWORD>' SYSINFO 1;

监控账号:

CREATE USER monitor_sjzt PASS '<PASSWORD>' SYSINFO 1;

密码不要写入部署文档。

查看:

SHOW USERS;

Community 版注意事项

在 3.4.2.8 Community 实际测试中:

GRANT ...

会提示该功能属于 Enterprise Edition。

因此 Community 版不要直接照搬企业版的细粒度授权方案,业务账号最终能执行哪些操作应在当前版本中实际验证。


十八、配置 taosAdapter

配置:

/etc/taos/taosadapter.toml

本次只调整必要项。

将:

debug = true

修改为:

debug = false

命令:

sed -i 's/^debug = true/debug = false/' /etc/taos/taosadapter.toml

启动:

systemctl enable --now taosadapter

检查:

systemctl status taosadapter ss -lntp | grep 6041

正常:

6041 LISTEN

6041就是后续应用通过 JDBC-RS、REST、WebSocket 访问 TDengine 的重要入口。


十九、配置 taosKeeper

配置文件:

/etc/taos/taoskeeper.toml

重点修改:

[tdengine] host = "127.0.0.1" port = 6041 username = "monitor_sjzt" password = "<MONITOR_PASSWORD>" usessl = false

本次其他配置保持默认,例如:

[metrics.database] name = "log" vgroups = 1 buffer = 64 keep = 90 cachemodel = "both"

其中:

keep = 90

代表 Keeper 监控数据库数据保留时间。

保护配置文件:

chmod 600 /etc/taos/taoskeeper.toml

启动:

systemctl enable --now taoskeeper

检查:

systemctl status taoskeeper ss -lntp | grep 6043

Keeper 踩坑

如果出现:

Authentication failure

第一时间检查:

username password host port

尤其是密码是否手工输入错误。

另外 TOML 配置文件不要出现:

username = "xxx" username = "yyy"

这种重复 Key,否则服务可能直接启动失败。


二十、配置 Explorer

Explorer 是 TDengine 的 Web 管理界面。

默认服务:

taos-explorer

为了 Community 环境跳过注册,在:

vi /etc/default/taos-explorer

加入:

EXPLORER_SKIP_REGISTER=true

保存。

Explorer 配置文件:

/etc/taos/explorer.toml

重点确认其cluster能连接本节点 taosAdapter,例如:

cluster = "http://td01.example.com:6041"

Node02、Node03 对应自己的 FQDN 即可。

启动:

systemctl enable --now taos-explorer

检查:

systemctl status taos-explorer

检查端口:

ss -lntp | grep 6060

浏览器访问:

http://192.168.100.81:6060

其他两个节点:

http://192.168.100.82:6060 http://192.168.100.83:6060

三个 Explorer 都连接的是同一个 TDengine 集群。


二十一、Explorer Connection refused 排查

本次部署时遇到过 Explorer 页面提示连接:

:6041 Connection refused

原因并不是 Explorer 本身异常,而是:

taosExplorer ↓ taosAdapter:6041

Explorer 依赖 taosAdapter。

所以先检查:

systemctl status taosadapter ss -lntp | grep 6041

taosAdapter 正常后,再重启 Explorer:

systemctl restart taos-explorer

最终即可正常网页登录。

这个坑比较容易误判。


二十二、统一启动四个服务

TDengine 安装完成后会创建相关 systemd 服务,安装后应统一检查服务是否已启用开机自启动;若未启用,则使用systemctl enable手工启用。

三台服务器最终都应该(如果没有自启动,直接这样加):

# 设置开机自启动并立即启动 systemctl enable --now taosd systemctl enable --now taosadapter systemctl enable --now taoskeeper systemctl enable --now taos-explorer # 检查开机自启动状态 systemctl is-enabled taosd taosadapter taoskeeper taos-explorer # 检查运行状态 systemctl is-active taosd taosadapter taoskeeper taos-explorer

检查:

systemctl is-enabled taosd systemctl is-enabled taosadapter systemctl is-enabled taoskeeper systemctl is-enabled taos-explorer

正常:

enabled enabled enabled enabled

检查运行状态:

systemctl is-active taosd taosadapter taoskeeper taos-explorer

正常:

active active active active

端口统一检查:

ss -lntp | egrep '6030|6041|6043|6060'

二十三、集群最终检查

登录任意节点:

taos -u root -p

执行:

SHOW DATABASES; SHOW DNODES; SHOW MNODES; SHOW iot.VGROUPS;

验收标准:

3 个 DNode 全部 ready 3 个 MNode 全部 ready 1 Leader + 2 Follower iot 6 个 VGroup 每个 VGroup: 3 个副本 1 Leader + 2 Follower is_ready = true applied/committed 正常

二十四、滚动重启验证

数据库部署完成后,生产环境非常建议做一次节点滚动重启测试。

原则:

一次只重启一个节点,前一个完全恢复后再重启下一个。

例如:

Node01 ↓ 恢复 ready ↓ Node02 ↓ 恢复 ready ↓ Node03

每台启动后检查:

uptime systemctl is-active taosd taosadapter taoskeeper taos-explorer ss -lntp | egrep '6030|6041|6043|6060'

然后:

SHOW DNODES; SHOW MNODES; SHOW iot.VGROUPS;

本次实际测试中,重启前 MNode Leader 位于 Node03。

Node03 重启后:

Node01 自动成为 Leader Node02 Follower Node03 恢复后成为 Follower

说明 MNode 自动选主工作正常。

这一步非常有价值,因为它真正验证了:

服务开机自启动 DNode 自动重新加入 MNode 自动重新选主 副本自动恢复

二十五、应用如何连接

应用使用:

taosAdapter : 6041

JDBC Driver:

com.taosdata.jdbc.rs.RestfulDriver

没有配置 VIP 时,可以先使用任意一个 taosAdapter 节点,例如:

jdbc:TAOS-RS://192.168.100.81:6041/iot?timezone=Asia/Beijing&charset=UTF-8&httpPoolSize=500

注意:

应用连接 Node01:

应用 ↓ Node01:6041 ↓ taosAdapter ↓ TDengine 整个集群

并不是数据只写 Node01。

真正的数据副本、Leader、Follower 由 TDengine 自己管理。


二十六、三副本与 VIP 的区别

这个概念部署完成后一定要搞清楚。

三副本

负责:

数据库数据层高可用

例如:

Node01 Follower Node02 Follower Node03 Leader

Node03 故障后,剩余副本重新选 Leader。

这属于:

TDengine 内部机制

不涉及数据库 IP 漂移。


Nginx / VIP

解决的是:

应用入口高可用

当前:

应用 ↓ 192.168.100.81:6041

如果 Node01 整台服务器故障,那么 TDengine 数据库集群可能仍然正常,但应用连接地址已经不可达。

后续可以设计:

应用 │ ▼ VIP:6041 │ Nginx / LB ┌────────┼────────┐ ↓ ↓ ↓ 81:6041 82:6041 83:6041 │ │ │ └────────┼────────┘ ↓ TDengine 集群

所以一句话总结:

TDengine 三副本解决数据库数据层高可用,Nginx + VIP 解决应用接入层高可用。


二十七、常用巡检命令

服务状态

systemctl status taosd systemctl status taosadapter systemctl status taoskeeper systemctl status taos-explorer

或者:

systemctl is-active taosd taosadapter taoskeeper taos-explorer

端口

ss -lntp | egrep '6030|6041|6043|6060'

进程

ps -ef | grep taos

正常通常可以看到:

taosd taosudf taosadapter taoskeeper taos-explorer

集群节点

SHOW DNODES;

MNode

SHOW MNODES;

数据库

SHOW DATABASES;

三副本

SHOW iot.VGROUPS;

用户

SHOW USERS;

二十八、最终目录速查

程序: /app/tdengine/server/taos 数据: /app/tdengine/data 数据库日志: /app/tdengine/log 临时目录: /app/tdengine/tmp 安装包: /app/tdengine/soft

主要配置:

/etc/taos/taos.cfg /etc/taos/taosadapter.toml /etc/taos/taoskeeper.toml /etc/taos/explorer.toml /etc/default/taos-explorer

主要服务:

taosd taosadapter taoskeeper taos-explorer

核心端口:

6030 taosd 6041 taosAdapter 6043 taosKeeper 6060 taosExplorer

二十九、下次快速部署顺序

以后再部署一套,其实记住下面这条主线就可以:

1. 检查 OS / CPU / 内存 / 磁盘 ↓ 2. 配置 hostname ↓ 3. 配置 /etc/hosts ↓ 4. 检查时间同步 ↓ 5. 检查防火墙和系统资源 ↓ 6. 创建 TDengine 目录 ↓ 7. 上传并校验安装包 ↓ 8. 三节点安装 TDengine ↓ 9. 修改 taos.cfg ↓ 10. 启动三个 taosd ↓ 11. CREATE DNODE ↓ 12. CREATE MNODE ↓ 13. 创建 REPLICA 3 数据库 ↓ 14. 创建业务/监控用户 ↓ 15. 配置 taosAdapter ↓ 16. 配置 taosKeeper ↓ 17. 配置 taosExplorer ↓ 18. 检查 6030/6041/6043/6060 ↓ 19. SHOW DNODES / MNODES / VGROUPS ↓ 20. 三节点滚动重启验证 ↓ 21. 应用连接 6041 ↓ 22. 后续补 Nginx / VIP

三十、总结

这次部署最值得掌握的不是单纯把 TDengine 安装起来,而是把整个架构关系理顺了:

DNode = TDengine 数据节点 MNode = 集群管理节点 VGroup = 数据分片单元 REPLICA 3 = 每个 VGroup 三副本 Leader / Follower = TDengine 内部副本选主机制 taosAdapter 6041 = 应用访问入口 taosKeeper = TDengine 监控组件 taosExplorer 6060 = Web 管理界面 Nginx / VIP = 应用入口高可用

三副本本身已经实现数据库数据层的高可用:

单节点故障 ↓ 剩余两个副本继续工作 ↓ 重新选举 Leader ↓ 故障节点恢复 ↓ 副本重新追平

而 Nginx/VIP 是后续进一步解决应用连接入口单点。

这样,下次再部署 TDengine 三节点三副本环境,即使安装路径、IP、主机名发生变化,整个部署思路基本不变。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 10:21:48

软件测试/测试开发|Pytest参数化神器,pytest.mark.parametrize()使用

前言当我们需要使用多个数据去对一个功能进行测试的时候, 如果手动编写多个测试用例的方式来实现的话, 那就完全体现不出通过代码来执行测试所具备的那种优势了, 在这个时间点, 参数化这个功能就会派上用场了, 所谓参数化的意思, 就是把测试过程中涉及到的数据从业务逻辑中单独…

作者头像 李华
网站建设 2026/10/1 10:20:48

黑盒的代价——当AI说不清为什么,法律和用户都不会再等

黑盒的代价——当AI说不清为什么&#xff0c;法律和用户都不会再等专栏名称&#xff1a;AI透明度卷 第0期 序章 作者&#xff1a;Valhalla Matrix治理实验室 原创声明&#xff1a;本文为原创技术博客&#xff0c;基于Valhalla工程实践编写。摘要&#xff1a;2026年8月2日&…

作者头像 李华
网站建设 2026/10/1 10:19:33

企业怎么选标书查重软件?重点看这6项功能

对于招标代理机构、政府采购相关单位、央国企以及大型企业来说&#xff0c;一个项目往往涉及多份投标文件。文件数量增加后&#xff0c;仅靠人工逐份打开、翻阅和比对&#xff0c;不仅耗时&#xff0c;也容易遗漏相似内容。因此&#xff0c;选择标书查重软件时&#xff0c;不能…

作者头像 李华
网站建设 2026/10/1 10:16:31

2026 年版|同岗薪资差 1.5 倍!大数据人转大模型不用读研,4 个月可落地

本文对比了大数据与大模型岗位的薪资差距&#xff0c;指出大模型岗位薪资普遍更高。文章强调大数据工程师转型大模型具有三大优势&#xff1a;数据处理能力、分布式计算经验及行业知识。为有意转型的读者提供了四步转型路径&#xff1a;补齐深度学习基础、掌握大模型微调技术、…

作者头像 李华
网站建设 2026/10/1 10:16:24

字节跳动职位分析:用户增长策略运营-国际化数据生产平台

一、职位概述与定位分析该职位隶属于字节跳动国际化商业安全团队&#xff0c;核心定位是众包标注人员的用户增长与策略运营。从团队背景来看&#xff0c;国际化商业安全团队负责审核广告内容、预测政策违规行为并执行审核决策&#xff0c;而众包标注人员正是支撑这一审核体系运…

作者头像 李华