设备量级:一套服务 20W 左右; 通信方式:4G(优先,主要,占比为 90%),lora,zigbee,485 ;需要共用一套协议格式。
请问用 mqtt json 好还是 TCP 字节流。
1
ttyUSB0 2023-12-22 19:04:06 +08:00
对数据实时性有要求的话建议字节流
|
2
coderxy 2023-12-22 19:09:07 +08:00
想求快就 mqtt ,有一定自研能力且后期有定制化改造可能就用 tcp 自己撸
|
3
Takizawa 2023-12-22 19:11:56 +08:00 via Android
首选 mqtt ,tcp 后期升级麻烦
|
4
retanoj 2023-12-22 19:38:48 +08:00
mqtt + emqx + 插件
|
5
cwxiaos 2023-12-22 20:40:41 +08:00 via iPhone
Mqtt 最方便,接入简单,tcp 还是有一定要求的。
|
6
gongquanlin 2023-12-22 20:42:27 +08:00
mqtt + emqx
tcp 得处理各种乱七八糟的问题 |
8
unt OP |
9
ShuWei 2023-12-23 11:25:25 +08:00
mqtt 就是一个定义在 tcp 字节流之上的协议,已经处理好基础定义了,并且开放性很好,如果是一条一条的消息数据类的,推荐使用 mqtt ,其 QoS 机制很可靠,如果是其他特定的比如视频流之类,就建议还是走 tcp 或者 udp 通信了
|
10
joyanhui 2023-12-23 12:35:55 +08:00 1
我们是从 mqtt 换到私有协议的 ,目前是优先 udp 其次 tcp
现在也兼容 http(GET POST) 以及 ws 。其实就是 tcp 简单弄了一下。 mqtt 优点就是拿来就用,上线快,尤其是 emqx 简单易用,而且也有云厂商提供 mqtt. 我们更换的原因是,设备数量多了以后 连接数和 qps 多了以后 mqtt 协议太重 服务器性能和带宽开支太大,集群管理也复杂。 私有协议 一开始完全抄的 coap ,略微改了一下 , 后来就慢慢升级替换掉了。 私有协议更轻量 速度和性能 以及定时化肯定是更好的。后期也省心很多。 |
12
joyanhui 2023-12-23 15:03:16 +08:00 1
@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 的集群实现对比起来就太啰嗦。 私有协议 肯定是最灵活的,性能和速度也肯定是最好的。还是那句话: 必要性和能力 |
13
ShuWei 2023-12-23 18:55:20 +08:00
@unt 纯 tcp 字节流肯定是不行的,要在上面定义应用层协议,mqtt 就是这样的应用层协议,你既然都问出了这个问题,建议就 mqtt 吧,自己定义私有协议,技术能力过硬还可以,技术不到家会适得其反的
|
14
totoro52 2023-12-23 20:39:54 +08:00
看场景啊,什么都不说无脑推 mqtt
|