# emqx是什么?

EMQX: MQTT 与 AI 一体化平台 (opens new window)

EMQX 是一款高性能、可扩展的开源 MQTT 消息 broker,专为物联网平台而设计。

# emqx详细解释

我们可以从几个层面来理解 EMQX:

1. 核心身份:MQTT Broker

  • MQTT 协议:首先,MQTT 是一种轻量级的、基于发布/订阅模式的网络协议,专门为在低带宽、高延迟或不稳定的网络环境中进行消息传输而设计。它非常适合物联网设备。
  • Broker(代理/服务器):在 MQTT 模型中,Broker 是核心枢纽,负责接收来自客户端(如传感器、手机App、服务器)的消息,并根据主题将消息路由给订阅了该主题的其他客户端。

简单比喻:EMQX 就像物联网世界的“信息交换总机”或“消息路由器”。 所有设备都连接到这个总机,告诉总机它关心什么信息(订阅),当有设备发布新信息时,总机就会准确地把信息传递给所有关心该信息的设备。

  1. 关键特性和优势

EMQX 之所以在众多 MQTT Broker 中脱颖而出,是因为它具备以下强大特性:

  • 高性能与高可扩展性
    • 单节点可以支持数百万的并发物联网设备连接。
    • 通过集群模式,可以轻松横向扩展,处理海量连接和消息吞吐量,满足大型物联网应用的需求。
  • 低延迟与高吞吐量
    • 优化了内部架构,能够处理极高频的消息收发,保证消息的实时性。
  • 全面的 MQTT 协议支持
    • 支持 MQTT 3.1、3.1.1 以及最新的 MQTT 5.0 协议,提供了更丰富的功能,如消息过期、原因码等。
  • 丰富的生态系统集成
    • 规则引擎:这是 EMQX 的一个杀手级功能。它允许您通过 SQL-like 的方式实时处理消息数据,无需编写代码就能将数据轻松地桥接到超过 40 种外部系统,如:
      • 数据库:MySQL, PostgreSQL, MongoDB, Redis, TimescaleDB
      • 消息队列:Kafka, RabbitMQ, Pulsar
      • 云服务:AWS DynamoDB, Google Pub/Sub, Azure Event Hubs
      • 大数据平台:ClickHouse, InfluxDB
  • 企业级可靠性
    • 提供消息持久化、QoS(服务质量)等级保证(确保消息必达)、会话持久化等功能,保证业务连续性。
  • 强大的安全性
    • 支持 TLS/SSL 加密传输。
    • 丰富的认证授权机制,如用户名/密码、JWT、X.509 证书、与外部数据库(LDAP)集成等。
  • 开箱即用与可观测性
    • 提供友好的 Web 管理控制台,方便监控集群状态、客户端连接、消息统计等。
    • 支持 Prometheus/Grafana 等监控工具集成。
  1. 版本类型

EMQX 提供两种版本以满足不同用户的需求:

  • EMQX 开源版:功能强大且完全免费,基于 Apache License 2.0。对于大多数中小型项目或个人开发者来说,其功能已经绰绰有余。
  • EMQX 企业版:在开源版基础上,提供了更高级的功能,如:
    • 与更多企业级数据源(如 Oracle, SAP)的桥接。
    • 更细粒度的权限控制和审计日志。
    • 官方提供的专业技术支持和服务。
  1. 典型应用场景

EMQX 被广泛应用于各种需要实时、可靠消息传递的场景,尤其是:

  • 物联网:车联网、智能家居、工业物联网、共享单车、智慧城市等。
  • 移动消息推送:App 的实时消息通知。
  • 实时 Web/App 应用:在线聊天室、直播互动、多玩家游戏等。

总结

EMQX 是一个强大、可靠且易于扩展的物联网消息中间件平台。 它不仅是一个简单的 MQTT Broker,更是一个集成了数据处理和转发能力的“物联网消息枢纽”。无论是构建一个小型的智能家居项目,还是一个需要处理千万级设备连接的商业物联网平台,EMQX 都是一个非常优秀和热门的选择。

# MQTT协议是那一层的?

答:MQTT(Message Queuing Telemetry Transport)协议是位于应用层的消息传递协议。它建立在 TCP/IP 协议之上,使用了轻量级的发布/订阅模式,通常用于在网络中传输低带宽高延迟不稳定的环境下的实时数据。MQTT 协议的设计目标是提供一种简单、轻量级、可靠实时的消息传递方案,因此被广泛应用于物联网(IoT)等领域。

# MQTT的3个消息质量等级(QoS)

MQTT 的消息质量,就是你发一条消息,它到底有多“靠谱”能送到对方手里。它分了三个等级,从“差不多得了”到“死磕到底必须送到”。

你可以把它们想象成寄信:

  1. QoS 0:“最多送一次” (At most once)
  • 大白话“发了就算了”“佛系发送”
  • 怎么工作:就像你寄一封平信,不挂号,也不管对方收没收到。你把信扔进邮筒,你的任务就完成了。
  • 风险:消息可能会丢失。如果网络不好,或者对方刚好没在线,这条消息就没了。
  • 适用场景:用于那些丢了也无所谓的数据,比如定期上报的传感器温度数据,丢了一个下一个马上就来了。
  1. QoS 1:“至少送一次” (At least once)
  • 大白话“收到请回复,没回复我就再发!”
  • 怎么工作:就像你寄一封挂号信。你把信交给邮局(Broker),邮局会给你一个回执,告诉你“信我们收到了”。如果没收到回执,你就会一直重复寄这封信,直到拿到回执为止。
  • 风险可能重复收到。因为发送方只要没收到回执就会重发,所以接收方有可能会收到一模一样的消息好几条。接收方需要自己能处理重复消息。
  • 适用场景:用于比较重要,但不能丢的数据,比如一个控制命令“打开车库门”,重复了顶多门再开一次(可能有点烦),但丢了就执行不了了(更严重)。
  1. QoS 2:“确保送一次” (Exactly once)
  • 大白话“万无一失,保证送到,而且只送一次”
  • 怎么工作:这是最可靠的,流程也最复杂。它像一个严谨的商务流程,分四步:
    1. 你先把消息发给对方,但先不删除底稿。
    2. 对方回复说:“我准备好了,你可以正式发给我了。”
    3. 你收到确认后,正式发送消息,并删除底稿。
    4. 对方收到后再次回复:“我正式收到了。”
  • 风险速度最慢,因为来回确认的步骤最多。但保证了消息既不会丢,也不会重复
  • 适用场景:用于至关重要、绝对不能出错的数据,比如一笔支付交易、一个关键的状态更新。重复或丢失都会造成严重问题。

# MQTT的3个QoS总结与比喻

QoS 是 Quality of Service 的缩写。

中文翻译是:服务质量

在计算机网络和通信领域,这个术语非常通用,不仅仅用于 MQTT。

  • Quality(质量):指的是通信的“品质”如何。
  • Service(服务):指的是网络提供的传输服务。

所以,Quality of Service(服务质量) 整体上描述的是一套技术手段,用于保证网络数据传输的可靠性、延迟、带宽等关键指标

QoS 等级 大白话名字 像寄什么信? 会丢吗? 会重复吗? 速度
QoS 0 发了就算了 平信 可能 不会 最快
QoS 1 收到请回复 挂号信 不会 可能 中等
QoS 2 万无一失 严谨的商务流程 不会 不会 最慢

接收方的核心任务就是:

  • 如果用的是 QoS 1,你的程序要准备好处理可能出现的重复消息(比如通过消息ID去重)。
  • 如果用的是 QoS 2,你就可以放心,Broker 已经帮你搞定了一切,你收到的每条消息都是“纯净”的。

所以,在选择用哪个等级时,就是在速度、可靠性和系统复杂度之间做权衡。

Last Updated: 10/13/2025, 10:00:14 AM