优秀是一种习惯!!!
Solo  当前访客:0 开始使用

AmethystFOB

记录精彩人生

AMQP与MQTT选型

2023-11-28 13:22:59 amethystfob
0  评论    0  浏览

AMQP与MQTT选型

一、AMQP优点缺点适用场景

AMQP(Advanced Message Queuing Protocol)和MQTT(Message Queuing Telemetry Transport)都是消息队列协议,用于在分布式系统中传输数据。它们各有优缺点和适用场景。

下面是它们的比较:

AMQP

优点

  • 支持广泛的消息模型,包括点对点、发布/订阅、请求/响应等。
  • 支持事务、消息确认和持久化。
  • 支持多种编程语言和客户端库。
  • 可以提供更高级的可靠性和安全性,例如消息加密、身份验证和授权。

缺点

  • 复杂性较高,学习曲线较陡。
  • 需要更高的服务器资源。
  • 不适合对延迟敏感的应用。

适用场景

  • 需要高度可靠性和安全性的应用,例如金融、医疗等领域。
  • 需要支持多种消息模型的应用,例如实时消息、任务处理等。
  • 不需要快速响应的场景,例如数据采集、批处理等。

MQTT

优点

  • 轻量级,协议头较小,适用于低带宽和高延迟的网络环境。
  • 客户端资源消耗较少,可以在嵌入式系统上使用。
  • 支持发布/订阅模型,可以实现实时数据传输。
  • 适合在移动设备和传感器网络中使用。

缺点

  • 不支持事务、消息确认和持久化。
  • 不支持多种消息模型。
  • 不支持身份验证和授权。

适用场景

  • 需要低带宽和高延迟的应用,例如物联网、远程监控等。
  • 需要实时数据传输的应用,例如传感器网络、车联网等。
  • 不需要高可靠性和安全性的场景,例如天气预报、新闻推送等

1.1 MQTT流行Broker

• 1. Eclipse Mosquitto: https://github.com/eclipse/mosquitto

使用 C 语言实现的 MQTT Broker。Eclipse 组织还还包含了大量的 MQTT 客户端项目:https://www.eclipse.org/paho/#

• 2. EMQX: https://github.com/emqx/emqx使用 Erlang 语言开发的 MQTT Broker,支持许多其他 IoT 协议比如 CoAP、LwM2M 等

• 3. Mosca: https://github.com/mcollina/mosca使用 Node.JS 开发的 MQTT Broker,简单易用。

• 4. VerneMQ: https://github.com/vernemq/vernemq同样使用 Erlang 开发的 MQTT Broker

从支持 MQTT5.0、稳定性、扩展性、集群能力等方面考虑,EMQX 的表现应该是最好的。

二、MQ中间件使用MQTT分析

RabbitMQ和EMQ X都是支持MQTT协议的消息队列中间件,下面是它们的比较:

RabbitMQ使用MQTT

优点

  • RabbitMQ支持MQTT协议的插件,可以轻松地将MQTT与其他协议集成在一起。
  • RabbitMQ支持消息确认和持久化,保证了消息的可靠性。
  • RabbitMQ提供了基于AMQP的高级功能,例如事务和QoS,可以更好地控制消息的处理和传输。

缺点

  • RabbitMQ的MQTT插件相对比较简单,功能不如专门的MQTT中间件EMQ X丰富。

适用场景

  • 需要将MQTT与其他协议集成在一起的应用,例如HTTP、AMQP等。
  • 需要可靠性较高的应用,例如金融、医疗等领域。

EMQ X使用MQTT

优点

  • EMQ X是一款专门的MQTT中间件,支持MQTT5.0协议,功能较为丰富。
  • EMQ X支持集群、分布式和容器化部署,可以满足高并发和大规模的消息传输需求。
  • EMQ X提供了多种安全和认证机制,例如TLS/SSL、OAuth2、LDAP等,可以保证消息的安全性和可靠性。
  • EMQ X还提供了REST API、WebSocket等接口,可以方便地与其他系统进行集成。

缺点

  • EMQ X相对于RabbitMQ来说,学习曲线稍微陡峭一些,需要花费一定时间来学习其丰富的功能和配置。

适用场景

  • 需要支持大规模、高并发的MQTT消息传输的应用。
  • 需要多种安全和认证机制保证消息的安全性和可靠性的应用。
  • 需要支持REST API和WebSocket等接口的应用。

Mosca使用MQTT

优点

  • Mosca是一个轻量级的MQTT中间件,占用资源较少,可以在嵌入式设备上运行。
  • Mosca提供了可插拔的存储后端,可以根据需求选择合适的后端存储方式。
  • Mosca支持多种认证和授权机制,例如基于用户名和密码、TLS/SSL等方式。
  • Mosca提供了多种扩展机制,例如插件、Webhooks等。

缺点

  • Mosca相对于EMQ X和RabbitMQ来说,功能和性能上可能有所限制。

适用场景

  • 需要在嵌入式设备

标题:AMQP与MQTT选型
作者:amethystfob
地址:https://newmoon.top/articles/2023/11/28/1701148140218.html

欢迎各路大侠指点留痕:
, ,
TOP