什么是 MQTT?
MQTT 是一种轻量级的发布/订阅协议,旨在最大限度地降低网络带宽和设备资源要求。MQTT 常用在汽车、物流、智能家居、消费电子、交通运输等场景,更多场景可参见 使用案例。OASIS 组织提供v3.1、v3.1.1和v5三个标准协议规范。
TDMQ-MQTT 相比标准规范,有哪些差异?
TDMQ-MQTT 基于 MQTTv3.1.1 和 MQTTv5 两个标准协议开发,但有一些特性暂未支持:
1. TDMQ-MQTT 支持 QoS 的 Publish 和 Subscribe,但极端场景无法保证 Exactly Once 的语义。
2. TDMQ-MQTT 暂时不支持 AUTH 控制报文。
3. TDMQ-MQTT 暂不支持 Server Redirect。
4. 极端场景下,无法保证 Message Ordering。
在使用 QoS 1 的方式订阅时,如果客户端未及时确认消息消费,服务端重传机制是什么样的?
当客户端使用 MQTT v3.1 和 MQTT v3.1.1 协议接入 TDMQ-MQTT 时,默认传输窗口是16,也就是说最多有16条消息处于 in-flight 状态。消息进入窗口后开始定时,如果在120秒内未收到对应的 PUBACK、PUBREC 等对应报文,服务端将消息进行重传,重传的报文有设置对应 DUP 位。
当使用 MQTT v5 标准协议接入时,窗口大小受 Receive Maximum 控制,重传间隔也是120秒。
支持哪些 TLS 版本?
车联网场景通常使用一车一证,是否支持?
TDMQ-MQTT 产品支持“一机一证”的使用场景,可复用用户 PKI 设施。产品还支持通过云 API 激活、取消激活、吊销设备证书,达成 OCSP 协议规范的目标。
低算力场景无法使用“一机一证”,是否支持每个设备独立认证和授权?
TDMQ-MQTT 产品支持“一机一密”场景,用户可通过 Shared Access Token 的方式,在云端为每个低算力设备进行注册,通过预共享密钥签发 Token 进行认证;用户也可以集成现有 JWT、HTTP Service 等方式实现按设备独立认证和授权。
消息队列 MQTT 版如何计费?
消息队列 MQTT 版是否支持公网接入?
支持,在购买 TDMQ MQTT 版集群时您可以开启公网;在购买集群后,您也可以随时开启或者关闭公网连接。
消息队列 MQTT 版有什么使用限制?
使用消息队列 MQTT 版收发消息支持哪些认证和鉴权模式?
用户名及密码的认证和鉴权:TDMQ MQTT 对于连接的客户端使用的角色的用户名和密码进行校验。不同的角色的权限(如发送或者消费消息)不同,您可以自由灵活的定义。
X.509 证书认证:使用默认证书开启服务端认证。您也可以使用您的自有证书进行客户端和服务端的双向认证。
自定义 JWT 认证和鉴权:支持使用客户自有的 JWT 服务进行认证和鉴权。
外部HTTP认证和鉴权:支持通过对接外部第三方或用户vpc内的 HTTP 服务进行客户端认证和鉴权。
消息队列 MQTT 版 的 TPS 规格如何计算?
在使用 MQTT 协议收发消息时,每条消息的收发行为以1为基本计量单位,TPS 规格会根据消息服务 QoS、消息存储资源占用、消息体大小三个维度之和来综合计算,其中:
消息服务 QoS
消息服务 QoS=0 计算为 1TPS。
消息服务 QoS=1 计算为 2TPS。
消息服务 QoS=2 计算为 5TPS。
存储资源占用
消息使用 Will 功能和 Retain 功能时需要额外占用 Broker 存储资源,因此当用户在配置使用 Will 及 Retain 功能时会分别额外计算 10TPS。
消息体大小
每条消息以 4KB 为单位折算,不满4KB不额外计算 TPS,每超过 4KB 额外计算 1TPS。
例如,某集群同一时刻连接有3个客户端,此时集群向第一个客户端发送一条 QoS=1 消息,消息体大小为 64KB,对应集群生产 TPS 规格计算为 2+⌈64/4-1⌉=17TPS、集群接收第二个客户端发送的一条 QoS=2 并开启 Retain 功能消息,消息体大小为 32KB,对应集群消息 TPS 规格计算为 5+10+⌈32/4-1⌉=22TPS、第三个客户端连接集群并开启 Will 功能,额外计算 10TPS。此时综合计算集群 TPS 规格为 17+22+10=49TPS。
哪些区域开通了 TDMQ MQTT 产品?
目前在北京、上海、上海自动驾驶专区、广州、南京、新加坡、法兰克福、硅谷、成都、中国香港、东京区域开通了消息队列 MQTT版,后续将在更多区域开通服务。