1. 当下比较流行的 MQTT Broker 有几个:
- Eclipse Mosquitto: 官网 ,C 语言实现。Eclipse 组织还还包含了大量的 MQTT 客户端项目
- EMQX: 官网,Erlang 语言开发,支持许多其他 IoT 协议比如 CoAP、LwM2M 等
- Mosca: 官网 ,Node.JS 开发,简单易用
- VerneMQ: 官网 ,Erlang 开发
从支持 MQTT5.0、稳定性、扩展性、集群能力等方面考虑,EMQX 的表现应该是最好的。
2. EMQ X 主要有以下的特点:
- 100+版本的迭代,经受了严苛的考验
- EMQ X 支持丰富的物联网协议,包括 MQTT、MQTT-SN、CoAP、 LwM2M、LoRaWAN 和 WebSocket 等
- 单机百万连接,集群千万级连接
- 易于安装和使用
- 灵活的扩展性,支持企业的一些定制场景
- 国产
- 基于 Apache 2.0 协议许可,完全开源。EMQ X 的代码都放在 Github 中,用户可以查看所有源代码
- EMQ X 3.0 完全兼容 MQTT 5.0 协议
- MQTT V3.1 和 V3.1.1 协议。除了 MQTT 协议之外,EMQX 还支持别的一些物联网协议
- 毫秒级消息转发。EMQ X 中应用了多种技术以实现上述功能
- 利用 Erlang/OTP 平台的软实时、高并发和容错(电信领域久经考验的语言)
- 全异步架构
- 连接、会话、路由、集群的分层设计
- 消息平面和控制平面的分离等
- 扩展模块和插件,EMQ X 提供了灵活的扩展机制,可以实现私有协议、认证鉴权、数据持久化、桥接转发和管理控制台等的扩展
- 桥接:EMQ X 可以跟别的消息系统进行对接,比如 EMQ X Enterprise 版本中可以支持将消息转发到 Kafka、RabbitMQ 或者别的 EMQ 节点等
- 共享订阅:共享订阅支持通过负载均衡的方式在多个订阅者之间来分发 MQTT 消息。比如针对物联网等数据采集场景,会有比较多的设备在发送数据,通过共享订阅的方式可以在订阅端设置多个订阅者来实现这几个订阅者之间的工作负载均衡