腾讯云 TDMQ for MQTT 实战:百万级 IoT 设备接入的托管消息队列(国际版)
Meta Description: 腾讯云国际版 TDMQ for MQTT 深度实战:讲清与 CKafka/RocketMQ/Pulsar 的边界,拆解 TPS 计费公式与规格/公网流量价目表,附集群创建、Python 设备端接入、SCF/CKafka 数据集成与配额硬边界避坑清单。
- TDMQ for MQTT 是什么:先和同门三个产品划清边界
- 典型场景:官方列出的五类用法
- 计费模型与价格:先看懂"计费依据",再看单价
- 成本测算:算三笔账,看清钱花在哪
- 实战:从零把一台"设备"接上云(八步)
- 配额硬边界:上线前必须核对的一张表
- 数据集成:把设备消息接进大数据与 Serverless
- 避坑与省钱要点
Meta Description: 腾讯云国际版 TDMQ for MQTT 深度实战:讲清与 CKafka/RocketMQ/Pulsar 的边界,拆解 TPS 计费公式与规格/公网流量价目表,附集群创建、Python 设备端接入、SCF/CKafka 数据集成与配额硬边界避坑清单。
关键词: 腾讯云 MQTT、TDMQ for MQTT、物联网消息队列、IoT 设备接入、腾讯云国际版
物联网设备接入最典型的坑,是拿一套为"服务端到服务端"设计的消息队列去接"几十万台弱网设备":HTTP 轮询耗电、长连接自建要命、QoS 与离线会话没人管。腾讯云国际版把这一层单独做成了一个产品——TDMQ for MQTT,它与站内已经写过的 CKafka、TDMQ for Pulsar / RocketMQ 同属 Tencent Distributed Message Queue(TDMQ)家族,但解决的是完全不同的问题:它是给设备和云之间用的,不是给服务和服务之间用的。本文按"边界 → 场景 → 计费 → 实操 → 配额 → 数据集成"六段讲透,价格与规格全部取自腾讯云国际版官方文档(2026 年 10 月核对)。
声明:本文价格数据采集于 2026 年 10 月,仅供参考,价格可能变动,请以腾讯云官网为准;国际站以美元计价与结算。
一、TDMQ for MQTT 是什么:先和同门三个产品划清边界
TDMQ 家族被官方拆成了五个子产品:CKafka、RocketMQ、RabbitMQ、Apache Pulsar、MQTT。它们的差异不在"谁快谁慢",而在协议、场景与客户端形态三件事上。下面的边界表直接取自官方《TDMQ Product Series Introduction and Selection》,这也是判断"这个需求该不该用 MQTT"最快的一张表:
| 子产品 | 协议/特性 | 核心优势 | 适用场景 |
|---|---|---|---|
| CKafka | Kafka 协议 | 高吞吐 + 完善大数据生态、内核增强 | 日志压缩收集、监控数据聚合、流式数据接入 |
| RocketMQ | RocketMQ 协议 | 低延迟高并发、事务/定时/延迟/顺序消息 | 异步解耦、削峰填谷、分布式事务一致性 |
| RabbitMQ | AMQP 0-9-1 | 与开源版 100% 兼容、路由模式灵活 | 中小规模在线业务、秒杀、优先级/延迟消息 |
| Pulsar | Pulsar 协议 | 存算分离、在线离线一体 | 大规模部署、需同时兼顾在线与离线计算 |
| MQTT | MQTT 3.1/3.1.1/5.0 | 轻量协议、单集群支持百万级客户端同时在线 | 车联网、工业互联网、即时通讯、智能家居 |
一句话记法:CKafka/RocketMQ/Pulsar 解决"服务端到服务端",MQTT 解决"设备端到服务端"。设备端的特点决定了 MQTT 的三项专属能力:
- 弱网适配:官方明确"针对资源受限设备和低带宽、高延迟、不可靠的网络环境做了专项优化",支持 TCP 与 WebSocket 两种传输层,协议头极轻;
- 安全接入:支持 X.509 证书双向认证、"一机一证""一机一密",也允许对接自定义鉴权系统——这正是几十万台设备接入时最容易出事的地方;
- 下行可控:保留消息(Retain)、遗嘱消息(Will)、离线会话、共享订阅等 MQTT 语义,都是"设备掉线后仍能收到指令"的基础。
架构上,TDMQ for MQTT 与开源 RocketMQ 是同源的:Pub/Sub Client(设备)→ MQTT Proxy(无状态,负责协议处理、连接会话管理与鉴权,可快速扩缩容)→ NameSrv(按 Topic 路由寻址与 Broker 心跳注册)→ RocketMQ Broker(消息存储与收发,支持水平扩展)。理解这一点很重要:MQTT 的"连接"和"消息存储"是两层,所以连接数与 TPS 是两个独立计费项(见第三节)。
二、典型场景:官方列出的五类用法
| 场景 | 设备端的动作 | 云端/平台端的动作 |
|---|---|---|
| 车联网 | 车载传感器上报位置、车速、油量、发动机状态 | 数据分析、故障预测、远程下发导航/OTA/诊断指令 |
| 工业物联网(IIoT) | 工业设备实时上报数据、接收远程指令 | 弱网与极端环境下保证指令可达 |
| 设备数据处理平台 | 传感器、移动医疗设备等采集环境与业务数据 | 汇聚到下游系统处理/存储(智慧城市、城市大脑) |
| 即时通讯(IM) | 发布到指定 Topic | 订阅相应 Topic 实现一对一/群聊 |
| 智能家居 | 家电上报状态、接收远程控制 | 与 App、其他设备协同联动 |
这五类场景有个共同点:设备多、单条消息小、网络不可靠、下行指令要求可达。选 MQTT 的判据也就在这里——如果你是"服务端之间搬运海量数据",应该用 CKafka;只有"连接方是弱网里的设备/App"时,MQTT 才是对的。
三、计费模型与价格:先看懂"计费依据",再看单价
腾讯云把 MQTT 按集群售卖,账单由三个计费项拼成,其中只有第一项是必选:
| 计费项 | 是否必选 | 计费方式 | 计费规则 |
|---|---|---|---|
| 计算规格 | 是 | 包年包月 / 按量计费 | 提供多档 TPS 规格,每档规定客户端连接数、可单独购买的连接数上限、消息读写 TPS 能力上限 |
| 连接数 | 否 | 包年包月 / 按量计费 | 规格自带连接数不够时,可单独加购连接数 |
| 公网流量 | 否 | 按量计费 | 开启公网后按实际出流量(CLB → 公网)以 GB 计费,每小时结算;不开公网则不产生费用 |
两种计费模式的差异如下,且官方明确"不支持计费模式互转"——买之前就要想清楚:
| 维度 | 包年包月(预付) | 按量计费(后付) |
|---|---|---|
| 计费描述 | 选定规格,预付一段时间后使用 | 选定规格创建集群,用完再付费 |
| 计费周期 | 按购买时长 | 按小时计费、按日结算,不足 1 小时向上取整 |
| 适用场景 | 业务规模稳定、长期使用,享折扣 | 测试或流量峰值不确定的短期场景 |
| 变更计费模式 | 不支持 | 不支持 |
| 变更/降低集群规格 | 支持 | 支持 |
3.1 最关键的一条:TPS 不是"消息条数",而是加权重算的结果
这是 TDMQ for MQTT 最容易被低估的计费规则。官方规定:以 MQTT 协议收发消息时,每条消息的收发行为以 1 为基本计量单位,但 TPS 规格会按三个维度之和综合计算:
- 消息服务 QoS:QoS=0 计 1 TPS;QoS=1 计 2 TPS;QoS=2 计 5 TPS;
- 消息存储资源占用:使用 Will(遗嘱)和 Retain(保留)功能时,各自额外计 10 TPS;
- 消息体大小:每条消息以 4 KB 为单位折算,不满 4 KB 不额外计算,每超过 4 KB 额外计 1 TPS。
官方给的算例可以直接当"心智模型"记住:某集群同一时刻连接 3 个客户端——
- 向客户端 1 发送一条 QoS=1、64 KB 的消息:生产 TPS = 2 + ⌈64/4 − 1⌉ = 17 TPS;
- 接收客户端 2 发来的 QoS=2 且开启 Retain、32 KB 的消息:消息 TPS = 5 + 10 + ⌈32/4 − 1⌉ = 22 TPS;
- 客户端 3 连接集群并开启 Will 功能:额外 10 TPS。
综合 TPS = 17 + 22 + 10 = 49 TPS。
这条规则带来的可执行结论有三条:① 能降 QoS 就降 QoS——QoS2 是 QoS1 的 2.5 倍、QoS0 的 5 倍消耗,遥测类数据绝大多数用 QoS0/QoS1 就够;② Retain/Will 是"按功能"收费的,不是按消息数,设备量大的场景要谨慎全量开启;③ 大报文很贵——把 64 KB 的报文拆成小包或改用对象存储(COS)传大文件、MQTT 只传指针,TPS 立刻下降一个量级。
3.2 版本与规格对照表
| 版本 | TPS 规格 | 赠送连接数 | 可单独购买的连接数上限 |
|---|---|---|---|
| 基础版(已停止新购) | 2000 / 5000 | 2000 / 5000 | 不支持单独购买连接数 |
| 专业版 | 2000 | 2000 | 20000 |
| 专业版 | 5000 | 5000 | 50000 |
| 专业版 | 10000 | 10000 | 100000 |
| 专业版 | 20000 | 20000 | 200000 |
| 专业版 | 50000 | 50000 | 500000 |
两点说明:① 连接数按"1 倍 / 2 倍 / 5 倍 / 10 倍 TPS 规格"为单位加购,加购前要按 TPS 规格为单位换算;② 购买页还提到铂金版,其连接数档位更高(最高可到 500 万)、保留时长与未确认消息数可通过工单调整,属企业级形态,需走工单确认。计算规格与连接数的具体单价,官方文档未公开刊例价,以商品售卖页实际价格为准——这是本文不对计算规格编造单价的原因。
3.3 唯一公开的单价:公网流量费
| 地域 | 国际版单价(USD/GB) |
|---|---|
| 广州 / 上海 / 北京 / 南京 | 0.14 |
| 上海自动驾驶云 | 0.23 |
| 新加坡 / 硅谷 / 法兰克福 | 0.19 |
有两条硬规则值得单独记:① 只计出流量——即从负载均衡到公网的流量,设备上行数据本身不产生公网流量费;② 可以设带宽上限,超出上限默认丢包且不计算费用(防突发爆量把账单打爆,代价是丢包,需要设备侧重传兜底)。流量单位为 1024 进制:1 TB = 1024 GB、1 GB = 1024 MB。
顺手做个跨站口径对照(不做汇率换算):腾讯云国内站同一产品是广州/上海/北京/南京/成都 1.0 元/GB、上海自动驾驶云 1.6 元/GB、中国香港/新加坡/硅谷/法兰克福/东京 1.3 元/GB。可以看出两点差异——国际站的价目表没有单列中国香港、东京、成都三个地域,且国际站价格并不等于国内站按汇率折算的结果,国际业务必须按国际站价目表估算。
四、成本测算:算三笔账,看清钱花在哪
由于计算规格是"规格制"而非"用量制",成本测算的正确姿势是:先按业务量算需要多大 TPS 规格,再算公网流量费。
4.1 算一笔"该买多大规格"的账
以智能电表场景为例(假设每 5 分钟上报一条 QoS=1、200 字节的报文):
生产 TPS = 100000 台 ÷ 300 秒 × 2(QoS1 系数)= 666.7 TPS
若云端只有一个订阅者消费,则消费侧同样约 666.7 TPS;而官方定义"TPS 规格 = 生产 TPS 与消费 TPS 之和",合计约 1333 TPS → 落在 2000 TPS 规格内。这条算法里最反直觉的是:订阅者越多,消费侧 TPS 越大——一个 Topic 被 5 个业务系统订阅,消费 TPS 就是 5 倍,规格要按"所有订阅者之和"来估。
4.2 算一笔公网流量费
场景 A:智能家居平台。1 万台设备在线,云端每分钟向每台设备下发 1 条 200 字节控制报文,走公网接入(新加坡地域,0.19 USD/GB):
| 指标 | 数值 |
|---|---|
| 下行消息数(月,按 30 天) | 4.32 亿条 |
| 净荷总量 | 86.4 GB(十进制)≈ 80.47 GB(1024 进制) |
| 公网流量费(新加坡 0.19 USD/GB) | 约 15.29 USD/月 |
| 若换广州地域(0.14 USD/GB) | 约 11.27 USD/月 |
场景 B:车联网。5 万辆车,云端每天向每辆车下发 5 条 500 字节指令(设备上报走上行,不计公网流量费):
| 指标 | 数值 |
|---|---|
| 下行消息数(月) | 750 万条 |
| 净荷总量 | ≈ 3.49 GB(1024 进制) |
| 公网流量费(新加坡 0.19 USD/GB) | 约 0.66 USD/月 |
(上述两笔只计净荷,未含 MQTT 协议头开销;若设备通过 VPC 内网接入,则完全不产生公网流量费。)
4.3 算一笔"省流量"的账
对比 4.2 的两个场景可以看出:公网流量在 MQTT 总成本里通常不是大头,规格费才是。所以省钱的主战场是"压规格"而不是"压流量":把遥测消息从 QoS1 降到 QoS0 可直接省一半 TPS;控制 4 KB 以内的报文大小可免掉消息体加成;能用 VPC 内网接入就绝不开公网(既省流量费,又少一个暴露面)。
五、实战:从零把一台"设备"接上云(八步)
第一步:先定地域,再选规格
地域在购买后不可更改,且不同地域的云产品不能走内网互通(例如广州的 CVM 无法通过内网访问上海的集群,跨地域内网需借助云联网 CCN)。国际版当前开放的地域为:中国内地 广州、南京、上海、上海自动驾驶云、北京、成都,境外 新加坡、法兰克福、硅谷、东京。选地域的两条官方建议:离目标用户/设备最近以降低时延;与其它云产品同地域以便走内网。
第二步:创建集群
登录 MQTT 控制台,左侧选 Resource Management > Cluster Management,选定地域后点 Create Cluster 进入购买页。需要填的配置项:
| 配置项 | 说明 |
|---|---|
| Billing Mode | 订阅(包年包月)或 按量计费 |
| Region | 购买后不可改,需谨慎 |
| Cluster Specification | 专业版 / 铂金版等 |
| TPS Specification | 生产 + 消费消息总量,按 3.1 节公式折算 |
| Number of Client Connections | 基础版上限 2000 且不可加购;专业版按 TPS 档赠送、可单独加购 |
| VPC | 将新购集群的接入点域名授权绑定到 VPC |
| Public Network Access | 开启会额外产生公网流量费,可随时关闭 |
| Cluster Name / Tag | 名称 3–64 字符,仅数字、字母、连字符、下划线 |
点 Buy Now,等待 3–5 分钟集群即出现在控制台。
第三步:规划 Topic 与订阅关系
Topic 是 MQTT 的消息通道,官方命名规则是:UTF-8 编码、长度 ≤256 字节、最多 10 级(即最多 9 个斜杠 /)。设计建议:用 业务域/设备类型/设备ID 三段式,例如 home/room/1;通配订阅用 +(单级)与 #(多级),但订阅层级越浅、扇出越大,消费 TPS 越高,要和控制台的订阅数量一起算进规格。
第四步:配置接入认证(数据面授权)
设备的"身份"分两层:Client ID 必须集群内唯一(重复会导致互相顶号掉线),支持字符为 0-9 a-z A-Z 与连字符、下划线、@,长度 ≤128 字节。生产环境务必开启授权策略:创建独立用户名/密码或使用 X.509 证书双向认证,并做到"一机一证、一机一密"。⚠️ 若未开启权限策略,数据面没有权限管理,任意"用户名+密码"都能连接、生产、消费——这是自建 MQTT 最常被忽视的开放风险,托管产品也默认需要你主动打开。
第五步:获取接入点
在控制台 Resource > Cluster 选中集群,进入基本信息页即可拿到 MQTT 接入点。各协议的地址格式如下(国际版域名为 mqtt.tencenttdmq.com):
| 传输方式 | 接入点格式 |
|---|---|
| TCP | tcp://mqtt-xxx.mqtt.tencenttdmq.com:1883 |
| SSL/TLS | ssl://mqtt-xxx.mqtt.tencenttdmq.com:8883 |
| WebSocket | ws://mqtt-xxx.mqtt.tencenttdmq.com:80/mqtt |
| WebSocket over SSL | wss://mqtt-xxx.mqtt.tencenttdmq.com:443/mqtt |
第六步:用 Python 跑通第一台"设备"
官方指定 Eclipse Paho 客户端。Paho-MQTT 仅支持 Python 3.7+,环境准备:
mkdir -p /root/quick-start && python3 -m venv /root/quick-start
cd /root/quick-start
./bin/pip3 install paho-mqtt
把下面代码保存为 /root/quick-start/example.py(记得替换接入点、用户名、密码与 Topic):
import time
import logging
from paho.mqtt import client as mqtt_client
host = "mqtt-xxx.mqtt.tencenttdmq.com"
port = 1883
topic = "home/room/1"
client_id = "QuickStart"
username = "your-username"
password = "your-password"
def on_connect(client, userdata, flags, rc, properties):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code", rc)
def on_message(client, userdata, msg):
print("Received", msg.payload.decode(), "from", msg.topic)
def connect_mqtt():
logging.basicConfig(level=logging.DEBUG)
client = mqtt_client.Client(
mqtt_client.CallbackAPIVersion.VERSION2,
client_id, clean_session=True, userdata=None,
protocol=mqtt_client.MQTTv311)
client.username_pw_set(username, password)
client.on_connect = on_connect
client.on_message = on_message
client.connect(host, port)
return client
def run():
client = connect_mqtt()
client.loop_start()
client.subscribe(topic, 1)
print("Subscribed", topic)
msg_count = 1
while msg_count <= 5:
time.sleep(1)
result = client.publish(topic, "messages: %d" % msg_count)
print("Send messages:", msg_count, "status:", result[0])
msg_count += 1
client.loop_stop()
time.sleep(5)
if __name__ == "__main__":
run()
运行 ./bin/python3 example.py,应能看到 Connected to MQTT Broker!、Subscribed home/room/1,随后每条 Send messages: N 都会立刻收到对应的 Received messages: N——这就是最小可用的"设备上报 + 云端下发"闭环。
第七步:生产端要做的三件事
- 重连要退避:官方示例用
FIRST_RECONNECT_DELAY=1、RECONNECT_RATE=2、MAX_RECONNECT_COUNT=12、MAX_RECONNECT_DELAY=60的指数退避,避免断网瞬间全体设备同时重连打爆集群(官方限制同一 Client ID 每秒仅 1 次、每分钟 10 次新连接)。 - Keep Alive 取 30–1200 秒:服务端按 1.5 倍周期判定连接失效;设置超过 1200 秒按 1200 秒算、小于 30 秒按 30 秒算。
- 会话与遗嘱:MQTT 5 可用
Session Expiry Interval调整离线会话保留(最长 3 天),用 Will 消息在设备异常掉线时通知云端。
第八步:监控与告警
控制台提供丰富的监控指标并对接云监控告警;HTTP 查询客户端在线状态这类数据面调用会各消耗一条连接额度,且每次调用按 QoS=1 消息计入 TPS——排查问题时的批量调用,本身也会花钱、占配额。
六、配额硬边界:上线前必须核对的一张表
托管 MQTT 的稳定性很大程度取决于"你有没有撞上配额"。下面是从官方《Product Constraints and Usage Quota》摘出的关键项,建议直接做成上线检查清单:
| 类别 | 限制项 | 上限/规则 | 超限行为 |
|---|---|---|---|
| 命名 | Client ID / 别名 | 集群内唯一;≤128 字节 | 连接被拒、CONNECT 返回错误 |
| Topic | 名称长度 / 层级 / 前缀数 | ≤256 字节 / ≤10 级 / 默认 20 个前缀 | PUBLISH 或 SUBSCRIBE 被拒 |
| 消息 | 单包大小 | 4 MiB | 发送报错 |
| 消息属性 | User Property / Correlation Data / 属性总长 | 各 8 KB / 16 KB(不含消息体) | 发送报错 |
| 保留消息 | 集群内保留消息总数 | 10000 条 | 新 Retain 发布被拒 |
| 保留消息 | 保留消息发布/消费速率 | 100 条/秒 | 发布报错、停止下发 |
| 消息保留 | 未消费消息(含保留)保留时长 | 3 天(铂金版可工单调整) | 超时删除 |
| 未确认消息 | 每会话服务端收到/发出的 QoS>0 未确认数 | 32 / 16(MQTT 5 可调至 1024) | 服务端断开客户端 |
| 连接 | 新连接频率(同 Client ID) | 每秒 1 次、每分钟 10 次 | 连接被拒 |
| 连接 | WebSocket 连接时长 | 24 小时 | 到时自动断开 |
| 连接 | 离线客户端状态保留 | 默认 3 天 | 超时删除状态 |
| 连接 | 在线 + 离线客户端总数 | 受集群连接数上限约束 | 超出后新连接被拒 |
| 订阅 | 自动订阅规则 / 每规则订阅数 | 默认 10(最多 20)/ 默认 20(最多 30) | 无法新建或新增不生效 |
| 共享订阅 | 每集群共享订阅组 / 每组订阅表达式 / 每组客户端 | 20 / 10 / 1024 | SUBSCRIBE 报错 |
| 证书 | 每集群服务端证书 / CA 证书 | 3(最多 10)/ 32 | 注册失败 |
| 消息增强 | 每集群规则数 | 10 条 | 新增失败 |
| 设备身份 | 每集群设备身份数 | 等于集群连接数 | 注册 API 报错 |
其中三条最容易踩:① 离线客户端也占连接数——"在线 + 保留会话的离线客户端之和"才是真实连接用量,断线的设备并不会把额度还给你;② 消息只保留 3 天,靠 MQTT 做长期消息堆叠不现实,需要落库请走数据集成(下一节);③ 设备身份数直接等于连接数,做"一机一证"前先确认连接数规格够不够。
七、数据集成:把设备消息接进大数据与 Serverless
TDMQ for MQTT 本身是"接入层",真正做事的是下游。官方提供三条集成路径,都基于 MQTT 共享订阅机制(多实例消费时自动做负载均衡):
- 接入 SCF(云函数):SCF 支持 MQTT 消息队列触发器,按 Topic Filter 订阅并自动触发函数执行。典型场景是新能源车电池管理——车端 TCU 检测到电量低于阈值,通过 MQTT Topic 发布状态消息,触发 SCF 完成"通知用户 + 导航到充电站";云端还可用 SCF 反向通过 MQTT 下发节电指令。事件驱动、无轮询、无空闲成本,是本链路最省心的组合。
- 接入 CKafka:CKafka 连接器内置 MQTT 源插件,把 MQTT 消息实时写入 Kafka Topic。映射关系是"MQTT 系统字段 + 用户属性 + 载荷"→"Kafka Key/Headers/Payload",其中
Message ID、Message Timestamp、Publisher Client ID、Publisher Client Host、Publisher Username会被带成扩展字段。适合智慧城市/交通数字孪生这类"设备数据要进大数据生态做检索与仿真"的场景。 - 接入 RocketMQ:面向需要事务、顺序、延迟消息能力的事件驱动业务。
配置 CKafka 连接器的两个前置动作容易漏:① 若 MQTT 集群开启了权限策略,需先在 Authentication > Username and Password 建一个专用账号(官方建议直接命名 ckafka_connector 并在策略中只授权其所需资源);② 连接器与任务都要与 MQTT 集群同地域,否则选不到目标集群。
八、避坑与省钱要点
- QoS 分级是省钱第一杠杆:QoS2(5 TPS)是 QoS1(2 TPS)的 2.5 倍。遥测、状态上报用 QoS0/QoS1,只有"金融级、不可丢、不可重"的下行指令才上 QoS2。
- 控制报文在 4 KB 以内:每超 4 KB 就多加 1 TPS。图片、固件、日志大文件走 COS,MQTT 只传 URL——这也和站内的《数据万象 CI》篇形成分工(大文件加工交给 CI,指令交给 MQTT)。
- Retain / Will 按功能加价 10 TPS:只在真正需要的 Topic 上开启,不要为全量设备默认打开。
- 能用 VPC 内网就绝不开公网:省掉公网流量费,同时收窄攻击面(内网数据面走 VPC 绑定,跨地域再上 CCN)。
- 公网暴露时一定设带宽上限:超限丢包、不再计费,等于给突发流量上了保险。
- 规格式计费下,"压缩规格"比"压缩流量"划算得多:优先降 QoS、缩报文、减少订阅扇出。
- 测试环境用独立集群:不同集群的 Topic、客户端完全隔离,避免压测流量污染生产;计费模式不可互转,短期测试直接选按量。
- 别把 MQTT 当数据库:消息只保留 3 天,长期存储请落 CKafka/数据库/COS。
总结与延伸阅读
把这篇的要点收成一句:TDMQ for MQTT 是 TDMQ 家族的"设备侧"成员,选它的信号是"连接方是弱网设备";成本的关键不是单价,而是 TPS 的三个加成维度(QoS / Will+Retain / 4 KB 报文单位)和连接数规格的估算方式。落地路径也很清晰:定地域 → 建集群 → 设 Topic 与鉴权 → 用 Paho 跑通设备端 → 接 SCF/CKafka 做下游 → 按配额表上线。
同门产品与相关实践可参考站内文章:TDMQ for Pulsar / RocketMQ 与 CKafka 的选型见 消息队列 TDMQ 三条产品线实战 与 CKafka 消息队列实战;下游用函数计算可由 SCF 无服务器函数入门 与 SCF 高级用法实战 接续;大文件与图片不要塞进 MQTT,交给 数据万象 CI;设备侧安全与主机安全可参考 主机安全 CWPP 实战 和 账号安全与 MFA 实战。
🚀 企业出海需要云架构咨询?需要海外云服务器?通过 4.chengzicloud.cloud 访问首页,覆盖香港/新加坡/东京/硅谷等地域的 CVM、COS、数据库与消息队列,按需选购、按量计费。
本文由 4.chengzicloud.cloud 提供,点击访问首页了解更多
常见问题(FAQ)
1:TDMQ for MQTT 和自建 EMQX / Mosquitto 比,值不值得买?
自建的优势是零软件费、可完全掌控;代价是要自己解决跨 AZ 高可用、百万连接的水平扩展、证书体系、监控告警与配额治理。托管版把这些做成了开箱即用的能力,只要你的设备规模到了"自建运维成本高于规格费"的临界点,且更看重稳定与合规,托管就是更省心的选择;反之,几十台设备的实验项目用自建更划算。
2:为什么不给我一个"每台设备每月多少钱"的数字?
因为该产品按集群规格计费,不按设备数或消息条数计费,且计算规格与连接数的官方刊例价未公开(以售卖页为准)。本文给出的可复算是公网流量费与 TPS 规格推算方法。
3:设备断线了,连接数会释放吗?
不会立刻释放。官方规定连接数上限同时约束"在线客户端 + 保留会话的离线客户端",离线状态默认保留 3 天(MQTT 5 可用 Session Expiry Interval 调整)。所以采购规格要按设备总数而不是在线峰值估算。
4:公网流量为什么只算出流量?
因为计费口径是"从负载均衡到公网的流量",即下行到设备的数据;设备上行到集群的流量不产生公网流量费。若设备走 VPC 内网接入,则连这部分都没有。
5:能不能用 MQTT 5 的新特性省成本?
可以。MQTT 5 支持订阅端用 $where 用户属性做 SQL 过滤(例如 where $QoS = 1 AND k1 = 'v1'),只接收关心的消息,减少无效下发;也支持共享订阅做消费端负载均衡、消息增强规则在服务端动态追加属性(每集群 10 条规则,规则支持 ${clientId} 等变量)。但要注意共享订阅组数与客户端数都有配额(每组 1024 客户端)。
6:本文的价格是多少年前的?
正文价格取自腾讯云国际版官方文档,核对时间为 2026 年 10 月。云产品价格与规格会调整,下单前请以官网售卖页与控制台为准。