MQTT 与 HTTP 通信协议对比及项目应用场景选择
本文总结了 MQTT 与 HTTP 协议的区别、各自的适用场景,并结合项目案例说明了前后端通信选型理由。
==1. MQTT 通信与网络协议==
相关学习资料:
MQTT 示例代码(C):
1 | MQTTClient client; |
2.前后端交互(API)的使用
- 什么是API:
API(应用程序编程接口,Application Programming Interface)是一组定义不同软件组件之间如何相互通信和交互的规范和协议。API 充当了不同软件系统之间的桥梁,使它们能够无缝协作,而无需了解彼此的内部实现细节。
3.HTTP和MQTT的选择
要区分什么时候使用MQTT,什么时候使用HTTP,我们需要弄清楚两者的本质和适用情况:
MQTT是长连接的,本质上是发布/订阅(Pub/Sub)消息传输协议,专门设计用于低带宽、不稳定网络环境中的物联网(IoT)应用。它基于TCP/IP协议,支持高效的消息传递。
MQTT通过持久连接(保持连接)进行通信。客户端与消息代理建立长连接,在整个会话过程中保持连接,这样可以在连接断开时恢复并继续接收消息。
MQTT为了减少带宽消耗,MQTT的消息头非常小,适合低带宽、高延迟的网络环境。它支持消息的质量服务(QoS)级别,确保消息传递的可靠性。
HTTP是一种请求/响应(Request/Response)协议,主要用于Web通信,基于客户端-服务器模型。HTTP通常用于浏览器与服务器之间的数据交换。
HTTP每次请求都会建立一个新的连接(虽然现代HTTP(如HTTP/2)支持连接复用)。
HTTP的连接通常在请求完成后关闭。
HTTP的消息头较大,适合传输结构化的数据(如HTML、JSON等),但在低带宽环境下可能表现不佳。
在本次项目里面,采集前端和后端的数据传输使用HTTP而不是MQTT,因为我们需要对数据进行打包处理,即把一次(读一段时间的数据)打包发送到后端,这样处理,方便后续的数据处理与分类。处理的数据以JSON格式发送,更适合HTTP的方式。
同时具有更强的鲁棒性,可以自行控制采集的时间以及发送的时间,而且采用HTTP的请求/响应模式,后端可以给采集前端发送是否接受到数据的信息,即采集前端可以知道数据传输情况,以便数据丢失的情况下可以在采集前端进行再次发送。
同时因为MQTT只是发布/订阅模式,这样采集前端就只是发布数据,至于后端的订阅有没有出问题,采集前端不好直接判断出来。同时考虑到MQTT具有较强的实时性,在此处也并不需要,因为只需要保证数据采集回来就行,所以采用MQTT会增加网络处理的压力。
MQTT 与 HTTP 通信协议对比及项目应用场景选择
1.BP神经网络
2.Transformer基础
3.卷积神经网络(CNN)
4.YOLO原理
5.机器学习一些进阶知识
6.tensorRT基础操作
7.Cuda基础操作
8.机器学习基础知识总结