EMQX是一款完全开源、高度可伸缩、高可用的分布式MQTT消息服务器,支持CoAP/LwM2M一站式IoT协议接入。它基于Erlang/OTP平台开发,适用于IoT、M2M和移动应用程序,可处理千万级别的并发客户端。设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由。
一、EMQX特性
- 开放源码:基于 Apache 2.0 许可证,EMQX 实现了完全开源,自 2013 年以来已经发布了超过 200 个开源版本,不断迭代更新以满足用户需求。
- 超大规模:EMQX 5.0 的单集群可以支持多达一亿条 MQTT 并发连接,展示了其在处理大量并发连接方面的强大能力。
- 高性能:单个服务器在传输和处理方面的吞吐量可以达到每秒百万级别的 MQTT 消息,显示出其在高吞吐量处理方面的出色性能。
- 低延迟:近乎实时的信息传递能力,确保了延迟时间在亚毫秒级别,为用户提供了快速响应和实时性的体验。
- 全面支持 MQTT 5.0 标准:完全符合 MQTT 5.0 和 3.x 标准,使其具有更好的可扩展性、安全性和可靠性,为用户提供了全面的 MQTT 协议支持。
- 高可用:通过采用无主节点分布式架构,实现了高可用性和水平扩展性,确保了系统的稳定性和可扩展性。
- 云原生:通过使用 Kubernetes Operator 和 Terraform,用户可以在企业内部和公共云中轻松地部署 EMQX,简化了部署过程并提高了效率。
二、EMQX 5.0 全新功能
1.Mria 集群架构
EMQX 5.0 支持全新的 Mria 集群架构,该架构极大地提高了 EMQX 的水平扩展性,使其单个集群能够轻松支持高达 1 亿个 MQTT 连接。这使得 EMQX 5.0 在全球范围内成为最具扩展性的 MQTT Broker。
除了提供更大规模的集群以满足用户业务需求,Mria 架构还有效降低了大规模部署可能带来的脑裂风险以及脑裂发生后的潜在影响。这使得 EMQX 5.0 能够提供更加稳定可靠的物联网数据接入服务,以满足用户的需求。
2.MQTT over QUIC 支持
EMQX 5.0 以实验性功能将 QUIC 作为 MQTT 传输层,并设计了一种独特的消息传输机制和管理方式。QUIC 非常适用于传统 TCP/IP 网络 UDP MTU 大小能够保证的弱网环境或者网络经常切换的环境。对于设备时刻处在移动中的物联网场景(如车联网、移动采集等),或是需要频繁断连不适合做长连接的场景(如设备需要定期休眠)来说,QUIC 都拥有巨大的潜力,是更为适合的底层协议选择。
3.全新物联网数据集成
EMQX 5.0 在其原有的 SQL 基础上集成了 jq,以支持更复杂的 JSON 数据的处理。此外,它还支持将数据发送到 Webhook,或与外部 MQTT 服务建立双向数据桥接。
同时,EMQX 5.0 还提供了数据集成可视化查看能力(Flows),通过 Dashboard 页面,您可以清晰地追踪和监控设备与云端之间的物联网数据处理和流转步骤。
在后续版本中,EMQX 还将引入一项新功能,即通过 Dashboard 以拖拽的方式编排规则和数据桥接(Flow Editor),通过可视化操作实现数据集成配置,这将进一步简化数据集成的复杂性。
4.灵活多样认证授权
EMQX 5.0 认证授权的改进流程使其更加灵活易用,同时提供了对接各类数据源与认证服务的配置方式。通过简单的配置,用户无需编写代码即可为物联网应用开启安全防护。
EMQX 5.0 认证授权的特性包括:
- 在 Dashboard 中完成整个集群的认证授权配置,简化了操作流程。
- 通过 Dashboard 管理认证凭证与授权数据,方便用户进行权限管理和数据控制。
- 支持调整认证器与授权检查器顺序,以满足不同场景下的需求。
- 提供执行速度与次数统计指标,实现认证授权的可观测性,方便用户监控和优化系统性能。
- 允许监听器单独配置认证,提供了更灵活的接入能力,方便用户根据不同需求进行定制化配置。
5.全新 EMQX Dashboard
EMQX 5.0 引入了全新的 UI 设计风格的 EMQX Dashboard,不仅提升了视觉体验,还极大地增强了 EMQX 的易用性。
全新的 Dashboard 更新包括:
- 全新的 UI/UX 设计,提供丰富的样式和易于上手的使用交互。
- 优化的菜单结构,使用户能够快速直达访问相关内容。
- 更丰富的可视化系统,使数据和状态清晰明了。
- 开箱即用的认证授权配置与管理功能,方便用户进行权限管理和数据控制。
- 强大的数据集成能力,通过 Flow 可视化编排和双向数据桥接实现灵活的数据集成配置。
- 在线配置更新功能,使用户能够在 Dashboard 上实现配置的热更新。
6.全新网关框架
EMQX 5.0 对多协议接入的底层架构进行了重构,使得各个网关的功能定义更加清晰明确。这一重构包括以下内容:
- 独立的统计指标:每个网关都有自己独特的收发字节数、消息等指标,这些指标独立于其他网关,有助于更好地了解和监控每个网关的性能。
- 独立的连接和会话管理能力:这种能力使每个协议的客户端属性得以清晰地查看和管理。这意味着,无论是哪种协议的客户端,其属性都能够在网关中进行统一的管理和维护。
- 独立的客户端认证:每个网关都可以配置独立的认证方式,这样可以根据实际情况对不同的网关进行差异化的认证管理。
- 更简单的协议扩展机制:通过标准化的概念和接口,新协议的扩展变得更加简单和容易。这为未来可能加入的新协议提供了更加便捷的集成方式。
EMQX 5.0 的网关不仅实现了多种协议的接入和统一管理,还使得 MQTT 之外的其他协议也能够充分享受 EMQX 的强大功能,如数据集成、安全可靠的认证授权以及极高的水平扩展能力等。这为物联网设备提供了更灵活、更高效的接入和管理方式,推动了物联网技术的进一步发展。
7.更多功能更新
- 全新的简洁配置:通过将配置文件更改为简洁易读的HOCON格式,并默认仅包含常用的配置项,emqx.conf文件可读性和可维护性得到了提高。
- 改进的REST API:提供了符合OpenAPI 3.0规范的REST API,并附带了清晰且丰富的API文档,为用户带来更好的使用体验。
- 快速故障排查:提供了更多的诊断工具,如慢订阅和在线追踪等,以帮助用户快速排查生产环境中的问题。
- 结构化日志:提供了更友好的结构化日志以及JSON格式日志支持,错误日志中包含了唯一的msg,方便定位问题原因。
- 更灵活的拓展机制:通过引入全新的插件架构,用户可以以独立插件包的形式进行编译、分发和安装拓展插件。同时支持配置多个多语言钩子扩展exhook,并提供完善的状态与指标监控。