当前位置: 首页 > news >正文

记录http与mqtt的区别

HTTP是最流行和最广泛使用的协议。但在过去几年中,MQTT迅速获得了牵引力。当我们谈论物联网开发时,开发人员必须在它们之间做出选择。

设计和消息传递

MQTT以数据为中心,而HTTP是以文档为中心的。HTTP是用于客户端 – 服务器计算的请求 – 响应协议,并不总是针对移动设备进行优化。MQTT在这些术语中的主要优点是轻量级(MQTT将数据作为字节数组传输)和发布/订阅模型,这使其非常适合资源受限的设备并有助于节省电池。

此外,发布/订阅模型为客户提供了彼此独立的存在,增强了整个系统的可靠性。当一个客户端出现故障时,整个系统可以继续正常工作。

速度和交付

根据3G网络的测量结果,MQTT的吞吐量比HTTP快93倍。

此外,与HTTP相比,MQTT协议确保了高传输保证。有3个级别的服务质量:

– 最多一次:保证尽力交付。

– 至少一次:保证消息至少传送一次。但是消息也可以不止一次传递。

– 恰好一次:保证每个消息只被对方接收一次

MQTT还为用户提供Last will&Testament和Retained消息的选项。第一个意味着在客户端意外断开连接的情况下,所有订阅的客户端都将从代理获得消息。保留消息意味着新订阅的客户端将立即获得状态更新。

HTTP协议没有这些功能。

复杂性和消息大小

 MQTT具有相当短的规范。只有CONNECT,PUBLISH,SUBSCRIBE,UNSUBSCRIBE和DISCONNECT类型对开发人员很重要。而HTTP规范要长得多。

MQTT具有非常短的消息头,并且最小的包消息大小为2个字节。通过HTTP协议使用文本消息格式允许它组成冗长的标题和消息。它有助于消除麻烦,因为它可以被人类阅读,但同时它对于资源受限的设备是不必要的。

结论

MQTT协议易于使用。对于未来的解决方案,响应时间,吞吐量,更低的电池和带宽使用率是第一位的,这一点至关重要。在间歇性连接的情况下,它也是完美的。

HTTP是值得和可扩展的。但是当它被称为IoT开发时,MQTT更适合。

总结分析:

协议优点缺点
HTTP应用广泛,开发成本低1,服务端无法主动推送数据给client; 2,采用key-value格式,占用存储和计算资源高;
MQTT小型传输,资源开销小发布订阅模式,提供1对多消息发布,解除应用程序耦合

mqtt是为大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的一种协议。

HTTP是适合使用在性能好一些的终端上,相对以上一些比较重,对设备要求相对高一些。不适合M2M的场景。

mqtt是以数据为中心,数据量一般比较小;

http是以文本为中心,数据量一般比较大。

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

http://www.lryc.cn/news/147299.html

相关文章:

  • 导入excel数据给前端Echarts实现中国地图-类似热力图可视化
  • 【MySQL系列】MySQL复合查询的学习 _ 多表查询 | 自连接 | 子查询 | 合并查询
  • 微信小程序使用本地图片在真机预览不显示的问题解决
  • Texlive2023与Texstudio2023卸载与安装(详细全程)
  • 塞浦路斯公司注册 塞浦路斯公司开户 塞浦路斯公司年审
  • XSS盲打练习(简单认识反射型、存储型XSS和cookie欺骗)
  • Shell脚本:基础知识和使用指南
  • Resource Hacker下载
  • Kubernetes入门 十、HPA 自动扩/缩容
  • Django报错:SystemCheckError: System check identified some issues解决办法
  • JavaScript设计模式(一)——构造器模式、原型模式、类模式
  • python 读文件,跳过有问题的那行
  • Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421
  • Leetcode 最后一个单词的长度
  • css ,less和sass的区别[简洁易懂
  • 有了ChatGPT的帮助,开发者的生产力会提高10-100倍
  • win10+QT5.15+cryptopp562 完整配置开发
  • 多线程学习之多线程的案例
  • iTOP-RK3588开发板Android12 设置系统默认不休眠
  • java系统问题定位思路
  • redis jedis 单元测试 报错集锦 汇总 junit
  • AMEYA360:兆易创新获得ISO 26262 ASIL D流程认证, 汽车功能安全管理体系再上新台阶
  • MySQL binlog的几种日志录入格式以及区别
  • C# 案例题
  • 拒绝摆烂!C语言练习打卡第七天
  • 【动态规划】状态压缩dp
  • Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法
  • 胜券汇:行业持续轮动 缺乏主线下关注反转预期的方向
  • java+ssm+mysql农场信息管理系统
  • 【App出海成功案例】 | NetMarvel 帮助广告主ARPU增长45%,ECPM增长50%,付费率涨幅30%