开源 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-优快云博客

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

内容: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与其他协议的对比

特性MQTTHTTPCoAP
协议模式发布/订阅请求/响应请求/响应
头部大小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
管理与监控运维-1AI大模型数据流-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上查看客户端连接数、消息吞吐量等监控信息

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值