公司准备研发物联网设备,请教一下大家通信协议选型问题

322 天前
 unt

设备量级:一套服务 20W 左右; 通信方式:4G(优先,主要,占比为 90%),lora,zigbee,485 ;需要共用一套协议格式。

请问用 mqtt json 好还是 TCP 字节流。

1928 次点击
所在节点    程序员
15 条回复
ttyUSB0
322 天前
对数据实时性有要求的话建议字节流
coderxy
322 天前
想求快就 mqtt ,有一定自研能力且后期有定制化改造可能就用 tcp 自己撸
Takizawa
322 天前
首选 mqtt ,tcp 后期升级麻烦
retanoj
322 天前
mqtt + emqx + 插件
cwxiaos
322 天前
Mqtt 最方便,接入简单,tcp 还是有一定要求的。
gongquanlin
322 天前
mqtt + emqx
tcp 得处理各种乱七八糟的问题
unt
322 天前
@ttyUSB0 字节流很快吗,我司接入过很多类型的协议,感官上 MQTT 和 TCP 速度一样
unt
322 天前
@coderxy
@Takizawa
@retanoj
@cwxiaos
@gongquanlin TCP 优势是什么
ShuWei
321 天前
mqtt 就是一个定义在 tcp 字节流之上的协议,已经处理好基础定义了,并且开放性很好,如果是一条一条的消息数据类的,推荐使用 mqtt ,其 QoS 机制很可靠,如果是其他特定的比如视频流之类,就建议还是走 tcp 或者 udp 通信了
joyanhui
321 天前
我们是从 mqtt 换到私有协议的 ,目前是优先 udp 其次 tcp
现在也兼容 http(GET POST) 以及 ws 。其实就是 tcp 简单弄了一下。

mqtt 优点就是拿来就用,上线快,尤其是 emqx 简单易用,而且也有云厂商提供 mqtt.

我们更换的原因是,设备数量多了以后 连接数和 qps 多了以后 mqtt 协议太重 服务器性能和带宽开支太大,集群管理也复杂。

私有协议 一开始完全抄的 coap ,略微改了一下 , 后来就慢慢升级替换掉了。

私有协议更轻量 速度和性能 以及定时化肯定是更好的。后期也省心很多。
unt
321 天前
@ShuWei #9
@joyanhui #10 我们现在纠结的点在于,mqtt 肯定够用, 但是总隐约感觉 tcp 更好
joyanhui
321 天前
@unt mqtt 现成的轮子,产品上线快。也足够轻量 开放性也好。

也可以先 mqtt 上线,以后看情况是否要换。我们当时是 mqtt 和私有协议并存了一段时间。

我是建议一步到位直接私有协议的 但是要看你们的情况啦:是否要必要,是否有能力。

另外
1 、关于 json ,不是很建议,尤其是物联网设备还是 4G 终端为主。我们主要是 msgpack ,部分 protobuf 。
2 、如果私有协议 也没必要死磕 tcp, udp 做一下去重和重发不香吗?


私有协议简单说几个小优势
1 、本地处理:一些消息 在自己的 Server 上直接就处理了。mqtt 你要么二次开发现有的 broker 要么自己实现一个 mqtt broker ,否则只能转发给订阅端处理。
2 、灵活度,
2.1 加密通讯:mqtt 一般加密都是走 tls 的,私有协议可以直接设备出厂预设 key,然后直接 AES 加密就完了。tls 太重了我们终端硬件资源没那么富裕,总不能 AES over mqtt 。
2.2 集群的灵活:我们集群的实现很简陋但是非常可靠 ,一个节点负责一部分设备,记录每个终端设备由哪个节点负责。节点和节点也没有通讯开支,随便动态扩充收缩集群规模。现有的 mqtt broker 的集群实现对比起来就太啰嗦。

私有协议 肯定是最灵活的,性能和速度也肯定是最好的。还是那句话: 必要性和能力
ShuWei
321 天前
@unt 纯 tcp 字节流肯定是不行的,要在上面定义应用层协议,mqtt 就是这样的应用层协议,你既然都问出了这个问题,建议就 mqtt 吧,自己定义私有协议,技术能力过硬还可以,技术不到家会适得其反的
totoro52
321 天前
看场景啊,什么都不说无脑推 mqtt
unt
321 天前
@joyanhui 谢谢,回答得很详细

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

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

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

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

© 2021 V2EX