开源 Linux 服务器与中间件(十)Mqtt协议和Emqx服务器安装测试

文章的目的记录所使用的的Linux服务器和中间件的配置和使用,防止时间太长忘记,进行重复工作。

相关链接:

开源 Linux 服务器与中间件(一)基本介绍

开源 Linux 服务器与中间件(二)嵌入式Linux服务器和中间件

开源 Linux 服务器与中间件(三)服务器--Nginx

开源 Linux 服务器与中间件(四)服务器--Tomcat

开源 Linux 服务器与中间件(五)服务器--Boa

开源 Linux 服务器与中间件(六)服务器--Lighttpd

开源 Linux 服务器与中间件(七)数据库--MySQL

开源 Linux 服务器与中间件(八)数据库--MariaDB

开源 Linux 服务器与中间件(九)数据库--SQLite3

开源 Linux 服务器与中间件(十)Mqtt协议和Emqx服务器安装测试

开源 Linux 服务器与中间件(十一)Emqx服务器消息的订阅和发送(mqtt测试)

推荐链接:

linux C 语言开发 (一) Window下用gcc编译和gdb调试

linux C 语言开发 (二) VsCode远程开发 linux

linux C 语言开发 (三) 建立云服务器

linux C 语言开发 (四) linux系统常用命令

linux C 语言开发 (五) linux系统目录结构

linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)

linux C 语言开发 (七) 文件 IO 和标准 IO

linux C 语言开发 (八) 进程基础

linux C 语言开发 (九) 进程间通讯--管道

linux C 语言开发 (十) 进程间通讯--信号

linux C 语言开发 (十一) 进程间通讯--共享内存

linux C 语言开发 (十二) 进程间通讯--消息队列

Linux C到Android App开发推荐链接(入门十二章):

开源 java android app 开发(一)开发环境的搭建_csdn 开源 java android app-CSDN博客

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

linux C到.net mvc开发推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

内容:Mqtt协议的功能和用途,Emqx服务器的功能和应用。

目录

1.Mqtt协议的功能和用途

2.Emqx服务器的功能和应用

3.Emqx服务器的安装,测试。

一、Mqtt协议的功能和用途

MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅模式的消息传输协议,专门为低带宽、高延迟或不稳定的网络环境设计。

📋 MQTT核心功能特性

1. 发布/订阅模式

  • 解耦通信:消息发布者和订阅者不需要知道彼此的存在

  • 一对多通信:单个发布者可以向多个订阅者广播消息

  • 主题过滤:通过主题层级结构实现灵活的消息路由

2. 三种服务质量等级

复制代码
# MQTT QoS级别
QoS_0 = 0  # 最多交付一次(可能丢失)
QoS_1 = 1  # 至少交付一次(可能重复)
QoS_2 = 2  # 恰好交付一次(最可靠)

3. 持久会话与离线消息

  • Clean Session:清除之前的订阅状态

  • 持久化会话:服务器保存客户端的订阅信息和离线消息

  • 遗嘱消息:客户端异常断开时自动发送预设消息

4. 轻量级设计

  • 最小化协议头:仅2字节固定头部

  • 减少网络开销:适合带宽受限环境

  • 低功耗:适合电池供电设备

🎯 MQTT主要应用场景

1. 🌍 物联网应用

智能家居
复制代码
应用示例:
  - 智能灯光控制:topic: "home/living-room/light/switch"
  - 温度监控:topic: "home/bedroom/temperature"
  - 安防报警:topic: "home/security/door-sensor"
  - 家电控制:topic: "home/kitchen/appliance/status"

优势

  • 设备资源消耗低

  • 支持大量并发连接

  • 网络波动适应性强

工业物联网
复制代码
典型应用:
  - 设备遥测:topic: "factory/line1/machineA/telemetry"
  - 预测性维护:topic: "plant/sensor/vibration/alert"
  - 远程控制:topic: "remote/valve/control"
  - 数据采集:topic: "sensor/temperature/#"

2. 🚗 车联网与智能交通

实时车辆监控

据发布示例 topics = { "gps": "fleet/vehicle001/gps", "speed": "fleet/vehicle001/speed", "fuel": "fleet/vehicle001/fuel", "diagnostic": "fleet/vehicle001/diagnostic" }

应用场景

  • 车队管理系统

  • 实时位置跟踪

  • 车辆状态监控

  • 远程诊断和维护

3. 💻 移动应用与即时通讯

聊天应用
复制代码
// 聊天室主题设计
const chatTopics = {
    userStatus: 'chat/room1/user/status',
    messages: 'chat/room1/messages',
    typing: 'chat/room1/typing'
};
推送通知
  • 新闻推送

  • 社交网络更新

  • 实时游戏状态同步

4. 🏥 医疗健康领域

远程患者监护
复制代码
医疗设备主题:
  - 生命体征: "patient/room101/vitals/heart_rate"
  - 设备状态: "medical/device/infusion-pump/status"
  - 紧急警报: "hospital/emergency/cardiac-alert"
  - 位置跟踪: "staff/doctor001/location"

优势

  • 实时数据传输

  • 低延迟告警

  • 可靠的连接保证

5. 🌱 农业与环境监测

智慧农业
复制代码
# 农业传感器主题
agriculture_topics = [
    "farm/section1/soil/moisture",
    "greenhouse/temperature", 
    "weather/wind-speed",
    "irrigation/valve/control"
]

6. 🔋 能源管理

智能电网
复制代码
能源管理应用:
  - 智能电表: "smartgrid/meter/consumption"
  - 太阳能监控: "solar/panel/output"
  - 负载平衡: "grid/load/balancing"
  - 电价信息: "energy/pricing/real-time"

⚡ MQTT与其他协议的对比

特性 MQTT HTTP CoAP
协议模式 发布/订阅 请求/响应 请求/响应
头部大小 2字节 100+字节 4字节
功耗 极低 极低
可靠性 中等
实时性 优秀 一般 优秀

🔧 MQTT服务器选择

主流MQTT Broker

  1. EMQX - 高并发,企业级功能丰富

  2. Mosquitto - 轻量级,适合资源受限环境

  3. HiveMQ - 商业版,企业级特性

  4. AWS IoT Core - 云服务,免运维

💡 选择MQTT的考量因素

适合使用MQTT的场景:

✅ 设备到云端的通信

✅ 网络条件不稳定的环境

✅ 大量设备需要同时连接

✅ 实时性要求高的应用

✅ 设备资源受限(功耗、计算、存储)

不适合使用MQTT的场景:

❌ 点对点请求/响应模式

❌ 需要复杂查询的场景

❌ 大数据批量传输

❌ 已有成熟HTTP/REST架构的系统

📊 成功案例参考

实际应用

  • Facebook Messenger - 早期版本使用MQTT进行消息传递

  • AWS IoT - 基于MQTT协议的物联网平台

  • 宝马ConnectedDrive - 车辆远程信息服务

  • 阿里巴巴IoT平台 - 大规模设备连接管理

二、Emqx服务器的功能和应用

EMQX 是一款高性能的分布式物联网 MQTT 消息服务器 ,致力于为物联网设备提供可靠的实时消息传输和设备连接 解决方案-1。它凭借其强大的功能,在全球拥有众多企业用户,并连接了超过1亿台物联网设备-1

下面这个表格汇总了EMQX的核心功能及其典型应用场景,帮助你快速了解:

核心功能 💡 应用场景 🎯
海量设备连接与多协议接入-1 智能家居-2
高可靠消息路由与低延迟传输-1 车联网-2
强大的规则引擎与数据集成-1 工业物联网-5
安全保障与访问控制-1 实时网页应用-6
管理与监控运维-1 AI大模型数据流-6

🔧 EMQX核心功能详解

  • 海量连接与多协议支持 :EMQX 单节点支持500万 MQTT 设备连接,集群可扩展至1亿 并发连接-1。除了完整支持 MQTT 3.x/5.0 协议,它还通过多协议网关 支持 WebSocket-1、QUIC-1、CoAP-1、LwM2M-7 等多种物联网协议,并能将非MQTT协议转换到MQTT消息模型-7,方便连接各类异构设备。

  • 可靠消息路由与低延迟传输 :EMQX 支持完整的 MQTT 发布/订阅模式 和多级 QoS(服务质量) 机制-1,确保消息可靠传递-1,并能实现毫秒级 的低延迟消息交付-1

  • 规则引擎与数据集成 :EMQX 内置了强大的基于SQL的规则引擎 -1,可以实时地提取、过滤、转换和处理 物联网数据-1。同时,它提供了开箱即用的数据集成能力,能够将设备数据无缝对接至 40多种 后端系统,包括 Kafka、MySQL、InfluxDB 等数据库和云服务-1,实现数据的持久化和进一步分析。

  • 全面的安全保障 :EMQX 提供TLS/SSL加密 传输-1,并内置了多重客户端认证机制(如用户名密码、JWT、X.509证书等)和灵活的基于主题的访问控制(ACL) -1,保障设备连接与数据交互的安全。

  • 便捷的运维监控 :通过直观的 Web Dashboard ,你可以轻松地监控集群状态、管理客户端连接与订阅、配置规则-1,并进行问题诊断-1。此外,它还支持将监控指标集成到 Prometheus 等外部系统中-1

🚀 EMQX的部署模式

EMQX 提供了灵活的部署选项以适应不同需求:

  • 自托管模式(EMQX 企业版) :适合需要在自有基础设施上部署的场景,提供最完整的功能和高度的控制权-1

  • 云服务模式(EMQX Platform) :提供全托管的 MQTT 云服务,包括 Serverless专有版 两种形态-2,可以帮助你快速开始使用而无需管理底层设施-2,并能够按需伸缩-2

三、Emqx服务器的安装,测试。

1.下载 emqx-enterprise-6.0.0-ubuntu24.04-amd64.deb

复制代码
wget https://www.emqx.com/zh/downloads/enterprise/6.0.0/emqx-enterprise-6.0.0-ubuntu24.04-amd64.deb

2.安装

复制代码
sudo apt install ./emqx-enterprise-6.0.0-ubuntu24.04-amd64.deb

3.启动

复制代码
sudo systemctl start emqx
sudo systemctl status emqx

1. 检查端口监听

EMQX启动后会监听多个端口,使用以下命令检查-9

复制代码
netstat -tunlp | grep emqx

你应该能看到类似以下的输出,表明EMQX正在监听关键端口:

  • 1883 :MQTT TCP协议端口-6

  • 8083 :MQTT over WebSocket端口-6

  • 8084 :MQTT over WebSocket with SSL端口-6

  • 18083 :EMQX Dashboard管理控制台端口-3

由于我用的是云主机

打开端口

复制代码
# 开放 MQTT 默认端口
sudo ufw allow 1883/tcp

# 开放 Dashboard 管理界面端口
sudo ufw allow 18083/tcp

# 如果你需要使用加密连接,可以同时开放以下端口
sudo ufw allow 8883/tcp
sudo ufw allow 8083/tcp
sudo ufw allow 8084/tcp

2. 访问Dashboard管理控制台

  1. 打开浏览器,输入 http://你的服务器IP:18083

  2. 使用默认用户名 admin 和密码 public 登录-9

  3. 首次登录后,系统会提示修改默认密码,建议你修改以提高安全性-9

登录成功后,你可以在Dashboard上查看客户端连接数、消息吞吐量等监控信息

相关推荐
FIT2CLOUD飞致云3 小时前
飞致云播客丨揭秘JumpServer PAM核心功能的设计故事
开源
ajassi20003 小时前
开源 Linux 服务器与中间件(八)数据库--MariaDB
服务器·数据库·开源
道阻且长行则将至!4 小时前
ubuntu中为什么查看CPU的步进?查看命令是什么?
linux·运维·ubuntu·步进·stepping
MeowKnight9584 小时前
【Linux】常见的系统调用 函数和功能简单总结
linux·1024程序员节
Dobby_054 小时前
【Linux】安装 Rocky Linux 9 并配置 Kubernetes 集群基础环境 | VMware | Win11
linux·云原生·kubernetes
数字化脑洞实验室4 小时前
商业求解器和开源求解器哪个更适合企业?
开源
爱隐身的官人4 小时前
Ubuntu安装开源堡垒机JumpServer
linux·ubuntu·堡垒机·1024程序员节
杨筱毅4 小时前
【底层机制】Linux内核4.10版本的完整存储栈架构讲解--用户空间到物理设备完整IO路径
linux·架构·1024程序员节·底层机制
wanhengidc5 小时前
站群服务器都有什么作用
服务器·安全·智能手机·玩游戏