• 全部
...

MQTT协议及其在物联网中的应用

xiaozhu12371237 2016-09-20 11:43:07
MQTT (Message Queuing Telemetry Transport,消息队列遥测传输) 是一种标准化的发布/订阅消息传输协议,设计于1999年,最初是为了在卫星之类的物体上使用。它是一个非常轻量级的协议,由于对带宽需求很低,从而成为了 M2M 通信或物联网应用的理想选择,现在已经成为这类场景最常见的协议之一。

本文会对该协议及一些使用范例做以简介,虽然没打算写成 MQTT 的综合性参考指南,但会提供足够的信息,让开发人员了解到如何安装运行这一协议。如果想要更深入地了解,可以参考 HiveMQ 所发布的系列文章。

发布/订阅

发布/订阅,通常也被成为 pub-sub 模式是 MQTT 的核心,除了基于同一个消息代理的发布者和订阅者之外,还有一些其它节点围绕着该消息代理呈星型拓扑分布。这个模型与标准的客户端/服务器迥然不同,一开始看似有些奇怪,但它提供的去耦能力在很多情况下都有巨大的优势。

客户端可以发布或订阅特定的主题(topic,有些类似信息主题),根据使用它们的消息代理来决定谁会收到信息。MQTT 的主题有特定的语法,使用斜杠(/)作为分隔符,整体呈层次结构,非常类似 URL 中的路径格式,因此厨房中的温度传感器也许会发布到类似“sensors/temperature/home/kitchen” 这样的主题。

我们看一个例子:想象一下有一个网络,将全世界的温度传感器连接起来,提供气象服务。所有这些传感器保持与某个消息代理中间件相连接,每隔10分钟报告一次当前的温度。他们基于自身位置按照下面的格式向特定主题发布信息:

那么在伦敦贝克街(Baker Street)的某个传感器就会向“sensors/temperature/uk/london/baker_street”发布一条包含当前温度的信息。


MQTT 示例拓扑
气象服务需要保证历史温度数据库的数据最新,因此创建了订阅到 MQTT主题的数据库服务,数据库服务会在收到最新温度信息时发出提示。不过这里存在一个问题:数据库服务需要了解到全世界所有的温度传感器,而将每个传感器订阅到独立的主题会非常复杂,幸好 MQTT 有相应的解决方案:通配符(wildcards)。

通配符
在 MQTT 中有两个可用的通配符,分别是+和#,+表示匹配单一层级中的任意主题,#表示匹配任意数量的层次。因此在全球温度数据库中可能会有订阅到 sensors/temperature/# 的服务,它能从全世界的任何一个传感器接收温度读数。但如果英国政府想要在自己的温度服务中利用这些数据,只要订阅到 sensors/temperature/uk/# ,就可以限制范围,只接受英国的传感器读数。如果某个服务想要接收某个特定位置所有类型的传感器数据,可以使用类似这样的格式:

sensors/+/uk/london/bakerstreet_

正如你所见,这是一个极优秀的模块化系统,添加新的传感器与数据库只是小事一桩。而且该系统在性能方面也很优秀,MQTT 消息代理可以高度并行化并采用事件驱动,从而使得单个消息代理可以轻易扩展到每秒处理数万条信息的级别。



...全文
给本帖投票
1894 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文详细介绍了MQTT(Message Queuing Telemetry Transport)协议的基本概念、工作原理、特点和广泛的应用场景。文章首先阐述了MQTT协议的历史背景和发展历程,解释了为什么它能适用于物联网通信;接着详细描述了MQTT协议的工作流程,涉及发布者、订阅者和代理服务器的角色和职责,尤其是QoS机制对不同类型消息传递的保障;随后讨论了其显著特性如轻量级设计、发布/订阅模式、低功耗及适应不稳定网络的能力;并对MQTT协议应用进行了详细探讨,覆盖了智能家居、智能交通、工业制造等多个领域。最后对MQTT的优点和局限性做了客观评价,并预测了未来发展的趋势。 适合人群:从事物联网技术研究或开发的技术人员,尤其适合对物联网架构有一定基础,想深入了解MQTT协议工作机制的工程师和技术爱好者。 使用场景及目标:帮助企业研发人员和相关从业人员更好地理解和运用MQTT协议,优化现有产品和服务。同时也适用于高等院校学生及研究机构学者作为参考文献使用。 阅读建议:对于有兴趣深入了解物联网核心技术的人来说,《解析MQTT协议:实现物联网通信的核心技术及其广泛应用》提供了一份全面且权威的学习指南。通过实例分析可以帮助读者更容易掌握抽象概念,并启发更多创新思路应用于未来的实践

2,854

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部