Debian12安装配置Mqtt之EMQX
2026/5/4 20:47:29 网站建设 项目流程

查看系统信息

1、查看系统的基本信息,包括内核名称、主机名、内核发行版、内核版本等。

uname -a

2、获取操作系统完整版本信息

apt-get install lsb-release 安装lsb-release lsb_release -a

3、显示特定的cpu完整信息

lscpu

MQTT概述

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级、基于客户端-服务器的消息发布/订阅模式的物联网通信协议,广泛用于低带宽、不稳定网络环境下的设备通信。

MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务

MQTT协议是轻量、简单、开放和易于实现的,作为一种低开销、低带宽占用的即时通讯协议,其在物联网、小型设备、移动应用等方面有较广泛的应用。

例如,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。

MQTT 与 HTTP 一样,MQTT 运行在传输控制协议/互联网协议 (TCP/IP) 堆栈之上。

一、MQTT 协议版本

  • MQTT v3.1‌(2010年):IBM 首次公开发布的规范。
  • MQTT v3.1.1‌(2013年):提交至 OASIS 成为开放标准,目前最广泛使用的版本 ‌‌。
  • MQTT v5.0‌(2019年):增强可扩展性与诊断能力,支持属性系统、共享订阅、会话过期等新特性 ‌‌。
  • 除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于TCP/IP网络,如:ZigBee。

二、MQTT 的核心组件

  • 客户端(Client)‌:运行 MQTT 客户端库的应用或设备,可作为发布者、订阅者或两者兼有 ‌‌。
  • 消息代理(Broker)‌:负责接收、路由和转发消息的核心服务器,如 EMQX、Mosquitto、HiveMQ 等 ‌‌。
  • 主题(Topic)‌:用于消息路由的分层字符串(如sensor/1/temperature),支持通配符+(单层)和#(多层)‌‌。

三、MQTT 的关键技术特性

  • QoS(服务质量)等级‌:
    1. QoS 0‌:至多一次,依赖底层 TCP,可能丢失。
    2. QoS 1‌:至少一次,可能重复。
    3. QoS 2‌:仅一次,确保精确投递 ‌‌。
  • 遗嘱消息(Last Will)‌:客户端异常断开时,Broker 自动发布预设通知 ‌‌。
  • 保留消息(Retained Message)‌:最新消息被 Broker 保存,新订阅者可立即接收 ‌‌。
  • 持久会话‌:支持断线后恢复订阅和未送达消息(需 Clean Session=0)‌‌。

四、MQTT 数据包结构

  • 固定头(Fixed header),存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识;
  • 可变头(Variable header),存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容;
  • 消息体(Payload),存在于部分MQTT数据包中,表示客户端收到的具体内容;

整体MQTT的消息格式如下图所示:

五、MQTT 的变体与扩展

  • MQTT-SN(MQTT for Sensor Networks)‌:面向非 TCP/IP 网络(如 ZigBee、UDP),使用 Topic ID 替代主题名,支持设备睡眠与网关发现 ‌‌。
  • MQTT over WebSocket‌:允许浏览器直接连接 Broker,适用于 Web 物联网应用 ‌‌。
  • MQTT over QUIC‌:新兴传输层优化,提升连接建立速度与安全性 ‌‌。

五、主流 MQTT Broker 实现

  • EMQX‌:高并发分布式 Broker,支持百万级连接,广泛用于工业物联网 ‌‌。EMQX(以前称为 EMQ)已成为市场上最强大的开源 MQTT 代理之一。用 Erlang/OTP 编写,EMQX 开箱即用即可提供巨大的可扩展性和容错性,能够处理数百万个并发连接。典型应用:大规模工业物联网部署、智慧城市基础设施以及需要水平扩展的企业应用。

核心功能:

  • 高吞吐量与可扩展性:Erlang 的并发模型在大规模消息处理方面表现出色。
  • 多协议支持:除了 MQTT,还支持 MQTT-SN、CoAP、WebSocket 等。
  • 丰富的插件系统:支持数据库(Redis、MySQL、PostgreSQL)和认证后端(LDAP、JWT)的插件。
  • 控制面板与监控:实时指标和内置可观测性。
  • MQTT 5.0 实现:利用共享订阅和主题别名等高级功能。
  • 官网:https://www.emqx.com/en

    链接:https://www.emqx.com/en/cloud/serverless-mqtt

  • Eclipse Mosquitto‌:轻量级开源 Broker,适合嵌入式与小型部署 ‌‌。Eclipse Mosquitto 是 Eclipse 基金会的一个项目,多年来一直是 IoT 爱好者和专业人士的首选。其轻量级的占用和符合标准的特点使其成为从小规模到企业级部署的首选。应用场景:适用于个人项目、概念验证、小型企业的物联网设置以及以简便设置为首要考虑的云部署。

核心功能:

  • 轻量级且快速:消耗最少的资源,非常适合受限环境。
  • 确保与最新标准兼容,支持 MQTT 3.1.1 和 MQTT 5.0。
  • 安全性和身份验证:提供 SSL/TLS 加密和用户名/密码认证。
  • 跨接:连接多个代理以扩展或隔离流量。
  • 活跃的社区:由 Eclipse 基金会和一群贡献者支持。
  • 官网:https://mosquitto.org/

    下载链接:https://mosquitto.org/download/

  • HiveMQ:在商业 MQTT 领域享有盛誉。其社区版 (CE) 将许多企业级功能带到了开源领域。HiveMQ CE 采用 Java 开发,专注于可靠性和性能以及开发者友好的集成。典型应用场景:偏好 Java 生态系统且中大型 IoT 布局可能考虑后续升级到商业版。

核心功能:

  • 稳定的核心:经过各个企业可靠性验证,现在可供开源使用。
  • 插件框架:通过基于 Java 的插件扩展代理功能。
  • 高可用性聚类:社区版中的基本聚类,商业版中具有更高级的功能。
  • 开发者友好工具:全面的文档和内置指标。
  • 查看链接https://www.mqtt-dashboard.com/

    下载链接https://www.hivemq.com/download/

  • VerneMQ‌:商用级 Broker,强调高可用与企业级安全 ‌‌。基于 Erlang 的代理,以高可用性和可扩展性著称。它采用无主节点的集群架构,确保没有单个节点成为瓶颈或故障点。VerneMQ 在安全、稳定性和可扩展性方面的强大关注使其非常适合关键任务型的物联网部署。典型应用场景:需求零停机升级、大量消息传输和强大的容错能力的应用场景。

核心功能:

  • 无主集群:无缝扩展而无需停机。
  • 可插拔身份验证/授权:通过 Lua 挂钩或外部数据库实现自定义安全设置。
  • MQTT 5.0 兼容:支持用户属性和消息过期时间等高级功能。
  • 会话持久化:节点故障期间保留订阅状。
  • 运营良好:详细的日志记录、跟踪和性能指标。
  • 官网:https://vernemq.com/

  • RabbitMQ:RabbitMQ 以 AMQP(高级消息队列协议)而闻名,但提供了一个 MQTT 插件,将其转变为混合消息系统。这种方法对于需要在单一代理下统一消息解决方案的团队来说具有吸引力。典型应用场景:已经使用 RabbitMQ 的企业,希望将 MQTT 与其他消息协议进行整合。或者需要多种协议共存的混合环境。

核心功能:

  • 统一消息:支持多种协议,如 AMQP、MQTT、STOMP 等。
  • 集群与联邦:robust clustering 模型和联邦,适用于地理分布式部署。
  • 插件与扩展:包含广泛的认证、监控和队列管理库。
  • 企业生态系统:拥有庞大的用户基础和成熟的工具,特别是在 AMQP 工作流方面。
  • 官网:https://www.rabbitmq.com/

六、典型应用场景

  • 智能家居(如温控器、灯光控制)
  • 车联网(车辆状态上报、远程控制)
  • 工业物联网(PLC 数据采集、设备监控)
  • 远程医疗(植入设备数据传输)‌‌

下载

mqtt中文文档:https://docs.emqx.com/zh/emqx/latest/deploy/install-debian.html

下载 EMQX 企业版:https://www.emqx.com/zh/downloads-and-install/enterprise?os=Debian

​下载 wget https://www.emqx.com/zh/downloads/enterprise/6.2.0/emqx-enterprise-6.2.0-debian12-amd64.tar.gz 安装 mkdir -p emqx && tar -zxvf emqx-enterprise-6.2.0-debian12-amd64.tar.gz -C emqx 启动 ./emqx/bin/emqx start

集群配置

搭建 EMQX 集群,需在/emqx/etc/emqx.conf中配置:

node { name = "emqx@192.168.0.10" role = core } cluster { name = "emqxcld" discovery_strategy = manual core_nodes = ["emqx@192.168.0.10", "emqx@192.168.0.11"] }

节点名格式为name@host,host 必须是 IP 或 FQDN ‌。

Dashboard

访问http://localhost:18083/,初始默认账号密码:admin/public,登陆后配置账号密码。

配置客户端认证

EMQX 配置客户端认证的主要作用是‌保障物联网(MQTT)通信的安全性‌,防止非法客户端连接和访问系统资源。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询