想使用 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
认证与授权的区别
- 启用身份认证(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
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 聊聊, 查看更多联系方式