白皮书
车云灵活数采方案:释放数据价值,加速智能创新 →

MQTT 服务器(MQTT Broker):工作原理与快速入门指南

EMQX Team
2024-10-16
MQTT 服务器(MQTT Broker):工作原理与快速入门指南

什么是 MQTT 服务器(MQTT Broker)?

MQTT 是一种适用于物联网的轻量级协议,MQTT Broker 是其核心组件

MQTT Broker 是一种中介实体,帮助 MQTT 客户端进行通信。作为中央枢纽,MQTT Broker 能够高效管理设备与应用之间的信息流。具体来说,MQTT Broker 接收客户端发布的消息,根据主题对消息进行过滤,并分发给订阅者。

通过使用 MQTT Broker 实现发布/订阅通信模型,可以显著提高 MQTT 协议的效率和可扩展性。这种由 Broker 促成的通信方式,为设备在网络环境中共享信息提供了轻量级、可扩展且可靠的机制,在构建高效、响应迅速的物联网生态系统和其他分布式应用中发挥着重要作用。

MQTT Broker 的重要性

MQTT Broker 是 MQTT 架构的核心,因为它负责协调 MQTT 客户端(发布者和订阅者)之间的通信。

以下是 MQTT Broker 的一些重要作用:

  • 消息路由:MQTT Broker 接收发布者发送的消息,并根据主题将其转发给相应的订阅者。这保证了消息能够有效和准确地传送,而无需客户端之间建立直接连接。
  • 扩展性:MQTT Broker 能够处理大量并发连接,这对于物联网和 M2M 通信场景非常重要,在这些场景中,可能有成千上万甚至数百万个设备连接。Broker 处理这些连接和消息的能力使 MQTT 协议能够高效地扩展。
  • 安全性:MQTT Broker 可以提供身份验证和加密等安全机制,以保证物联网设备和应用之间数据传输的安全性。要了解更多信息请阅读:MQTT 安全指南:2024 年你需要了解的 7 个要点
  • 集成性:MQTT Broker 可以与其他通信协议和云平台集成,以构建完整的物联网解决方案。例如,MQTT Broker 可以与 AWS IoT、Google Cloud IoT 或 Microsoft Azure IoT Hub 集成,以实现一个无缝的物联网生态系统。
  • 会话管理:MQTT Broker 负责管理客户端会话,包括维护客户端订阅信息,以及处理保留消息以便在客户端上线时发送给客户端。会话管理功能可以确保在客户端断开连接并在稍后重新连接到 Broker 时不会丢失消息。要了解更多信息请阅读:MQTT Persistent Session 与 Clean Session 详解

MQTT Broker 架构

MQTT Broker 架构基于发布-订阅消息传输模式,将消息生产者(发布者)与消息消费者(订阅者)解耦。该架构包括三个主要组件:客户端、主题和 Broker 。

  • MQTT Broker 服务器

    MQTT Broker 是个服务器,它接收发布者发送的消息,并根据订阅者订阅的主题将消息转发给订阅者。它管理客户端连接、处理订阅和退订,并保证按照指定的服务质量(QoS)级别发送消息。

  • MQTT 客户端

    MQTT 客户端可以是发布者,也可以是订阅者,或者两者都是。发布者向 MQTT Broker 发送消息,而订阅者从 Broker 接收消息。客户端可以是任何能够使用 MQTT 协议与 MQTT Broker 建立连接的设备或应用,如物联网设备、移动应用或其他服务器。

  • 主题

    主题是具有层次结构的字符串,描述了消息的类别。当发布者向 Broker 发送消息时,会指定一个主题。订阅者通过订阅一个或多个 MQTT 主题来表明他们想要接收消息的类别。Broker 根据用户订阅的主题,将消息转发给相应的用户。

MQTT Broker 架构可以是集中式的,也可以是分布式的。在集中式架构中,单个 Broker 负责客户端之间的所有通信。在分布式架构中,多个 Broker 协同工作,以构建一个可扩展和容错的消息传输基础设施。分布式架构中的每个 Broker 都可以与其他 Broker 通信,管理消息转发,保证消息送达预期的接收者。

总之,MQTT Broker 架构提供了一个灵活高效的消息传输基础架构,使设备和应用能够安全、高效和大规模地进行通信。

热门开源 MQTT Broker

EMQX

EMQX 是目前物联网应用中最具扩展性的 MQTT Broker。它能够以亚毫秒级的延迟在一秒钟内处理百万级的 MQTT 消息,并支持在一个集群内连接高达 1 亿个客户端进行消息传输。EMQX 兼容 MQTT 5.0 和 3.x 版本。它是分布式物联网网络的理想选择,可以在 Microsoft Azure、Amazon Web Services 和 Google Cloud 等云上运行。EMQX 支持 MQTT over TLS/SSL,并支持多种认证机制,如 PSK、JWT 和 X.5093。与 Mosquitto 不同,EMQX 支持通过 CLI、HTTP API 和 Dashboard 进行集群管理。

Mosquitto

Eclipse Mosquitto 也是一款开源的 MQTT Broker,兼容 MQTT 协议的 5.0、3.1.1 和 3.1 版本。Mosquitto 体积小巧,既可以运行在低功耗的单板计算机上,也可以部署在企业级服务器上。它采用 C 语言编写,可以用 C 库实现 MQTT 客户端。它支持 Windows、Mac、Linux 和 Raspberry Pi 等多种平台,为每个平台提供了方便安装的二进制文件。最新版本还增加了一个认证和授权插件 “mosquitto-go-auth”,以及一个用于管理 Mosquitto 实例的 Web 用户界面。此外,它还提供了一个 PHP 包装器 “Mosquitto-PHP”,可以方便地在 PHP 中开发 MQTT 客户端。

NanoMQ

NanoMQ 是一款为物联网边缘设计的轻量级 MQTT Broker。NanoMQ 以纯 C 语言实现,基于 NNG 的异步 I/O 和多线程 Aactor 模型,支持 MQTT 3.1.1 和 MQTT 5.0。NanoMQ 在独立 Broker 的环境中具有较高的性能。它的优势在于它的可移植性,它可以部署在任何 POSIX 兼容的平台上,并可在 x86_64、ARM、MIPS 和 RISC-V 等多种 CPU 架构上运行。

VerneMQ

VerneMQ 项目于 2014 启动,最初由 Erlio GmbH 开发。它是第二个用 Erlang/OTP 开发的 MQTT Broker,该项目遵循 Apache 2.0 开源协议,并借鉴了 EMQX 项目的部分代码。在架构设计方面,VerneMQ 支持将 MQTT 消息持久化到 LevelDB 中,并使用基于 Plumtree 库的集群架构,该库实现了 Epidemic Broadcast Trees 算法。

MQTT Broker 选择指南以及一些有用的评估资源

接下来,本文将指导您如何根据需求,评估和选择最合适的 MQTT Broker。

评估标准

MQTT Broker 对比

MQTT Broker 基准测试

快速入门 MQTT Broker

您可以轻松地通过免费公共 MQTT Broker 或全托管 MQTT 服务快速入门。

EMQ 提供了一个免费的公共 MQTT 服务器,由全球多区域的 EMQX 集群构建,专为学习和测试 MQTT 协议的用户设计。请注意,不建议在生产环境中使用此公共 Broker,因为可能存在安全风险和停机问题。

全托管云服务是启动 MQTT 服务的最简单方式。通过 EMQX Serverless 版本,您可以在几分钟内开始运行 MQTT 服务,并在 AWS、Google Cloud 和 Microsoft Azure 的 20 多个区域中部署,实现全球覆盖和快速连接。EMQX Serverless 为开发者提供每月免费 1M 会话分钟数,使其能在数秒内轻松启动 MQTT 部署。

免费试用 EMQX Serverless
无须绑定信用卡
开始试用 →

快速上手

MQTT Broker 集成

MQTT Broker 在行业中的应用

  • 实时监控与控制:MQTT Broker 是物联网架构的核心,使设备能够发布和订阅主题。这实现了制造业、智能家居和医疗保健等行业中设备的实时监控与控制。
  • 工业传感器网络:在工业环境中,MQTT Broker 在收集和传播传感器数据方面发挥着关键作用,支持预测性维护和流程优化等应用。
  • 交通中的遥测:MQTT Broker 实现了连接车辆之间的通信,支持车辆跟踪、性能监测和交通管理等应用中的遥测数据交换。
  • 能源管理:MQTT Broker 协调智能电表、配电设备和能源管理系统之间的通信,提高能源系统的效率、可靠性和响应能力。
  • 物流与仓储:MQTT Broker 支持供应链中的实时跟踪和可见性,使设备能够发布和订阅位置信息和状态更新,从而提高整体供应链效率。

EMQX:全球最具扩展性的 MQTT Broker

EMQX 是全球最受欢迎的 MQTT Broker 之一,在 GitHub 上拥有 14k Stars。EMQX 项目于 2012 年启动,采用 Apache 2.0 协议开源。EMQX 是用 Erlang/OTP 编写的,这是一种专为构建大规模可扩展软实时系统而设计的编程语言。

EMQX 是全球最具扩展性的 MQTT Broker,支持 MQTT 5.0MQTT-SNMQTT over QUIC 等先进的功能。它支持无主集群架构,保证了高可用性和水平扩展性。自 5.0 版本起,EMQX 能够在由 23 个节点组成的单一集群上,支持高达 1 亿的 MQTT 并发连接。

EMQX 不仅提供了丰富的企业功能、数据集成、云主机服务,还有来自 EMQ 的商业支持。EMQX 以其卓越的性能、可靠性和可扩展性,赢得了企业、初创公司和个人开发者的广泛认可。EMQX 被应用于各个行业的关键业务场景,如物联网、工业物联网网联汽车制造业和电信。

咨询 EMQ 技术专家
联系我们 →

推荐阅读