MQTT 协议服务端选型

2022-12-08 23:52:39 +08:00
 unt

服务器:centos

看的比较多的是 mosquitto 和 emqx, 现在用三行命令已经将 emqx 部署好了,可用。

V 友们能用大白话结合实际讲一下两者区别吗,选用哪个比较好,还有什么其他好用的服务端推荐吗。

3773 次点击
所在节点    程序员
20 条回复
sdk234
2022-12-09 00:50:19 +08:00
反正我一直在用蚊子。
icepie
2022-12-09 00:58:12 +08:00
https://github.com/DrmagicE/gmqtt 试试这个, 方便二次开发
unt
2022-12-09 01:01:31 +08:00
@icepie 谢谢推荐!我去看下。但是选择太多也不是好事儿,太杂了……
pigspy
2022-12-09 07:38:06 +08:00
emqx 绝对够用了
CyJaySong
2022-12-09 08:55:54 +08:00
emqx 绝对够用
wenqiang1208
2022-12-09 09:25:38 +08:00
emqx 绝对够用,两个 1 核 1G 的内网服务器 部署 emqx ,再来个带宽高一些的服务器 1 核 2G 服务器 部署个 harpoxy 做负载,妥妥的
unt
2022-12-09 09:47:32 +08:00
@pigspy #4
@CyJaySong #5
@wenqiang1208 #6 谢谢,还有请问,mqtt 和传统 16 进制字节流区别是什么,优势不用多说,mqtt 够简单!
然而 16 进制字节流的优势是什么呢,如果没有优势的话,那不是应该被秒杀灭绝了嘛。或者说各自的应用场景是什么
leeyuzhe
2022-12-09 09:48:34 +08:00
@sdk234 蚊子是什么?
unt
2022-12-09 09:50:48 +08:00
@leeyuzhe #8 mosquitto 翻译过来就是蚊子,图标 logo 也是蚊子
retanoj
2022-12-09 10:04:48 +08:00
比较想问 OP 会把 MQTT 协议应用在什么场景下
unt
2022-12-09 10:12:56 +08:00
@retanoj #10 物联网呀,类似于共享单车这种(我不知道共享单车用的哪种通讯技术,只是作类比,应用场景还是挺像的)
l0wkey
2022-12-09 10:20:38 +08:00
搞清楚你的使用方式、场景、预期用量之类。
比如是连接密集型还是消息密集型,emq 这种在单机情况下,比较适合消息连接密集,高消息吞吐会不太行,集群的商业版本成本是不是能承担;鉴权方式选择。当然还有个公有云 /self-hosted 部署的选择,有可能公有云的公共集群会划算很多,不过如果选公有云的话,要注意接入点最好加一层自己域名做 cname 。
unt
2022-12-09 10:24:54 +08:00
@l0wkey #12 设备不多,目前按 2W 台算吧,心跳消息 30 秒一次,其他消息不多,这种算什么,我也不太懂😅 。16 进制字节流的优势是什么
CyJaySong
2022-12-09 10:51:12 +08:00
@unt 底层都是字节流,MQTT 是应用层封装, 质量保证,易用性等等啥的都比传统的高啊
acmookey
2022-12-09 15:20:53 +08:00
@unt 20000 设备,30 秒收发一次心跳,收发消息的 QPS = (20000/30) * 2 = 1333, 机器配置不要太差,这个应该轻轻松松都能达到。EMQ 有它自己的压测工具,可以在自己的服务器上搞下压测就晓得了
cnuser002
2022-12-09 16:01:57 +08:00
Eclipse 的 MQTT Client 实现还可以,Broker 端好像性能不太好。
建议直接就 emqx 。

至于你说的 mqtt 和 16 进制字节流的区别。我感觉你误解了 MQTT 。
MQTT 本身就是一种建立在 TCP 上的字节协议。
它帮助你建立并维护 Client - Broker 之间的连接, 使用基于 Topic 的 推送 /订阅机制,间接实现 Client 与 另一个的 Client 的数据传输。

比如你的场景,用 MQTT 来实现。就是服务器订阅某个 Topic ,20000 个设备往这个 Topic 上推送,利用 Broker 来实现服务器监听 20000 个设备上报的数据。

如果你不用 MQTT ,那就要换个方式去接。

比如你可以开一个 HTTP Server ,让 20000 个设备发送 Post 请求来上报数据。

或者开一个 TCP Socket Server ,让 20000 个设备以 Tcp Client 的形式连到你的 Server 上,然后用自己设计个协议去接。

你说的可能就是这种自己编协议的吧。
killeder
2022-12-09 16:52:27 +08:00
@pigspy emqx 二次开发好弄吗
Eds1995
2022-12-09 18:46:51 +08:00
直接选 emqx 好了,啥都不用折腾,买一个 clb 加两台 ecs ,部署上去就完事。
iloveyou
2022-12-09 18:56:34 +08:00
我们用的阿里云的
likeunix
2022-12-10 09:50:47 +08:00

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

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

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

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

© 2021 V2EX