MQTT消息中间件的⽐较
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它⼯作在 上,是为硬件性能低下的远程设备以及⽹络状况糟糕的情况下⽽设计的发布/订阅型消息协议,为此,它需要⼀个 。
Mosquitto、RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件
Redis是⼀个基于Key-Value对的NoSQL数据库,开发维护很活跃。虽然它是⼀个Key-Value数据库存储系统,但它本⾝⽀持MQ功能,所以完全可以当做⼀个轻量级的队列服务来使⽤。对于RabbitMQ和Redis的⼊队和出队操作,各执⾏100万次,每10万次记录⼀次执⾏时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同⼤⼩的数据。实验表明:⼊队时,当数据⽐较⼩时Redis的性能要⾼于RabbitMQ,⽽如果数据⼤⼩超过了10K,Redis则慢的⽆法忍受;出队时,⽆论数据⼤⼩,Redis都表现出⾮常好的性能,⽽RabbitMQ 的出队性能则远低于Redis。
除了Apache Apollo之外还有多款软件可作为MQTT代理服务器使⽤,同时这些代理服务器所⽀持的协议往往也并不是只有MQTT⼀种。本⽂就来看看各类MQTT代理服务器都有哪些特性。原⽂地址如下:
译⽂如下:
本页试图记录各种MQTT服务器(代理)⽀持的特性。这是针对它们对MQTT的⽀持;其中很多服务器具有⽐MQTT更⼴泛的功能。
功能
备注
QoS 0:服务质量 0,最多传输⼀次。
QoS 1:服务质量1,⾄少传输⼀次。
QoS 2:服务质量2,仅仅传输⼀次。
auth:验证,⾝份验证授权。
bridge:桥接,服务器代理之间连接
$SYS:主题过滤器通配符,订阅后能够接收到所有以此通配符开头的主题的消息。
dynamic topics:动态主题
cluster:集
Server QoS
QoS
1开源mqtt服务器
QoS
2
auth bridge$SYS SSL
dynamic
topics
cluster websockets
plugin
system
2lemetry✔✔✔✔✔§✔✔✔✔✘Apache ActiveMQ✔✔✔✔✘✘✔✔✔✔✔Apache ActiveMQ Artemis✔✔✔✔✘✘✔✔✔✔✔Bevywise IoT Platform✔✔✔✔rm✔✔✔✔✔rm emitter✔§✘✔✘✘✔✔✔✔✘emqttd✔✔✔✔✔✔✔✔✔✔✔flespi✔✔✔✔✘✘✔✔✔✔✘GnatMQ✔✔✔✔✘✘✘✔✘✘✘HBMQTT✔✔✔✔✘✔✔✔✘✔✔HiveMQ✔✔✔✔✔✔✔✔✔✔✔
IBM MessageSight✔✔✔✔✘✔✔✔§✔✘
JoramMQ✔✔✔✔✔✔✔✔✔✔✔Mongoose✔✔????????? moquette✔✔✔✔??✔?rm✔✘mosca✔✔✘✔????✘✔✘mosquitto✔✔✔✔✔✔✔✔§✔✔MQTT.js✔✔✔§✘✘✔✔✘✔✘MqttWk✔✔✔✔✔?✔✔✔✔✘RabbitMQ✔✔✘✔✘✘✔✔??? RSMB✔✔✔✔✔✔✘✔✘✘?
Software AG Universal
✔✔✔✔✘✘✔✔✔rm✘Messaging
Solace✔✔✘✔§✔✔✔✔✔✘SwiftMQ✔✔✔✔✔✘✔✔✔✘✔Trafero Tstack✔✔✔✔✘✘✔✔✘✘✘VerneMQ✔✔✔✔✔✔✔✔✔✔✔WebSphere MQ✔✔✔✔✔✔✔✔???
说明:✔表⽰⽀持,✘表⽰不⽀持,?表⽰未知,§表⽰⽀持但有限制,rm表⽰(roadmap)路线图规划中也就是计划⽀持。
注:Apache Apollo的功能特性参考Apache ActiveMQ
限制
1. MQTT.js 接受提供⽤户名和密码的连接,但实际上并不对连接进⾏⾝份验证。
2. IBM MessageSight ⽀持⼀个⾼可⽤性模式能够提供集的冗余优势,但是不⽀持针对MQTT的负载均衡。
3. 2lemetry 使⽤域,其中第⼀个主题段作为域的名称。 $SYS主题空间位于域中 。
4. Solace 没有提供⼀个代理之间专有的桥接⽅案.
5. mosquitto 的集是在后端级别实现的(⽐如redis, amqp等)。
6. Software AG Universal Messaging提供主动/主动集(通过专有协议)和桥接(通过专有协议)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。