MQTT BROKER 技术选型

MQTT(Message Queuing Telemetry Transport)是一个即时通讯协议,由IBM开发。它支持所有平台,可以将所有联网的物品和外部连接起来,被用于传感器和致动器的通信协议。
MQTT的主要特点包括:

  • 使用发布/订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合。这一点类似于XMPP,但MQTT的信息冗余远小于XMPP。
  • 对负载内容进行屏蔽的消息传输。
  • 使用TCP/IP提供网络连接。主流的MQTT是基于TCP连接进行数据推送的,但也有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同。
  • MQTT能够容忍不稳定网络,并在发生断开等故障时恢复。
  • MQTT是专门为低功耗目标而设计的,而HTTP的设计没有考虑此因素,因此增加了功耗。
  • MQTT支持数百万个客户端的连接,例如IBM提供的IBM MessageSight服务器经过测试能处理多达100万个通过MQTT并发连接的设备。
  • MQTT有三种消息发布的服务质量等级:至多一次、只有一次和分发的消息可能丢失或重复。

一、开源可选MQTT BROKER

支持功能对比图
image.png

二、选型

2.1 项目需求

  • 可扩展性、安全性、可靠性、高性能
  • 支持mqtt5.0、mqtt3.1.1
  • 账号/密码连接
  • 支持QoS 0、QoS 1、QoS 3

2.2 选取符合条件broker分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

EMQ X

EMQ是一个基于Erlang语言的开源mqtt服务器,目前来看是开源的最好的mqtt服务器,也是国内开源的mqtt服务器,优点是功能全面,文档齐全,社区活跃,有很好的支持,缺点是因为erlang语言,对于其他语言的开发者自己扩展有一定难度。官方文档是:EMQ(开源)
优点

  • MQTT 3.1 / 3.1.1 / 5.0
  • 完整QoS支持
  • 单节点100万连接
  • 分布式集群或桥接(还支持mosquitto桥接、rsmb桥接)、脑裂自动愈合
  • LDAP, MySQL, PostgreSQL, Redis, MongoDB等验证插件
  • 完整连接方式支持
  • API、Web监控界面
  • 本地共享订阅(EMQ2.0)、集群共享订阅(EMQ3.0)
  • $SYS统计信息主题
  • 自定义插件开发

缺点

  • 安装和配置相对复杂
  • CPU 和内存使用率较高
  • 开源版本不支持持久化
Mosquitto

Mosquitto 是一个广泛使用的开源 MQTT Broker,隶属于 Eclipse 基金会,遵循 Eclipse 公共许可证(EPL/EDL 许可证)。截至 2023 年 3 月,它在 GitHub 上拥有超过 7k 个 Star。Mosquitto 支持 MQTT 5.0、3.1.1、3.1,并且提供了对 SSL/TLS 和 WebSocket 的支持。
优点

  • 轻量级、占用资源少
  • MQTT 3.1 / 3.1.1 / 5.0
  • 简单易用

缺点

  • 不支持多线程和集群
  • 不支持在云端部署
VerneMQ

vemeMQ 项目于 2014年启动,最由 Erlo GmbH 开发,它是第二个用 EdandOTP 编写的 MQTT Brokel, Apache 20 许可证。
在架构设计上, VemeMQ 支持使用LevelDB 进行 MQTT 消息持久化,并采用基于 Plumtree 库的集群架构,该库实现了 Epidemic broadcast Trees 算法.
然而,尽管 Plumtee 集群架构以理论上看很完美,但其可行性尚未得到证明,VemeMQ 团队和社区花费了多年时间尝试解决系统存在的问题,如网络分裂、数据不一致和崩溃恢复等,但是取得的成果有限。
优点

  • 高可用
  • 水平可扩展性
  • 支持消息持久化

缺点

  • 未经验证的集群架构
  • 文档不足
  • 企业功能有限
  • 缺少开发维护
HiveMQ

HiveMQ是企业级MQTT Broker,提供高性能、高可用、高扩展、高安全性的企业级服务。它是纯Java实现的。Apache 20 许可证。
优点

  • MQTT 3.1 / 3.1.1 / 5.0
  • 完整QoS支持
  • 分布式集群支持
  • 持久化支持
  • 流量控制支持
  • 完整连接方式支持
  • IPv6支持
  • 集群共享订阅
  • $SYS统计信息主题
  • JMX性能监控
  • 日志打印

缺点

  • 没有开源源码
  • 企业功能需要付费

三 结语

通过前文的介绍和对比,我们可以看到,每个 MQTT Broker 都有其独特的优点,适合不同的部署场景。EMQX 具有高扩展性和企业级功能,适合在云端部署,EMQX 社区活跃。

四 其它

image.png

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端马农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值