V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
unt
V2EX  ›  程序员

MQTT 协议服务端选型

  •  
  •   unt · 2022-12-08 23:52:39 +08:00 · 3694 次点击
    这是一个创建于 710 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器:centos

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

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

    20 条回复    2022-12-10 09:50:47 +08:00
    sdk234
        1
    sdk234  
       2022-12-09 00:50:19 +08:00 via Android
    反正我一直在用蚊子。
    icepie
        2
    icepie  
       2022-12-09 00:58:12 +08:00
    https://github.com/DrmagicE/gmqtt 试试这个, 方便二次开发
    unt
        3
    unt  
    OP
       2022-12-09 01:01:31 +08:00 via iPhone
    @icepie 谢谢推荐!我去看下。但是选择太多也不是好事儿,太杂了……
    pigspy
        4
    pigspy  
       2022-12-09 07:38:06 +08:00   ❤️ 1
    emqx 绝对够用了
    CyJaySong
        5
    CyJaySong  
       2022-12-09 08:55:54 +08:00   ❤️ 1
    emqx 绝对够用
    wenqiang1208
        6
    wenqiang1208  
       2022-12-09 09:25:38 +08:00   ❤️ 1
    emqx 绝对够用,两个 1 核 1G 的内网服务器 部署 emqx ,再来个带宽高一些的服务器 1 核 2G 服务器 部署个 harpoxy 做负载,妥妥的
    unt
        7
    unt  
    OP
       2022-12-09 09:47:32 +08:00
    @pigspy #4
    @CyJaySong #5
    @wenqiang1208 #6 谢谢,还有请问,mqtt 和传统 16 进制字节流区别是什么,优势不用多说,mqtt 够简单!
    然而 16 进制字节流的优势是什么呢,如果没有优势的话,那不是应该被秒杀灭绝了嘛。或者说各自的应用场景是什么
    leeyuzhe
        8
    leeyuzhe  
       2022-12-09 09:48:34 +08:00
    @sdk234 蚊子是什么?
    unt
        9
    unt  
    OP
       2022-12-09 09:50:48 +08:00   ❤️ 1
    @leeyuzhe #8 mosquitto 翻译过来就是蚊子,图标 logo 也是蚊子
    retanoj
        10
    retanoj  
       2022-12-09 10:04:48 +08:00
    比较想问 OP 会把 MQTT 协议应用在什么场景下
    unt
        11
    unt  
    OP
       2022-12-09 10:12:56 +08:00
    @retanoj #10 物联网呀,类似于共享单车这种(我不知道共享单车用的哪种通讯技术,只是作类比,应用场景还是挺像的)
    l0wkey
        12
    l0wkey  
       2022-12-09 10:20:38 +08:00
    搞清楚你的使用方式、场景、预期用量之类。
    比如是连接密集型还是消息密集型,emq 这种在单机情况下,比较适合消息连接密集,高消息吞吐会不太行,集群的商业版本成本是不是能承担;鉴权方式选择。当然还有个公有云 /self-hosted 部署的选择,有可能公有云的公共集群会划算很多,不过如果选公有云的话,要注意接入点最好加一层自己域名做 cname 。
    unt
        13
    unt  
    OP
       2022-12-09 10:24:54 +08:00
    @l0wkey #12 设备不多,目前按 2W 台算吧,心跳消息 30 秒一次,其他消息不多,这种算什么,我也不太懂😅 。16 进制字节流的优势是什么
    CyJaySong
        14
    CyJaySong  
       2022-12-09 10:51:12 +08:00
    @unt 底层都是字节流,MQTT 是应用层封装, 质量保证,易用性等等啥的都比传统的高啊
    acmookey
        15
    acmookey  
       2022-12-09 15:20:53 +08:00
    @unt 20000 设备,30 秒收发一次心跳,收发消息的 QPS = (20000/30) * 2 = 1333, 机器配置不要太差,这个应该轻轻松松都能达到。EMQ 有它自己的压测工具,可以在自己的服务器上搞下压测就晓得了
    cnuser002
        16
    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
        17
    killeder  
       2022-12-09 16:52:27 +08:00
    @pigspy emqx 二次开发好弄吗
    Eds1995
        18
    Eds1995  
       2022-12-09 18:46:51 +08:00 via iPhone
    直接选 emqx 好了,啥都不用折腾,买一个 clb 加两台 ecs ,部署上去就完事。
    iloveyou
        19
    iloveyou  
       2022-12-09 18:56:34 +08:00
    我们用的阿里云的
    likeunix
        20
    likeunix  
       2022-12-10 09:50:47 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:13 · PVG 00:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.