主题
MQTT 消息下发服务
部署归属:客户侧(每客户一套)
运行环境:首期使用客户侧腾讯云 IoT Explorer(客户独占账号),通过适配层兼容其他 IoT 平台 核心职责:承载客户私有云与工控机之间的托管长连接、设备鉴权和 JSON 消息透传
选型结论
首期优先选择腾讯云 IoT Explorer,不优先自建或托管 EMQX。
选型理由:
- 门店数量、设备类型和运维团队规模都不适合先承担 Broker 高可用、监控、证书、升级、容量规划等运维成本。
- 我们现阶段购买的是 IoT Explorer 的最小连接层能力:MQTT 长连接管理、设备接入鉴权、Topic 权限、在线状态和消息透传。
- 业务协议统一使用平台无关的 JSON,由客户 Backend 和 IPC 工控机自行解释。
- 不依赖 IoT Explorer 的物模型、设备影子、场景联动、数据分析面板等重绑定能力。
- 连接规模、成本、云厂商绑定或协议限制变化时,通过适配层切换承载平台。
结论:IoT Explorer 是首期托管连接层,不是业务权威源;客户 Backend 仍然是设备策略、指令权限、幂等、审计和重试的权威来源。
职责边界
MQTT 服务负责:
- 接入客户名下所有 IPC 设备(按
DeviceName=SN) - 提供设备在线状态、MQTT 长连接、订阅/发布能力
- 承载控制指令、执行回执、状态事件等 JSON 消息透传
- 基于
DeviceSecret或 IoT Explorer 设备证书建立设备认证(首期按实际开通方式定稿) - 通过 Topic ACL 限制单台 IPC 只能读写自己的 Topic
MQTT 服务不负责:
- 业务规则判断(由 Backend 负责)
SN_Secret的管理与验签(由 Centre 与客户私有云负责)- 资产分配(由 Centre 负责)
- 解释业务 payload、保存业务状态或承担订单/权益/门禁授权判断
- 承载人脸特征向量、图片、升级包等敏感或大体积数据
- 绑定 IoT Explorer 物模型、设备影子、场景联动等平台语义
云平台替代评估(最小能力模型)
评估只看“消息透传、长连接管理、连接鉴权、Topic 权限、在线状态”这些最小能力,不把物模型、低代码控制台、规则编排等重能力作为首期依赖。
| 平台 | 替代性 | 首期建议 | 说明 |
|---|---|---|---|
| 腾讯云 IoT Explorer | 高 | 首选 | 国内交付与微信生态匹配,托管连接层可降低初期运维与可靠性成本 |
| 阿里云 IoT Platform | 高 | 国内备选 | 能力形态接近,可作为客户已重度使用阿里云时的替代方案 |
| AWS IoT Core | 高 | 海外备选 | MQTT、证书、自定义鉴权、Topic 权限完整,适合海外或全球化客户 |
| Google Cloud | 低 | 不作为首期主通道 | Cloud IoT Core 已退役,通常需要第三方 IoT 平台或自建 MQTT 接入层组合 |
| Cloudflare Pub/Sub | 中低 | 不作为主通道 | 更偏 MQTT 消息基础设施,不是完整设备接入与生命周期管理平台 |
| 托管/自建 EMQX | 高 | 可选承载平台 | 可控性强,但首期会引入 Broker 高可用、监控、升级和安全运维成本 |
客户账号与部署要求
| 项目 | 要求 |
|---|---|
| 实例归属 | 每客户独立腾讯云账号下的 IoT Explorer 实例 |
| 产品与设备 | 客户私有云按 SN 动态注册产品设备映射 |
| TLS | 强制开启 TLS |
| ACL | 按设备粒度限制 Topic 读写权限 |
| 可用性 | 依赖腾讯云托管高可用能力 |
平台无关协议边界
为保证业务协议可在不同 IoT 平台间切换,所有业务协议必须遵守以下边界:
- Topic 命名在业务层保持稳定,落地到不同平台时只做适配映射。
- Payload 统一为自定义 JSON,不使用平台物模型属性、事件、行为作为业务协议。
- 每条控制指令必须包含
msg_id、timestamp、type、sn、data,由 IPC 做时间窗、幂等和 Schema 校验。 - 每条指令必须通过 HTTPS
/v1/ipc/report(type=result:{target}:{action})返回执行结果,Backend 负责超时、重试、审计和状态落库。 - 敏感数据和大文件走 HTTPS 通道,不走 MQTT。
- 后端代码需要封装
DeviceMessageGateway适配层,避免业务代码直接依赖 IoT Explorer SDK。
Topic 规范(IoT Explorer)
| Topic | 方向 | 说明 |
|---|---|---|
{ProductID}/{deviceName}/data | 客户私有云 -> IPC | 统一下行(控制、配置、人脸管理等) |
首期 ProductID 为
A0VYTK4W4F;deviceName与设备 SN 一致。IPC 上行与执行结果统一经 HTTPSPOST {cpc_url}/v1/ipc/report回传。
运行期自治边界
- MQTT 只承担控制流与状态流,不承载
SN_Secret或用户隐私数据 - Centre 仅参与首次注册链路,不参与运行期 MQTT 消息路由
- 即使 Centre 暂时不可达,客户私有云仍可通过 IoT Explorer 持续下发控制
待确认事项
- [ ] 各客户 IoT Explorer 的统一监控指标和告警阈值
- [ ] MQTT Topic ACL 的最小权限模板(按门店分组还是按单设备)