产品定价 立即试用
MQTT Broker
文档 > MQTT功能 > MQTT代理
入门
安装 架构 API 常见问题
目录

MQTT 消息代理

MQTT 是一种轻量级的发布/订阅消息协议,广泛应用于物联网(IoT)及其他分布式系统。 它专为在资源受限、低带宽、高延迟或不可靠网络环境中高效运行而设计。

每个MQTT架构的核心是 MQTT broker—— 负责管理客户端之间所有通信的中心服务器。 broker负责接收发布者的消息、确定订阅者对哪些消息感兴趣,并根据协议规则可靠地投递它们。 broker由此成为MQTT系统的骨干,确保消息交换无缝、安全且高效。

image

MQTT客户端

MQTT client 是连接broker以发送或接收消息的任何设备、应用或服务。 客户端可以是小型资源受限的IoT传感器,也可以是复杂的企业级应用。 常见示例包括:

  • IoT设备:发布传感器数据,如温度、湿度或GPS位置。
  • 移动端或Web应用:订阅来自连接设备的更新。
  • 后端服务:收集、处理或可视化入站数据流。

每个客户端可承担一个或多个角色:

  • 发布者(Publisher):向指定主题发送(发布)消息。
  • 订阅者(Subscriber):从一个或多个主题接收(订阅)消息。
  • 混合(Hybrid):根据用例同时充当发布者和订阅者。

通过broker分离发布者和订阅者,MQTT客户端保持松耦合,使系统更灵活、可扩展且更易维护。

MQTT主题

MQTT topic 是broker用于在发布者和订阅者之间路由消息的结构化字符串。 主题定义通信的主旨或通道,是发布/订阅模型的骨干。

主要特性:

  • 层级结构:主题按斜杠(/)分隔的层级组织。 示例:home/livingroom/temperature
  • 消息流

    • 发布者向特定主题发送消息。
    • 订阅者在一个或多个主题上注册兴趣,并接收发布到这些主题的所有消息。

主题中的通配符

MQTT支持称为 MQTT wildcards 的特殊字符以简化订阅模式:

  • +(单层通配符)——匹配主题层级中恰好一层。 示例:home/+/temperature → 匹配 home/livingroom/temperaturehome/kitchen/temperature
  • #(多层通配符)——匹配主题层级中所有剩余层。 示例:home/# → 匹配 home/livingroom/temperaturehome/kitchen/humidity 以及 home/ 下任何内容。

这套灵活的主题系统使客户端能够精确过滤消息,使MQTT在大规模事件驱动通信中极为高效。

MQTT Broker的角色

MQTT broker 是MQTT系统中实现通信的核心组件。 客户端之间从不直接通信——所有消息都经由broker流转。 作为可信中介,broker保证消息按协议规则安全、可靠地投递。

broker的主要职责包括:

  • 管理客户端连接:建立、监控和维护与MQTT客户端的会话。
  • 认证与授权:验证客户端身份并执行访问控制策略,确保只有授权客户端可以发布或订阅。
  • 消息路由:接收已发布的消息并有效分发给订阅相关主题的所有客户端。
  • 会话与状态管理:跟踪客户端订阅,若已配置,则为离线客户端存储未投递消息。
  • 服务质量(QoS):按所选 MQTT QoS 级别保证消息投递——至多一次(QoS 0)至少一次(QoS 1)恰好一次(QoS 2)

简言之,broker是 MQTT网络的骨干,确保客户端间通信可扩展、安全且可靠。

工作原理

MQTT系统的运行可拆分为若干阶段——从客户端连接broker,到认证与授权,再到消息发布与分发。

客户端连接

  • 客户端(设备、应用或服务)使用 CONNECT 报文发起与broker的连接。
  • 该报文通常包含:

    • 客户端标识符(clientId
    • 协议版本(如MQTT3.1.1或MQTT5.0)
    • 可选的用户名和密码
    • 清洁会话标志或会话过期间隔(用于会话持久化)
    • 若已定义,Last Will and Testament(LWT) 消息

认证与授权

  • broker通过校验凭证(用户名/密码、SSL/TLS证书或基于token的机制)验证连接请求。
  • 认证通过后,broker执行授权策略,确定客户端允许发布订阅的主题。
  • 若连接被接受,broker返回 CONNACK 报文确认会话参数;否则拒绝连接。

订阅主题

  • 为接收消息,客户端发送 SUBSCRIBE 报文,指定一个或多个主题(可含通配符)及期望的 QoS级别
  • broker登记客户端订阅,并以 SUBACK 报文回复确认授予的QoS级别。

发布消息

  • 当客户端要发送数据时,向broker发送 PUBLISH 报文。
  • 报文包含:

    • 主题名称
    • 消息负载
    • 投递可靠性所用的QoS级别
    • 保留标志(若消息应存储为该主题的最后已知有效值)
  • 根据QoS,broker与客户端可能交换确认报文(PUBACKPUBRECPUBRELPUBCOMP)以保证投递。

消息分发

  • broker接收已发布的消息并查找匹配该主题的所有活动订阅。
  • 对每个匹配的订阅者,broker转发消息:

    • 遵守与各订阅者约定的 QoS级别
    • 在适用处投递保留消息。
    • 若启用持久化会话,则为离线订阅者存储消息。

接收消息

  • 订阅者从broker收到的 PUBLISH 报文中获取消息。
  • 根据QoS,订阅者可能需要回复确认报文以确认收到。
  • 处理完成后,订阅者可以对消息采取操作——记录、存储、可视化或触发动作。

断开连接

  • 当客户端不再需要连接时,发送 DISCONNECT 报文。
  • 若客户端意外断开,broker触发 Last Will and Testament(LWT) 消息(如已配置),并可根据持久化设置保持会话。

从连接到认证、从消息投递到断开的端到端生命周期, 使MQTT成为从简单IoT设备到大规模分布式系统的轻量而稳健的消息协议

MQTT Broker的主要特性MQTT broker将MQTT的协议级特性系统级能力相结合,确保消息传递高效、安全且可靠。

broker支持的MQTT协议特性

  • 服务质量(QoS):在不同级别保证消息投递——至多一次(0)至少一次(1)恰好一次(2)
  • Keep Alive机制:通过要求周期性通信,确保客户端与broker之间的连接保持活跃,快速检测断开连接。
  • Last Will and Testament(LWT):若客户端意外断开则发送预定义消息,自动帮助检测故障。
  • 保留消息:存储主题上的最后一条消息,使新订阅者立即收到最新状态。
  • 基于主题的路由:使用层级主题和通配符,将已发布消息高效匹配给订阅者。
  • 会话持久化:为重连客户端保留订阅和未投递消息,即使在短暂断连后也能可靠通信。
  • 共享订阅(MQTT5.0):在订阅者组内分发消息以实现负载均衡。

以上是broker支持的部分最重要MQTT特性。 根据协议版本(MQTT3.1.1或5.0)及具体broker实现,可能还有更多特性用于提升可靠性、效率和安全性。

TBMQ支持完整的MQTT3.x和MQTT5.0协议特性。

broker能力

  • 可扩展性:以稳定可靠性处理成千上万或数百万的并发客户端连接及消息。
  • 性能:针对低延迟和高吞吐量优化,即使在大规模分布式系统中。
  • 持久性:确保关键消息和会话数据持久存储(如数据库或磁盘队列),在重启或崩溃后仍可恢复。
  • 安全性:提供TLS/SSL加密、认证及细粒度访问控制,保障通信安全。
  • 高可用与集群:支持集群、负载均衡和容错,适用于生产级部署。
  • 集成:与数据库、Kafka或云服务等外部系统无缝对接,用于数据处理和分析。

TBMQ开箱即用提供所有上述能力:支持数百万客户端的水平扩展、高吞吐与低延迟、由Redis/Kafka驱动的持久化、 内置TLS/SSL安全、带容错的集群,以及与Kafka、其他MQTT broker和HTTP服务等外部系统的集成。

MQTT Broker类型MQTT broker根据部署、许可和使用方式分为不同形式。主要类别包括:

  1. 开源broker

    • 免费使用且高度可定制,拥有活跃的开发者社区。
    • 适用于原型开发、自托管部署及集成到更大系统。
  2. 商业broker

    • 提供企业级特性,如集群、监控仪表板、高级安全及SLA保障支持。
    • 适合需要可靠保障、高可用性和专业支持的组织。
  3. 云托管broker(MQTT-as-a-Service)

    • 完全托管的服务,提供商负责部署、扩缩、维护和可用性。
    • 适合快速采用及需要将基础设施管理外包的场景。
  4. 嵌入式broker

    • 极轻量的broker,可直接运行在边缘设备、网关或应用内部。
    • 适用于本地处理、离线优先场景或对低延迟有要求的边缘计算环境。

如何选择合适的MQTT Broker选择适合的MQTT broker取决于项目规模、需求和长期目标。以下标准可供参考:

  • 可扩展性:确保broker能处理预计的客户端连接数和消息吞吐量,并留有扩展空间。
  • 高可用与集群:寻找集群、复制和负载均衡等特性,以保证生产环境的可用性和容错。
  • 性能:在真实负载条件下评估延迟、吞吐量和资源效率,确保broker满足响应性需求。
  • 安全性:确认支持TLS/SSL加密、认证、授权及细粒度访问控制,保护数据和设备。
  • 持久化:考虑broker是否提供持久化消息存储——包括保留消息、离线队列或与外部数据库集成。
  • 集成能力:验证与生态系统的兼容性,如Kafka、SQL/NoSQL数据库、监控工具或云平台。
  • 社区与支持:活跃的开源社区或企业支持对问题排查和长期维护至关重要。
  • 成本:根据需求平衡预算——在开源(免费、DIY)、商业(许可证+支持)或云(订阅制、托管)之间选择。

综合权衡这些因素,可选出既能满足当前需求又能随系统演进而扩展的broker。

TBMQ 即为满足上述标准而设计—— 提供企业级可扩展性、集群、持久化、强安全及深度集成能力,同时保持易用和成本效益。 是开源使用者和寻求生产级MQTT平台的企业的不错选择。

总结MQTT broker是任何基于MQTT的系统的骨干,实现分布式设备与服务间高效可靠的通信。

在IoT生态、智能家居、工业自动化、车联网及大规模数据基础设施等诸多领域发挥关键作用。

将消息路由、投递保证和连接管理等职责交由broker承担,客户端设备可保持简单、轻量且资源高效。 这不仅降低了设备复杂度,还提升了可扩展性、安全性和整体系统可靠性——使MQTT broker成为现代连接应用的基础。