MQTT Broker 的开源实现 EMQX

文章目录

    想使用 EMQX 的根本原因是,蓝牙网关上报数据推荐使用 MQTT 协议。
    而这个消息量巨大,我担心扛不住腾讯云的费用。

    使用 MQTT 协议的优势

    • MQTT 协议自带了账号密码验证机制,以及主题订阅权限
    • 蓝牙网关默认支持 MQTT 协议
    • TCP 需要自己处理数据粘包问题,而 MQTT 则不需要
    • UDP 无法保证数据到达的顺序,对于时序数据来说,比较致命。而终端的时间戳我觉得不太可靠

    但是首先,我还是想把 EMQX 的文档过一遍。之前虽然在一个项目中用过 MQTT,
    可那是基于腾讯云 MQTT 实现的,担心很多概念并不清晰,还是需要看一遍文档。

    EMQX 5.0 的文档地址


    https://www.emqx.io/docs/zh/v5.0/

    左下角可以下拉切换文档版本。

    MQTT 支持 4 种传输协议

    • TCP
    • TLS
    • WebSocket
    • QUIC(实验性)

    可靠性

    • 过载保护
    • 消息速率限制。这个对我来说还是有价值的,因为很多蓝牙设备的上报数据频率过高,例如体征波形数据能达到 400 次/秒。需要限制频率
    • 连接速率限制

    硬件要求

    最小需 2 核 4G

    在线调试

    打开 Dashboard,进入 问题分析 -> WebSocket 客户端 页面中可以在浏览器中使用 MQTT over WebSokcet 客户端快速接入 EMQX。 WebSocket 客户端页面为您提供了一个简易但有效的 MQTT 测试工具,它包含了连接、订阅和发布功能,同时还能查看自己发送和接收的消息数据。

    Go SDK

    https://www.emqx.io/docs/zh/v5.0/development/go.html

    使用的代码示例:

    https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-Go

    go client 使用账号密码发布消息的示例

    认证与授权的区别

    • 启用身份认证(Authentication)能有效阻止非法客户端的连接。
    • 授权(Authorization)可以对客户端发布/订阅操作进行精细的权限控制。

    TODO

    • systemd 配置文件
    • 修改 dashboard 的登录密码
    • 设置系统及服务最大文件句柄数: https://www.emqx.io/docs/zh/v5.0/deploy/tune.html
    • 选择哪个版本
    • 企业版与开源版的区别
    • 生产环境运行时,对 CPU 内存,磁盘的占用情况

    下载并安装

    https://www.emqx.com/zh/try?product=broker

    wget https://www.emqx.com/zh/downloads/broker/5.0.0/emqx-5.0.0-otp24.2.1-1-ubuntu20.04-amd64.tar.gz

    如果遇到 1883 端口被占用的情况,排查方式参考

    Dashboard 管理后台

    浏览器访问:

    http://localhost:18083

    默认用户名是 admin,密码是 public

    https://www.emqx.io/docs/zh/v4.4/getting-started/dashboard.html

    如何将 Dashboard 切换为中文界面

    Dashboard 中,最后一个配置项,系统设置中切换即可。

    MQTT 相对 HTTP 的优势

    低带宽、低功耗。MQTT 在传输报文的大小上与 HTTP 相比有巨大的优势,因为 MQTT 协议在连接建立之后,由于避免了建立连接所需要的额外的资源消耗,发送实际数据的时候报文传输所需带宽与 HTTP 相比有很大的优势,参考网上有人做的测评 (opens new window),发送一样大小的数据,MQTT 比 HTTP 少近 50 倍的网络传输数据,而且速度快了将近 20 倍。在网上有人做的另外一个评测显示 (opens new window),接收消息的场景,MQTT 协议的耗电量为 HTTP 协议的百分之一,而发送数据的时候 MQTT 协议的耗电量为 HTTP 协议的十分之一;

    参考

    • EMQX 5.0 新功能介绍:https://www.emqx.com/zh/blog/emqx-v-5-0-preview

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式