OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4072|回复: 11

mqtt协议在物联网中的应用疑问。

[复制链接]

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-11-26 09:44:22 | 显示全部楼层 |阅读模式
50金钱
一直不理解为什么要选择mqtt协议作为物联网应用的首选。我的疑问是工业或者其他的设备。可能一天也就需要采集一次上报一次。这样的场景我认为mqtt的长连接不适合,tcp是首选,甚至http都比mqtt强。 在兼顾低功耗的设备中是不是为了省电都不能采用mqtt。那物联网的终端设备很多是要低功耗的。为啥网上还这么吹嘘mqtt在物联网中的应用。另外请兄弟们回答问题之后,简单描述一下你们常用的协议。我猜测还是tcp多。

最佳答案

查看完整内容[请看2#楼]

你这种情况确实,直接tcp我想会更轻便 顺便说一下我上家公司的使用场景,属于共享扫码设备。。。所以对实时性是有要求的。。如果用TCP不可避免的需要长连接。。。后端服务器的模式是一台入口服务器加N台业务服务器。。。。。设备通过入口服务器分配实际的业务服务器,避免某台业务服务器负载过高,然后与业务服务器保持长连接 后来换了MQTT,原有的那些服务器,一台broker服务器+一台处理对应业务逻辑MQTT客户端服务器(扫码页 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-10-10
在线时间
131 小时
发表于 2020-11-26 09:44:23 | 显示全部楼层
本帖最后由 YukawaManabu 于 2020-11-26 10:18 编辑
thisisdemo 发表于 2020-11-26 09:53
嗯呢,感谢您的回答。这个我有想过。但好多设备不需要长连接。我的描述可能不是很清楚。比如有个传感器一 ...

你这种情况确实,直接tcp我想会更轻便
顺便说一下我上家公司的使用场景,属于共享扫码设备。。。所以对实时性是有要求的。。如果用TCP不可避免的需要长连接。。。后端服务器的模式是一台入口服务器加N台业务服务器。。。。。设备通过入口服务器分配实际的业务服务器,避免某台业务服务器负载过高,然后与业务服务器保持长连接
后来换了MQTT,原有的那些服务器,一台broker服务器+一台处理对应业务逻辑MQTT客户端服务器(扫码页面的前端服务器)就够取代了
回复

使用道具 举报

0

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-10-10
在线时间
131 小时
发表于 2020-11-26 09:47:51 | 显示全部楼层
为了并发数。。。。。同样百万级的在线数。。你看看直接用TCP长连接和MQTT的性能开销对比,用这个可不是为了考虑你的设备,而是为服务器着想

至于为什么这么说。因为上家公司做过性能开销的比对
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
 楼主| 发表于 2020-11-26 09:53:16 | 显示全部楼层
本帖最后由 thisisdemo 于 2020-11-26 10:00 编辑
YukawaManabu 发表于 2020-11-26 09:47
为了并发数。。。。。同样百万级的在线数。。你看看直接用TCP长连接和MQTT的性能开销对比,用这个可不是为 ...

嗯呢,感谢您的回答。这个我有想过。但好多设备不需要长连接。我的描述可能不是很清楚。比如有个传感器一天一次上报数据。这样的应用场景是不是tcp一个报文就可以了,上报完成就断掉。这样的话就算一共有百万台或者大点说有千万台设备,只要处理好定时上报时间,不在同一时间上报,可以简单的控制一下并发。补充:或者换一句话说,在我现在接触过的物联网应用中大部分都是低功耗的。那mqtt这种长连接有什么样的应用场景呢。目前我只看到过一个,类似售货机、抓娃娃机这种长时间有电源供电的设备。
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
 楼主| 发表于 2020-11-26 10:24:10 | 显示全部楼层
YukawaManabu 发表于 2020-11-26 09:59
你这种情况确实,直接tcp我想会更轻便
顺便说一下我上家公司的使用场景,属于共享扫码设备。。。所以对 ...

嗯嗯 了然了。一会发个投票帖子,看看大家做的设备对功耗要求都高不高。了解了解行情
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2020-11-26 10:28:15 | 显示全部楼层
tcp属于底层的网络传输协议,mqtt是网络应用协议,mqtt是基于tcp之上的哈。
然后选择什么协议也是根据场景综合考虑的,mqtt基于的tcp虽然长连接,但是设备可以主动断开呀,就算不断开,在keepalive之后服务器也会默认设备断开;mqtt你可以百度看看,主要应用场景就是那些需要一定实时性,信号不稳定的地方,因为mqtt有qos等级,还有一些flag来保证消息收发的可靠性。
你说的http也是基于tcp,http报文挺大的,还要考虑流量是否够用,内存是不是够用等问题
回复

使用道具 举报

0

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-10-10
在线时间
131 小时
发表于 2020-11-26 10:31:26 | 显示全部楼层
Cindre鞡 发表于 2020-11-26 10:28
tcp属于底层的网络传输协议,mqtt是网络应用协议,mqtt是基于tcp之上的哈。
然后选择什么协议也是根据场景 ...

是的,HTTP光head里的一堆冗余信息都不知道浪费了多少开销
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
 楼主| 发表于 2020-11-26 10:38:24 | 显示全部楼层
Cindre鞡 发表于 2020-11-26 10:28
tcp属于底层的网络传输协议,mqtt是网络应用协议,mqtt是基于tcp之上的哈。
然后选择什么协议也是根据场景 ...

嗯呢。暂时我接触的项目中多款设备只用了两个协议。一个是tcp传输加密json、另一个就是mqtt传输加密json。都是低功耗应用场景。mqtt的就像您说的每次用完就断开。所以我很疑惑既然这样为什么还用mqtt   至于http,当然不是物联网首选协议,甚至我认为合格的物联网设备就不应该选http。  http呢我也仅仅在大学的时候用过,但其实是tcp传输特定格式那么用的,比如“GET /index.html HTTP/1.1“。
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2020-11-26 10:42:36 | 显示全部楼层
thisisdemo 发表于 2020-11-26 10:38
嗯呢。暂时我接触的项目中多款设备只用了两个协议。一个是tcp传输加密json、另一个就是mqtt传输加密json ...

mqtt每次用完断开,那为什么还要用mqtt,很简单,结合起来看,又要保证在线时一定的实时性,又要保证在线时收发的可靠性,且要低功耗,这不就是个应用场景嘛。
没有最好的协议,只有当下最适合的协议,物联网还在发展,从0到1很慢,从0.5到1就轻松很多,mqtt最初也不是位物联网而生,只是它能够满足大多数场景,期待以后有一个物联网的专属协议
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
 楼主| 发表于 2020-11-26 10:44:30 | 显示全部楼层
Cindre鞡 发表于 2020-11-26 10:42
mqtt每次用完断开,那为什么还要用mqtt,很简单,结合起来看,又要保证在线时一定的实时性,又要保证在线 ...

有道理
回复

使用道具 举报

13

主题

272

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5390
金钱
5390
注册时间
2017-8-14
在线时间
249 小时
发表于 2020-11-26 11:49:27 | 显示全部楼层
本帖最后由 zml13917492379 于 2020-11-26 15:17 编辑

工业自动化 行业 建议 用  网线连接  UDP 包双向确认 的 连接方法,可靠简单
接入互联网的几种方式:
对已经有现成互联网的用户:
  通过网线 直接 接入 互联网的路由器;
  通过网线和WiFi中继器连接,中继器通过WiFi连接互联网路由器;
  通过网线连接无线网桥(AP),再接入互联网路由器;
对没有现成互联网的用户:
  通过网线 和 4G路由器(内插4或5G流量卡,并有一个网口) 连接,
  接入互联网;
交大科创中心推出通过互联网和云服务器实时交换数据的功能的
STM32F10x开发板源程序;开发板套件只需修改几个配置文件的参数,
就可以实现开发板DI、DO、AI、AO和云服务器上的txt文件双向实时交换数据,
大大简化IOT开发,契合当下最流行的“物联网”、“云计算”概念;详细见链接:
http://www.openedv.com/forum.php ... 94206&fromuid=85751


详细资料扣扣群204408503自行下载
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
 楼主| 发表于 2020-11-27 11:34:22 | 显示全部楼层
zml13917492379 发表于 2020-11-26 11:49
工业自动化 行业 建议 用  网线连接  UDP 包双向确认 的 连接方法,可靠简单
接入互联网的几种方式:
对 ...

感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 04:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表