目前的物联网 IoT 通信协议并么有统一的标准,在这些协议中,MQTT 协议(消息队列遥测传输协议)是目前应用最广泛的协议之一。
可以说,MQTT 协议之于物联网,相当于 HTTP 之于互联网。
HTTP 协议是一个无状态的协议,每个 HTTP 请求为 TCP 短连接,每次请求都需要重新创建一个 TCP 连接(可以通过 keep-alive 属性来优化 TCP 连接的使用,多个 HTTP 请求可以共享该 TCP 连接);而 MQTT 协议为长连接协议,每个客户端都会保持一个长连接。
MQTT 被设计为一种极其轻量级的发布/订阅消息传输,非常适合连接远程设备,具有较小的代码占用空间并使用最少的网络带宽。
MQTT 的全称为 Message Queue Telemetry Transport,是在 1999 年,由 IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 为了一个通过卫星网络连接输油管道的项目开发的。
MQTT 协议有以下特性:
- 基于 TCP 的应用层协议
- 采用 C/S 架构
- 使用订阅/发布模式,将消息的发送方和接收方解耦
- 提供三种消息的 QoS(Quality of Service,服务质量):至多一次,最少一次,只有一次
- 收发消息是异步的,发送方不需要等待接收方应答
图 - MQTT 发布、订阅架构
MQTT 的版本
MQTT 协议目前有两个常用版本:3.1.1 和 5.0。
需要注意的是,MQTT 3.1.1 和 5.0 并不兼容,5.0 在 3.1.1 的基础之上引入很多新特性,并在协议包内容作了扩展。
目前还有大量的系统在使用 MQTT 3.1.1,新项目可以使用 5.0 协议。
MQTT Broker: EMQX
比较好用的开源 MQTT Broker,这里推荐 EMQX.
MQTTX 是一款开源的跨平台 MQTT 客户端工具,100% 支持 MQTT 3.1、3.1.1 和 5.0 协议,它支持 macOS、Linux 并且支持自定义脚本模拟测试、MQTT 消息格式转换、日志记录等多个功能。
EMQX 已推出全托管的 Cloud 服务,帮助用户轻松开启 MQTT 服务,你可以将物联网设备轻松连接到任何云,无需关心基础设施的维护。EMQX Serverless 是一个安全可伸缩的云服务。特别适用于个人开发者,中小型项目,开发测试环境以及技术框架的评估。EMQX 专有版是独立部署的全托管 MQTT 服务,具有更高的性能保障和可定制能力。适用各种类型业务,是企业来实现关键业务应用的理想选择,尤其适用于对性能、稳定性要求较高的企业级项目。
时序数据库
MQTT 负责数据链路的流转、传输,而数据的存储与管理则需要时序数据库。两者通常结合使用,在物联网、车联网、工业监控等场景下,形成完整的数据处理流程。
我们可以将 EMQX 管理的数据同步写入到时序数据库中,比如 KaiwuDB (KWDB)。KaiwuDB RESTful API 提供了 Insert 接口,该接口通过发送包含 INSERT 语句的 HTTP 请求,将来自 EMQX 的数据插入 KaiwuDB 数据库的表中。时序数据汇聚到 KWDB 数据库后,我们可以进行存储、管理、计算、分析,服务上层的业务系统。
KaiwuDB 是一款面向 AIoT 场景的分布式、多模融合、支持原生 AI 的数据库产品。面向工业物联网、数字能源、车联网、智慧产业等领域,KaiwuDB 提供一站式数据存储、管理与分析的基座。
好书推荐
《物联网系统开发:从0到1构建IOT平台 第2版》 付强 傅静涛 著
本书是一部从技术原理、工程实践、设计模式和最佳实践等多个维度详细讲解物联网系统和产品开发的著作。它涵盖物联网应用开发80%的场景,能指导读者零基础的读者从0到1构建一个功能齐备的物联网平台,并附有代码和解释。本书既有作者在物联网行业多年实操经验的总结,也结合了作者在高校的多年教学实践经验,是一本既适合高校学生、物联网初学者,也适合有经验的物联网开发者和架构师阅读的佳作。 本书第1版是物联网系统开发领域的畅销书,几乎零差评。第2版新增了全面解析MQTT 5.0协议特性的内容,同时,为了适配EMQX最新版本,对书中的相关代码和配置均进行了更新。
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。
如果这篇文章为你带来了灵感或启发,请帮忙『三连』吧,感谢!ღ( ´・ᴗ・` )~