MQTT中文站
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
      • Node-RED 安装部署
      • Node-RED 用户指南
      • Node-RED 创建节点
      • Node-RED 示例教程
      • Node-RED 开发流程
      • Node-RED 接口参考
      • Node-RED 配置模板
      • Node-RED 常见问题
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册

MQTT共享订阅 – MQTT 5要点第7部分

2 年前 • MQTT 5

欢迎来到我们的MQTT 5基础教程系列的第7部分。在第6部分中,我们探讨了MQTT用户属性。在本文中,我们将深入探讨一个特别有趣的功能:共享订阅。

共享订阅是MQTT 5的核心功能,它允许多个MQTT客户端共享代理上的单个订阅。本质上,这个功能允许在多个客户端之间分发主题上的消息,从而改善了MQTT系统的负载均衡和容错性。

共享订阅:用v5填补MQTT的空白

MQTT 5经过精心设计,旨在弥合MQTT 3.1.1提供的功能与用户对物联网的期望之间的差距。通过集成备受期待的功能,如共享订阅、会话和消息到期间隔,MQTT 5有望在可预见的将来巩固MQTT作为物联网协议的地位。

MQTT共享订阅是如何工作的?

在标准的MQTT订阅中,每个订阅的客户端都可以获得发布到该主题的每条消息的副本。而使用共享订阅,共享同一个订阅的客户端会按顺序接收消息,这个过程有时被称为客户端负载均衡。单个主题的消息负载分布在所有订阅者之间。

MQTT客户端可以使用标准的MQTT机制订阅共享订阅。任何标准的MQTT客户端,例如Eclipse Paho,都可以在客户端上不需要任何修改的情况下参与其中。需要注意的是,共享订阅使用独特的主题语法进行订阅。

共享订阅使用以下主题结构:

$share/GROUPID/TOPIC

共享订阅由3部分组成:

  • 静态的共享订阅标识符($share)
  • 组标识符
  • 实际的主题订阅(可能包括通配符)

通过一个具体的示例来说明这种订阅:
$share/my-shared-subscriber-group/myhome/groundfloor/+/temperature。

MQTT共享订阅在HiveMQ MQTT Broker中的工作原理如何?

共享订阅组可以在概念上被想象为一台虚拟的客户端,同时代表多个订阅者。HiveMQ会从组中选择一个订阅者,并将消息传递给该客户端。它通常使用轮询法来进行分发。以下图片演示了原理:

MQTT共享订阅 – MQTT 5要点第7部分-MQTT中文站

例如,HiveMQ部署中可能包含多个共享订阅组。这些组可以具有相同的订阅,但不同的组标识符。当发布者发布与特定主题匹配的消息时,每个组中都会选择一个唯一的客户端来接收消息。例如,以下情景是可能的:

MQTT共享订阅 – MQTT 5要点第7部分-MQTT中文站

在给定的情况下,我们有两个不同的组,每个组都包含两个在其共享订阅组中的订阅客户端。尽管这些组订阅相同的主题,但它们通过唯一的组标识符来区分。当发布者发出与特定主题相符的消息时,每个组中将选择一个客户端,仅选择一个客户端来接收消息。

MQTT 共享订阅使用案例

共享订阅有多种应用,特别是在高可扩展性的场景下。这些包括:

  • 无法处理订阅主题负载的 MQTT 客户端的客户端负载均衡。
  • 引入 MQTT 流的工作(后端)应用程序必须水平扩展。
  • 优化传入发布的订阅者节点位置,以减少 HiveMQ 群集内节点流量。
  • 传递语义使用 QoS 1 和 2,尽管没有必要对有序主题进行保证。
  • 解决由于消息速率较高而导致的可扩展性瓶颈的热门话题

如何使用MQTT进行共享订阅?

让您的客户端使用共享订阅是一个简单的过程。以下是使用MQTT CLI完成此操作的示例。给定的命令行执行代码允许两个MQTT客户端订阅相同的订阅组和主题:

执行了这些命令后,两个MQTT客户端现在都共享对“my-share-topic”(属于虚拟组“group1”的一部分)的订阅。在这种配置下,每个客户端分配了MQTT经纪上发布到主题“my-share-topic”的消息的一半。

mqtt sub -h broker.hivemq.com -t '$share/group1/my-share-topic' -i client1 -q 1

mqtt sub -h broker.hivemq.com -t '$share/group1/my-share-topic' -i client2 -q 1

请记住,MQTT客户端可以随时加入或离开订阅组。例如,如果第三个客户端决定加入该组,那么相关MQTT消息的分发将平均分配给所有三个客户端,每个客户端都将收到总量的三分之一。

使用共享订阅扩展MQTT订阅者

共享订阅为将后端系统与MQTT集成提供了一种简单的方法,特别是当无法使用HiveMQ的扩展系统或需要动态扩展时。使用共享订阅,您可以根据需要快速添加订阅者,以推送方式分发工作。

共享订阅对于扩展和负载平衡MQTT客户端非常有价值。此外,HiveMQ集群通过优化消息路由的内部优化,提供了额外的延迟和可扩展性优势。

结论

共享订阅提供了一种通过标准MQTT机制在各种MQTT订阅者之间分发消息的引人注目的方法。这个功能简化了实现MQTT客户端负载平衡的过程,无需对您的MQTT客户端进行任何专有的修改。这对于后端系统或可能迅速超出单个MQTT客户端的“热门主题”特别有益。

打赏赞微海报分享
mqtt

什么是 MQTT 用户属性?– MQTT 5要点第6部分

MQTT 有效负载格式描述和内容类型 – MQTT 5要点第8部分

猜你喜欢

改善基础设施:HiveMQ如何推动智能城市发展

改善基础设施:HiveMQ如何推动智能城市发展

08/07
2024
为什么企业选择全托管HiveMQ云进行MQTT部署

为什么企业选择全托管HiveMQ云进行MQTT部署

07/01
2024
MQTT 赋能工业 PLC 数据采集与应用

MQTT 赋能工业 PLC 数据采集与应用

06/30
2024
  • 解决方案
    • 智能家居
    • 汽车与出行
    • 工业制造
    • 能源电力
    • 石油石化
    • 交通物流
    • 零售
  • 学习
    • MQTT 规范
    • MQTT 教程
    • MQTT 软件
    • MQTT 客户端库
    • MQTT 服务器
    • 工具和应用程序
  • 关于我们
    • 了解创科慧仁
    • 加入创科慧仁
    • 投资者关系
    • 新闻动态
    • 合作伙伴
    • 联系我们
  • 友情链接
    • Modbus中文网
    • 跳动符号官网
    • 物联网世界
    • RFID世界网
    • 深圳物联网协会
    • isoftstone软通动力
    • 中国发展战略学研究会
    • B.P商业伙伴
  • 在线客服
  • 全国客户服务热线
    4006909885
  • 官方公众号
  • 联系邮箱
    contact@mqtt.cn
Copyright © 2025 MQTT中文站. All rights reserved.Designed by nicetheme. 京ICP备20029519号
在线客服

微信咨询

微信咨询

4006909885

服务热线 7*24小时

电话咨询
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册
 

正在加载评论...
 

您必须登录才能发表评论。

    string(5) "2.0.0"