白皮书
车联网设计与实现:搭建可靠、高效、符合行业需求的车联网平台 →

MQTT Broker:工作原理、相关产品与快速入门指南

EMQX Team
2023-6-19
MQTT Broker:工作原理、相关产品与快速入门指南

什么是 MQTT Broker?

MQTT 是一种适用于物联网的轻量级协议,MQTT Broker 是其核心组件。本文介绍了 MQTT Broker 的作用,对比分析了它的不同实现方式,并概述了它的应用场景、特点和最佳实践。

MQTT Broker 是个中介实体,它负责 MQTT 客户端之间的通信。具体来说,MQTT Broker 接收客户端发布的消息,并根据主题对消息进行筛选,然后将其分发给订阅者。

通过使用 MQTT Broker 实现发布/订阅通信模型,可以显著提高 MQTT 协议的效率和可扩展性。

MQTT Broker 的重要性

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

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

  • 消息路由:MQTT Broker 接收发布者发送的消息,并根据主题将其转发给相应的订阅者。这保证了消息能够有效和准确地传送,而无需客户端之间建立直接连接。
  • 扩展性:MQTT Broker 能够处理大量并发连接,这对于物联网和 M2M 通信场景非常重要,在这些场景中,可能有成千上万甚至数百万个设备连接。Broker 处理这些连接和消息的能力使 MQTT 协议能够高效地扩展。
  • 安全性:MQTT Broker 可以提供身份验证和加密等安全机制,以保证物联网设备和应用之间数据传输的安全性。要了解更多信息请阅读:MQTT 安全指南:2023 年你需要了解的 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 集成

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

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

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

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

免费试用 EMQX 企业版
无限连接,任意集成,随处运行。
开始试用 →

推荐阅读

2022-7-29Guowei Li
2023 年值得尝试的 7 个 MQTT 客户端工具

本文精选了 2023 年最新、最实用的 7 款 MQTT 客户端工具,并按桌面端、浏览器端、命令行分类,希望能帮助您快速找到适合 MQTT 测试的客户端工具。