求问 MQTT 和 TCP 透传优劣

2023-06-02 10:57:31 +08:00
 unt
目前本公司物联网平台对接了 10 多家设备,有些是采用 16 进制字节码 TCP 透传,有些是 MQTT 对接(已语义化解析)。MQTT 的优势自然不用多说,那请问它的劣势是什么,传统 TCP 透传的优势又是什么。


另外请问,采用 MQTT 的话,是不是数据解析就直接做进设备里去了,而不会说是传输的实际上还是字节码,另外服务端再加一层数据解析层。
4110 次点击
所在节点    程序员
37 条回复
koloonps
2023-06-02 10:59:53 +08:00
设备不一定支持 MQTT
"采用 MQTT 的话,是不是数据解析就直接做进设备里去了,而不会说是传输的实际上还是字节码,另外服务端再加一层数据解析层" 这个和 mqtt 没有关系吧?
unt
2023-06-02 11:02:42 +08:00
@koloonps #1 我知道,MQTT 只是一种应用层协议,实际传输的东西它是不管的。

我是想问一般公司对接物联网设备是怎么对接的,采用怎样的开发对接模式
flyqie
2023-06-02 11:12:37 +08:00
非相关行业人员哈。

自己在用的物联网设备好像基本都是 mqtt ,tcp 比较少。

蹲个大佬。
flyqie
2023-06-02 11:14:23 +08:00
@flyqie #3

tcp 指的是像楼主描述那样的直接基于裸 tcp
koloonps
2023-06-02 11:15:39 +08:00
@unt 看什么行业吧,收款语音播报这一些基本都是 mqtt.复杂一点的大多都是 hex.你可以参考下 JT808/JT809
lopssh
2023-06-02 11:17:14 +08:00
这里的"透传"怎么理解?
koloonps
2023-06-02 11:20:42 +08:00
@lopssh 应该是 DTU,将串口数据打包发送到服务器
unt
2023-06-02 11:27:07 +08:00
@lopssh #6 不做任何解析,直接通过 TCP 给设备发规定好的字节码,设备返回的也是字节码
Baloneo
2023-06-02 11:32:45 +08:00
设备协议有很多 Modbus IEC DLT ,什么电表水表这些基本不支持 MQTT 的 就需要网关转发成 MQTT 报文或者自己写程序解析 一般都是通过网关转发 MQTT 由网关解析成设备需要的协议 设备本身支持 MQTT 的另说 设备直接实现 TCP 直连 /透传会比设备里写 MQTT 代码容易
duke807
2023-06-02 11:33:55 +08:00
mqtt 用不了 cloudflare 之类的免费 cdn
gam2046
2023-06-02 11:35:49 +08:00
MQTT 主要是帮你做了很多可靠性的工作,比如确保消息送达,确保消息有且仅有收到一次,设备暂离时消息会在设备连线时重发、消息的广播等。在满足这些的情况下,同时 MQTT 对于带宽要求也很小(协议开销小)

如果你的环境下,本身网络条件是没有可靠性问题,那我觉得 TCP 直接上也可以。
mlhorizon
2023-06-02 11:36:32 +08:00
TCP 透传的优势是现场设备简单,便宜,少配置。
这些就是 MQTT 的劣势。
flyqie
2023-06-02 11:37:17 +08:00
@duke807 #10

裸 tcp 也用不了吧。。

cf 好像只支持 websocket 和 http 及其 tls 方式?
cloudzhou
2023-06-02 11:38:59 +08:00
mqtt 主要是标准化,换个服务商继续还可以用
duke807
2023-06-02 11:39:59 +08:00
@flyqie 是的,所以目前很多项目用 http / https
flyqie
2023-06-02 11:41:16 +08:00
@duke807 #15

那长链接用啥? websocket ?

倒是见过有厂商这么玩的,不过他们没用 cdn 。。
masterclock
2023-06-02 11:42:09 +08:00
使用所谓 tcp 透传的,通常最终都会发明一套 mqtt

mqtt 上的数据,常见 json ,自定义文本格式,也有玩点 cbor 啥的,但二进制也不少见
opengps
2023-06-02 11:42:53 +08:00
tcp 是自定义规则,就好比底层语言一样很基础
mqtt 没怎么实际使用过,个人感觉只是规范了通信规则,通用的场景
bfdh
2023-06-02 11:49:32 +08:00
MQTT 更耗资源,在服务端尤其明显,带机量、性能显著低于 tcp 。
byte10
2023-06-02 11:49:54 +08:00
@lopssh MQTT 是一个中间件,业务系统会去订阅这些消息的。如果透传,那就 IOT 设备直接推送消息到业务系统中了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/945166

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX