物联网开发平台系统怎样选择MQTT方案

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

MQTT有以下几项特性

1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

2、对负载内容屏蔽的消息传输;

3、使用 TCP/IP 提供网络连接;

4、有三种消息发布服务质量;

5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低

网络流量;

6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

MQTT是如何运作的?我们用如下图说明这个:

 图片1.png

 

现在行业内有很多在IBM公司的MQTT协议上衍生很多优秀的第三方组件产品,我们现在来分析一下如下产品的特点,EMQX、RabbitMQ、activeMQ、MosquittoVerneMQ

     EMQ X 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接、分布式集群架构、发布订阅模式的开源 MQTT 消息服务器。开源至今,EMQ X 在全球物联网市场得到了广泛应用。在开源版基础上,还陆续发展了商业版和提供云版本(cloud-hosting)。EMQ X 支持很多插件,具有强大拓展能力,用户依靠插件可以实现更多的功能。

RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ 服务器也是基于 Erlang 语言开发的,现在可以通过插件配置的形式,使其支持 MQTT 协议。

ActiveMQ使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大,集群模式需要依赖Zookeeper实现

Mosquitto是用C语言实现的MQTT物联网协议v3.1 的消息代理服务器。提供轻量级的,支持可发布/可订阅的的消息推送模式,不支持集群部署。

VerneMQ 是一个高性能、分布式的 MQTT 消息代理。可在流行的硬件上轻松实现水平和垂直扩展,用于支持高并发的消息发布和订阅服务,同时维持低延迟和容错特性。VerneMQ 实现了 MQTT 3.1 和 3.1.1 规范。 Erlang 作为开发语言支持集群部署。

现在我们来Docker环境部署单机模拟1000个客户端,每隔3秒发送数据,数据取最大概均值如下表:

微信图片_20230218142458.png


 
 

物联网平台系统开发需要根据客户的需求选择合适的MQTT消息中间件搭建自己硬件通信服务器,用户设备数量和信息交互量确定了使用技术和实现方法。 深圳市云谷智创是一家物联网软硬件一站式解决方案提供商,公司是位于深圳市的一家国家高新企业,有自己的研发团队,可以承接物联网系统开发和硬件开发,按客户需求完美定制物联网系统、智能家居系统。


  • 返回顶部
  • 联系我们

    ×

    云谷智创

    0755-27502752