MQTT协议:如何支持海量的在线IoT设备?

MQTT是一种针对物联网设备设计的消息协议,适合低性能设备和大规模设备连接。它不支持点对点通信,通常通过主题订阅模式进行通信。在选择MQTT产品时,10w以下客户端可选开源产品,超过这个数量则推荐云服务或自建集群。MQTT集群通过负载均衡和Proxy、Broker集群来支持海量在线设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MQTT 和其他消息队列的传输协议有什么不同?

MQTT 就是专门为物联网设备设计的一套标准的消息队列通信协议。使用 MQTT 协议的 IoT 设备,可以连接到任何支持 MQTT 协议的消息队列上,进行通信。

虽然 MQTT 和普通的消息队列相比,在消息模型、功能和网络结构上都是差不多的,但由于他们面对的使用场景是不一样的,所以,MQTT 和普通的消息队列相比,还是有很多区别的。我们看一下 MQTT 的使用场景有什么样的特点?

  1. 首先,它的客户端都是运行在 IoT 设备上。这种设备不能和我们普通消息队列的客户端比,Iot的设备成本非常低所以性能非常低,客户端网络也不稳定。(例如一台自行车,一个水杯)
  2. MQTT 面临的使用场景中,另外一个很重要的特点就是,服务端需要支撑海量的 IoT 设备同时在线。普通的消息队列通常都是10w以下的客户端接入就足够业务使用了。
  3. 另外,MQTT 它是不支持点对点通信的,一般的做法都是,每个客户端都创建一个以自己 ID 为名字的主题,然后客户端来订阅自己的专属主题,用于接收专门发给这个客户端的消息。这就意味着,在 MQTT 的集群中,主题的数量是和客户端的数量基本是同一个量级的。

如何选择 MQTT 产品?

RocketMQ 它的元数据是保存在 NameServer 的内存中,Kafka 是保存在 ZooKeeper 中,这些存储都不擅长保存大量数据,所以也支撑不了太多的客户端和主题,其实绝大部分常规的消息队列都不支持这种大量客户端和topic场景,所以基于这种常规的消息队列做二次开发的意义不大。

10w以内的客户端连接可用选择开源的MQTT产品,他们通常都不支持集群模式;

10w以上客户端连接的,

  1. 这种情况建议选择一些云平台厂商提供的 MQTT 云服务,价格相对比较低,当然你可以选择价格更高的商业版 MQTT Server。
  2. 另外一个选择就是,基于已有的开源 MQTT Server,通过一些集成和开发,来自行构建 MQTT 集群。

MQTT 集群如何支持海量在线的 IoT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值