MQTT协议介绍与Broker列表

MQTT协议介绍

MQTT是什么?

MQTT 是基于 Publish/Subscribe(发布/订阅) 模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点。

官网https://mqtt.org/

MQTT中文文档:EMQ X 消息服务器简介 | EMQ Docs

wiki各种语言版本开发库:
https://github.com/mqtt/mqtt.github.io/wiki/libraries?spm=a2c4g.11186623.2.11.2d73174cN52z60

MQTT角色组成

1、服务端(Broker)

EMQX就是一个MQTT的Broker,emqx只是基于erlang语言开发的软件而已,类似的还有java、netty、nio框架。
此外还要其他的MQTT Broker如下:

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

2、客户端(发布[生产者]/订阅[消费者])

EMQX 通过里面的websocket 可以实现消息的发布与订阅

当然我们常常会通过java代码来实现我们消息的生产者和消费者

在安装好EMQX代理服务器后,EMQX 不仅仅为我们提供了Mqtt broker,EMQX 的dashboard(一个EMQX的web界面)可以通过 websocket 这个功能实现消息的发布与订阅

MQTT Broker 比较与选型

列举几个热门开源的 MQTT Broker,其中部分项目提供商业支持,做简单选型对比。

EMQ-X HiveMQ ActiveMQ Mosquitto
License 开源+商用 开源+商用 开源 开源
公司 杭州映云科技 dc-square ,德国 Apache 项目维护者 Eclipse 开源社区
开发语言 Erlang Java Java C
连接数 开源十万级,商用百万级 开源25个,商用百万级 千万级
系统性能 单机十万 单机百万 集群千万 支持集群
协议支持 MQTT、CoAP、MQTT-SN、WebSocket、LwM2M MQTT MQTT、JMS、Openwire、Stomp、AMQP、WebSocket XMPP MQTT、WebSocket
MQTT 5.0 ×
认证鉴权 TLS/DTLS、ClientID/IP地址/用户密码认证、根据IP地址/ClientID/用户名访问控制LDAP/Redis/MySQL/MongoDB/PostgreSQL/HTTP API认证 TLS/DTLS、X.509证书、JWT、OAuth2.0、应用协议(ID/用户名/密码)、配置文件形式的认证与 ACL 功能 LDAP (JAAS)、Apache Shiro ×
规则引擎 开源支持基础规则引擎,商用支持增强规则引擎 × × ×
消息存储 开源不支持,商用支持Redis、MySQL、MongoDB、InfluxDB、OpenTSDB等 提供 Java SDK JDBC、KahaDB、LevelDB ×
扩展集成 WebHook、Trigger、Plugin、LuaHook、PythonHook、JavaHook、大量REST API Trigger、Plugin 、Java SDK 少量队列管理 REST API ×
管理监控 Dashboard、Prometheus、Grafana HiveMQ Control Center、Prometheus、Grafana、InfluxDB 监控 Prometheus、Grafana ×

更多 MQTT Broker 服务器

posted @ 2022-10-14 11:09  司码易  阅读(766)  评论(0编辑  收藏  举报