• MQTT教程--服务器使用EMQX和客户端使用MQTTX

MQTT教程--服务器使用EMQX和客户端使用MQTTX

2025-04-24 23:17:20 2 阅读

MQTT教程

  • 什么是MQTT
    • 为什么 MQTT 是适用于物联网的最佳协议?
    • MQTT 的工作原理
      • MQTT 客户端
      • MQTT Broker
      • 发布-订阅模式
        • 主题
        • QoS
    • MQTT 的工作流程
    • 开始使用 MQTT:快速教程
      • 准备 MQTT Broker--EMQX
        • EMQX
          • 下载和安装
          • web访问
          • 文档
      • 准备 MQTT 客户端--MQTTX
        • MQTTX
          • windows客户端工具
          • MQTTX CLI
          • MQTTX Web
      • 创建 MQTT 连接
    • MQTT入门
    • MQTT进阶
    • MQTT编程
      • 服务端
      • 前端
      • 移动端
      • 硬件
    • MQTT术语表
      • Broker
      • Clean Start
      • Client
      • Client ID
      • Connection
      • Content Type
      • Enhanced Authentication
      • Flow Control
      • Keep Alive
      • Message
      • Message Expiry Interval
      • MQTT over QUIC
      • MQTT v3.1.1
      • MQTT v5.0
      • Packet
      • Packet Identifier
      • Payload
      • Payload Format Indicator
      • PINGREQ & PINGRESP
      • Property
      • Publish/Subscribe
      • QoS
      • Reason Code
      • Reason String
      • Receive Maximum
      • Request & Response
      • Retained Message
      • Security
      • Server
      • Server Disconnect
      • Server Reference
      • Session
      • Session Expiry Interval
      • Session Present
      • Shared Subscription
      • Subscription Identifier
      • Subscription Options
      • Topic
      • Topic Alias
      • Topic Filter
      • Topic Name
      • Topic Wildcards
      • Username & Password
      • User Property
      • Will Delay Interval
      • Will Message
      • $ Topic
    • MQTT FAQs
      • 什么是 MQTT?
      • 什么是 MQTT Broker?
      • 什么是 EMQX?
      • EMQX 支持 TLS 吗?
      • 什么是 MQTT 主题?
      • MQTT 和 EMQX 有什么区别?
      • MQTT 和 AMQP 有什么区别?
      • MQTT 和 Kafka 有什么区别?
      • EMQX 是免费的吗?
      • 除了 MQTT,EMQX 还支持哪些协议?
      • EMQX 支持哪个 MQTT 版本?
      • MQTT 有多安全?
      • MQTT 使用 TCP 还是 UDP?
      • EMQX 能否代替 RabbitMQ?
      • MQTT 比 AMQP 快吗?

什么是MQTT

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。

为什么 MQTT 是适用于物联网的最佳协议?

MQTT 所具有的适用于物联网特定需求的特点和功能,使其成为物联网领域最佳的协议之一。它的主要特点包括:

  • 轻量级:物联网设备通常在处理能力、内存和能耗方面受到限制。MQTT 开销低、报文小的特点使其非常适合这些设备,因为它消耗更少的资源,即使在有限的能力下也能实现高效的通信。
  • 可靠:物联网网络常常面临高延迟或连接不稳定的情况。MQTT 支持多种 QoS 等级、会话感知和持久连接,即使在困难的条件下也能保证消息的可靠传递,使其非常适合物联网应用。
  • 安全通信:安全对于物联网网络至关重要,因为其经常涉及敏感数据的传输。为确保数据在传输过程中的机密性,MQTT 提供传输层安全(TLS)和安全套接层(SSL)加密功能。此外,MQTT 还通过用户名/密码凭证或客户端证书提供身份验证和授权机制,以保护网络及其资源的访问。
  • 双向通信:MQTT 的发布-订阅模式为设备之间提供了无缝的双向通信方式。客户端既可以向主题发布消息,也可以订阅接收特定主题上的消息,从而实现了物联网生态系统中的高效数据交换,而无需直接将设备耦合在一起。这种模式也简化了新设备的集成,同时保证了系统易于扩展。
  • 连续、有状态的会话:MQTT 提供了客户端与 Broker 之间保持有状态会话的能力,这使得系统即使在断开连接后也能记住订阅和未传递的消息。此外,客户端还可以在建立连接时指定一个保活间隔,这会促使 Broker 定期检查连接状态。如果连接中断,Broker 会储存未传递的消息(根据 QoS 级别确定),并在客户端重新连接时尝试传递它们。这个特性保证了通信的可靠性,降低了因间断性连接而导致数据丢失的风险。
  • 大规模物联网设备支持:物联网系统往往涉及大量设备,需要一种能够处理大规模部署的协议。MQTT 的轻量级特性、低带宽消耗和对资源的高效利用使其成为大规模物联网应用的理想选择。通过采用发布-订阅模式,MQTT 实现了发送者和接收者的解耦,从而有效地减少了网络流量和资源使用。此外,协议对不同 QoS 等级的支持使得消息传递可以根据需求进行定制,确保在各种场景下获得最佳的性能表现。
  • 语言支持:物联网系统包含使用各种编程语言开发的设备和应用。MQTT 具有广泛的语言支持,使其能够轻松与多个平台和技术进行集成,从而实现了物联网生态系统中的无缝通信和互操作性。您可以阅读我们的 MQTT 客户端编程系列文章,学习如何在 PHP、Node.js、Python、Golang、Node.js 等编程语言中使用 MQTT。

MQTT 的工作原理

要了解 MQTT 的工作原理,首先需要掌握以下几个概念:MQTT 客户端、MQTT Broker、发布-订阅模式、主题、QoS。

MQTT 客户端

任何运行 MQTT 客户端库的应用或设备都是 MQTT 客户端。例如,使用 MQTT 的即时通讯应用是客户端,使用 MQTT 上报数据的各种传感器是客户端,各种 MQTT 测试工具也是客户端。

MQTT Broker

MQTT Broker 是负责处理客户端请求的关键组件,包括建立连接、断开连接、订阅和取消订阅等操作,同时还负责消息的转发。一个高效强大的 MQTT Broker 能够轻松应对海量连接和百万级消息吞吐量,从而帮助物联网服务提供商专注于业务发展,快速构建可靠的 MQTT 应用。

关于 MQTT Broker 的更多详情,请参阅文章 2023 年最全面的 MQTT Broker 比较指南。

发布-订阅模式

发布-订阅模式与客户端-服务器模式的不同之处在于,它将发送消息的客户端(发布者)和接收消息的客户端(订阅者)进行了解耦。发布者和订阅者之间无需建立直接连接,而是通过 MQTT Broker 来负责消息的路由和分发。

下图展示了 MQTT 发布/订阅过程。温度传感器作为客户端连接到 MQTT Broker,并通过发布操作将温度数据发布到一个特定主题(例如 Temperature)。MQTT Broker 接收到该消息后会负责将其转发给订阅了相应主题(Temperature)的订阅者客户端。

主题

MQTT 协议根据主题来转发消息。主题通过 / 来区分层级,类似于 URL 路径,例如:

chat/room/1
sensor/10/temperature
sensor/+/temperature

MQTT 主题支持以下两种通配符:+ 和 #。

  • +:表示单层通配符,例如 a/+ 匹配 a/x 或 a/y。
  • #:表示多层通配符,例如 a/# 匹配 a/x、a/b/c/d。

注意:通配符主题只能用于订阅,不能用于发布。

关于 MQTT 主题的更多详情,请参阅文章通过案例理解 MQTT 主题与通配符。

QoS
  • MQTT 提供了三种服务质量(QoS),在不同网络环境下保证消息的可靠性。
  • QoS 0:消息最多传送一次。如果当前客户端不可用,它将丢失这条消息。
  • QoS 1:消息至少传送一次。
  • QoS 2:消息只传送一次。
    关于 MQTT QoS 的更多详情,请参阅文章 MQTT QoS 0, 1, 2 介绍。

MQTT 的工作流程

在了解了 MQTT 的基本组件之后,让我们来看看它的一般工作流程:

  1. 客户端使用 TCP/IP 协议与 Broker 建立连接,可以选择使用 TLS/SSL 加密来实现安全通信。客户端提供认证信息,并指定会话类型(Clean Session 或 Persistent Session)。
  2. 客户端既可以向特定主题发布消息,也可以订阅主题以接收消息。当客户端发布消息时,它会将消息发送给 MQTT Broker;而当客户端订阅消息时,它会接收与订阅主题相关的消息。
  3. MQTT Broker 接收发布的消息,并将这些消息转发给订阅了对应主题的客户端。它根据 QoS 等级确保消息可靠传递,并根据会话类型为断开连接的客户端存储消息。

开始使用 MQTT:快速教程

下面我们将通过一些简单的示例来展示如何使用 MQTT。在开始之前,需要准备 MQTT Broker 和 MQTT 客户端。

准备 MQTT Broker–EMQX

EMQX

EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。

下载和安装

文档:下载EMQX开源版本

web访问

http://localhost:18083 来查看Dashboard,默认用户名是 admin,密码是 public。

文档

EMQX文档

  • EMQX 快速入门指南
  • EMQX Dashboard 介绍
  • 如何进行访问控制
  • 如何使用数据集成
  • 如何使用规则引擎
  • EMQX 配置文件指南
  • 使用 EMQX REST API

准备 MQTT 客户端–MQTTX

MQTTX

MQTTX 是 EMQ 开源的一款优雅的跨平台 MQTT 5.0 客户端工具,它支持 macOS、Linux 和 Windows,并且支持 MQTT 消息格式转换。

MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建连接保存并同时建立多个连接客户端,方便用户快速测试 MQTT/TCP、MQTT/TLS、和 MQTT/WebSocket 的 连接/发布/订阅 功能及其他特性。

windows客户端工具

下载:https://mqttx.app/zh
文档:https://mqttx.app/zh/docs

MQTTX CLI

MQTTX CLI 是 EMQ 开源的一款 MQTT 5.0 命令行客户端工具,也是命令行上的 MQTTX,旨在帮助开发者在不需要使用图形化界面的基础上,也能更快的开发和调试 MQTT 服务与应用。
文档:https://mqttx.app/zh/docs/cli

MQTTX Web

MQTTX Web 是一款开源的 MQTT 5.0 浏览器客户端,也是一个在线 MQTT WebSocket 客户端工具。使用 WebSocket 在浏览器中连接到 MQTT,帮助开发者更快地开发和调试 MQTT 服务和应用程序,而不必在本地下载和安装 MQTTX
在线地址:https://mqttx.app/web-client#/recent_connections
文档:https://mqttx.app/zh/docs/web

创建 MQTT 连接

具体文档查看 MQTT 协议入门:基础知识和快速教程

MQTT入门

  • MQTT 协议入门:基础知识和快速教程
  • MQTT 发布/订阅模式介绍
  • 创建 MQTT 连接时如何设置参数?
  • 通过案例理解 MQTT 主题与通配符
  • MQTT会话详情
  • MQTT QoS 0, 1, 2 介绍

MQTT进阶

  • 保留消息(Retained Messages)
  • 遗愿消息(Will Messages)
  • 请求/响应(Request/Response)
  • 用户属性(User Properties)
  • 主题别名(Topic Alias)
  • 载荷格式指示与内容类型(Payload Format Indicator & Content Type)
  • 共享订阅(Shared Subscriptions)
  • 订阅选项(Subscription Options)
  • 订阅标识符(Subscription Identinfier)
  • 保持连接(Keep Alive)
  • 消息过期间隔(Message Expiry Interval)
  • 最大报文大小(Maximum Packet Size)
  • 原因码以速查表(Reason Code & Quick Reference)
  • 增强认证(Enhanced Authentication)
  • 控制报文(Control Packets)

MQTT编程

服务端

  • 如何在 Python 中使用 MQTT
  • 如何在 Java 中使用 MQTT
  • 如何在 Node.js 项目中使用 MQTT
  • 如何在 PHP 项目中使用 MQTT
  • 如何在 Golang 中使用 MQTT
  • 如何在 Rust 中使用 MQTT
  • 开发指南:使用 MQTTNet 库构建 .Net 物联网 MQTT 应用程序
  • 如何在 Dart 中使用 MQTT

前端

  • MQTT.js 入门教程
  • 使用 WebSocket 连接 MQTT 服务器
  • 如何在 Vue 项目中使用 MQTT
  • 如何在 React 项目中使用 MQTT
  • 如何在 Angular 项目中使用 MQTT
  • 如何在 Electron 项目中使用 MQTT

移动端

  • 如何在 React Native 项目中使用 MQTT
  • CocoaMQTT v2.0:首个支持 MQTT 5.0 的 iOS 客户端
  • Android 使用 Kotlin 连接 MQTT
  • 在 Flutter 项目中使用 MQTT
  • Android MQTT TLS/SSL 认证

硬件

  • 在树莓派上使用 MQTT
  • 在树莓派中使用 MicroPython 接入 MQTT
  • ESP32 连接到免费的公共 MQTT 服务器
  • ESP8266 连接到免费的公共 MQTT 服务器
  • ESP8266 + MQTT :如何实现 LED 灯的远程控制
  • 通过 NodeMCU (ESP8266) 将传感器数据上传至 MQTT 云服务

MQTT术语表

Broker

有时我们也会直接将服务端称为 Broker,这两个术语可以互换使用。

Clean Start

客户端可以在连接时使用这个字段来指示是期望从已存在的会话中恢复通信,还是创建一个全新的会话。仅限 MQTT v5.0。

Client

使用 MQTT 协议连接到服务端的设备或应用程序,并通过服务端完成发布订阅。

Client ID

Client ID 用于唯一标识客户端连接与会话,MQTT 允许客户端自行指定 Client ID,也支持由服务端统一为客户端分配 Client ID。

Connection

MQTT 客户端与 MQTT 服务端之间的网络连接。MQTT 客户端之间并不会直接建立连接。

Content Type

用来描述消息的内容类型,方便接收方处理。可以使用 MIME 类型,例如 text/plain,也可以使用自定义的字符串来描述消息内容。仅限 MQTT v5.0。

Enhanced Authentication

MQTT v5.0 通过新增的 AUTH 报文实现了对增强认证的支持,在原先通过 Username 和 Password 提供的密码认证和 Token 认证的基础上进行了扩展。

它更像是一种认证框架,允许使用各种更安全的认证机制,例如 SCRAM 认证就支持服务端和客户端互相确认对方的身份,以抵御中间人攻击。

Flow Control

MQTT v5.0 引入了流控机制,允许客户端和服务端根据自己的接收能力约定对方的最大消息发送速率,避免了一方发送过快,导致网络拥塞和接收方过载的问题。

Keep Alive

Keep Alive 表示客户端在传输完成一个 MQTT 控制报文到发送下一个报文,两者之间允许空闲的最大的时间间隔。

如果没有其他控制报文可以发送,客户端必须发送一个 PINGREQ 报文。

如果服务端在 1.5 倍的 Keep Alive 时间内没有收到任何客户端的控制报文,它就会断开连接。

Message

通常指 PUBLISH 报文。

Message Expiry Interval

MQTT v5.0 允许客户端为消息设置过期时间,避免在服务端中停留了较长时间的消息仍然被转发给订阅端。

MQTT over QUIC

MQTT over … 指的是 MQTT 运行在什么协议之上。常见的有 MQTT over TCP、MQTT over TLS 等。

MQTT 协议只要求基础传输层能够提供有序、可靠的双向传输字节流,并未强制指定使用某种传输协议。

MQTT over QUIC 是 EMQX 对 MQTT 的一个扩展。相比于 TCP,QUIC 能够有效减少连接开销和弱网环境下的消息延迟,同时还具备多路复用、连接迁移、端到端加密等特性,为现代移动互联网提供了一个更加灵活可靠的传输层。

MQTT v3.1.1

OASIS 技术委员会于 2014 年 10 月发布的 MQTT 规范。

MQTT v5.0

OASIS 技术委员会于 2019 年 3 月发布的 MQTT 规范,也是目前最新的 MQTT 规范。MQTT v5.0 在引入大量新特性的同时,仍然向后兼容 v3.1.1。

Packet

通常指 MQTT 的控制报文。MQTT 协议通过交换预定义的 MQTT 控制报文来通信。

例如用于连接的 CONNECT、AUTH(仅限 MQTT v5.0) 报文,用于发布的 PUBLISH 报文,以及用于订阅的 SUBSCRIBE 报文等等。

Packet Identifier

报文标识符用于在客户端和服务端之间唯一地标识一条 QoS 大于 0 的消息或一个订阅/取消订阅请求。

报文标识符的设置通常都在客户端和服务端的内部完成。

Payload

MQTT 报文中的有效载荷部分,根据报文类型,有效载荷的内容会有所不同。

对于 PUBLISH 报文来说,有效载荷即消息的实际内容。而对于 SUBSCRIBE 报文来说,有效载荷指的是订阅列表。

不过大部分情况下,如无特别说明,Payload 都是指 PUBLISH 报文中消息的实际内容。

Payload Format Indicator

用于指示消息内容(包括遗嘱消息)是否是 UTF-8 编码的字符串。仅限 MQTT v5.0。

PINGREQ & PINGRESP

客户端需要及时发送 PINGREQ 报文告知服务端自己还活着。

服务端也需要及时响应 PINGRESP 报文以便客户端判断网络和服务端的活动状态。

Property

MQTT 为绝大部分的控制报文中都定义了一组可选属性。不同类型的控制报文有不同的可选属性。

例如 Session Expiry Interval 是 CONNECT 报文的一个可选属性,Topic Alias 则是 PUBLISH 报文的一个可选属性。

Publish/Subscribe

发布订阅机制是 MQTT 协议的核心。它解耦了消息的发送方(发布者)和接收方(订阅者),引入了一个中间代理的角色来完成消息的路由和分发。

发布者和订阅者不需要知道彼此的存在,他们之间唯一的联系就是对消息的一致约定,例如消息将使用什么主题、消息将包含哪些字段等等。

通过发布订阅机制,我们可以实现消息的广播、组播和单播。

QoS

MQTT 定义了三种 QoS 等级,来分别提供不同的消息可靠性保证。每条消息都可以在发布时独立设置自己的 QoS。

  • QoS 0:最多交付一次,消息可能丢失。
  • QoS 1:至少交付一次,消息可以保证到达,但是可能重复到达。
  • QoS 2:只交付一次,消息保证到达,并且不会重复。

Reason Code

MQTT 通过 CONNACK 等响应报文中的 Reason Code 字段来指示操作结果。

MQTT v5.0 扩展了 Reason Code 以便反映更准确的结果,并且令所有响应报文都支持了 Reason Code。

Reason String

Reason Code 通常是机器易读的,所以 MQTT 还提供了 Reason String 来承载人类可读的内容,在 Reason Code 的基础上进一步指示结果。仅限 MQTT v5.0。

Receive Maximum

用于声明服务端和客户端愿意同时处理的 QoS 1 和 QoS 2 的消息的最大数量,对端在发送消息时需要遵守这个限制。仅限 MQTT v5.0。

Request & Response

MQTT 的发布订阅机制使得发布端最多只能确保消息到达了服务端,但不能确保消息到达了订阅端,我们必须借助额外的请求响应机制。

MQTT v5.0 改善了对请求响应的支持,请求方可以在请求中直接指定响应主题,这样请求方和响应方无需再提前约定主题。同时,他们还可以通过对比数据来确保请求和响应的正确匹配。

Retained Message

保留消息除了与正常消息一样被转发以外,还会保留在 MQTT 服务端中。

当一个新的订阅被创建,如果服务端中存在与该订阅匹配的保留消息,那么这些保留消息就会被发送给订阅者。

服务端只能为每个主题存储一条最新的保留消息。

Security

MQTT 支持多种安全机制,包括但不限于:支持在传输层使用 TLS 来提供端到端的安全连接,保护消息免受窃听、篡改或伪造;在 MQTT 协议层面支持对客户端和服务端的身份验证,以及对客户端的授权检查,以确保只有授权用户才能访问特定的主题。

Server

在发布消息的客户端和订阅的客户端之间充当中介的设备或应用程序,它的首要职责是将所有接收到的消息转发给匹配的订阅客户端。

Server Disconnect

MQTT v5.0 允许服务端发出 DISCONNECT 报文,以便向客户端指示连接被关闭的具体原因。

Server Reference

MQTT v5.0 允许服务端通过 CONNACK 或者 DISCONNECT 报文中的服务端参考属性指示客户端临时或永久切换至另一台服务端。

Session

MQTT 的会话机制确保了 QoS 1、2 消息的协议流程得以实现。

会话是客户端与服务端之间的有状态交互,存储了 QoS 1、2 消息的传输状态以及订阅信息等状态信息。

它可以仅持续和网络连接一样长的时间,也可以跨越多个网络连接存在。我们通常将后者称为持久会话。

我们可以选择让连接从已存在的会话中恢复,也可以选择从一个全新的会话开始。

Session Expiry Interval

会话过期时间。表示客户端连接断开后会话能够在服务端中保留多久,仅限 MQTT v5.0。

Session Present

服务端通过这个字段告知客户端本次连接是之前会话的延续还是一个全新的会话,以便客户端做出相应的调整。

Shared Subscription

MQTT v5.0 允许将客户端划分为多个订阅组,消息仍然会被转发给所有订阅组,但一个订阅组内的客户端将以随机、轮询等策略交替接收消息。

这使得订阅者能够以负载均衡的方式来消费消息。

一些 MQTT Server 例如 EMQX 在协议之外为非 MQTT v5.0 的设备提供了共享订阅的支持。

Subscription Identifier

客户端可以在订阅时指定订阅标识符,服务端在转发与这些订阅匹配的消息时需要附上与之关联的订阅标识符。

在特定的使用场景下,订阅标识符可以帮助减少需要传输的数据量,或者帮助客户端确定为消息触发哪个回调。

Subscription Options

MQTT 允许客户端为自己每个订阅使用不同的订阅选项,例如订阅建立时是否需要接收保留消息,服务端可以向自己发送的消息的最大 QoS 等等。

MQTT v3.1.1 仅支持设置最大 QoS。

Topic

主题被用来标识和区分不同的消息,它是 MQTT 消息路由的基础。发布者可以在发布时指定消息的主题,订阅者则可以选择订阅自己感兴趣的主题来接收相关的消息。

Topic Alias

MQTT v5.0 允许发送端将主题名映射成由一个双字节整数表示的别名,然后在消息传输时用别名替换原本的主题名,以此降低带宽消耗。

Topic Filter

主题过滤器在订阅时使用,可以包含主题通配符来同时订阅多个主题。

Topic Name

主题名在发布消息时使用,不允许使用主题通配符。

Topic Wildcards

MQTT 提供了两种主题通配符,分别是 + 表示的单层通配符和 # 表示的多层通配符。通配符只能在主题过滤器中使用。

Username & Password

MQTT 在连接报文中提供了可选的 Username 和 Password 字段,以实现对密码认证和 Token 认证的支持。

User Property

MQTT v5.0 允许客户端和服务端将自定义的、不限数量的字符串键值对作为元数据添加到除 PING 报文以外的所有控制报文当中,以提供更好的可扩展性。

用户属性可以在客户端和服务端之间传递,也可以在客户端和客户端之间传递,这主要取决于具体的控制报文类型。

Will Delay Interval

用于指示遗嘱消息可以在连接断开后延迟多久发出,仅限 MQTT v5.0。

Will Message

如果客户端不正常地断开连接,那么该客户端在连接时设置的遗嘱消息就会被服务端转发给其他的客户端。

遗嘱消息和普通消息一样具有主题、QoS、Payload、保留消息标识位等字段。

$ Topic

以 $ 开头的主题必须由服务端来决定其使用方式和场景,客户端不能仅出于自己的目的来随意使用这类主题。

例如 s h a r e 开头的主题用于共享订阅, share 开头的主题用于共享订阅, share开头的主题用于共享订阅,SYS 开头的主题通常被服务端用于发布系统消息。

EMQX 还定义了 $delay 前缀用于实现消息的延迟发布。

MQTT FAQs

什么是 MQTT?

MQTT 是用于物联网连接的 OASIS 标准,它是一种基于发布订阅模式的、轻量级的消息传输协议,专为受限设备和低带宽、高延迟和不可靠的网络设计,并且能够提供一定的消息可靠性保证。得益于这些特性,MQTT 在车联网、工业制造、移动通信等领域广泛应用。

目前 MQTT 的主要版本有 v3.1.1 和 v5.0,v5.0 于 2019 年 3 月发布,相比于 v3.1.1 引入了很多改进和增强,目前市面上绝大部分的客户端 和代理都已经支持了 MQTT v5.0。

什么是 MQTT Broker?

基于发布订阅模式的 MQTT 解耦了消息的发送方和接收方,并且引入了 Broker 这个中间角色。Broker 是 MQTT 客户端之间消息传输的桥梁,它的主要职责是从客户端接收消息并根据消息的主题将它们路由到适当的订阅者。

什么是 EMQX?

EMQX 是一款开源的、云原生的分布式物联网 MQTT 消息服务器,能够轻松支持数百万个并发连接,并且可以通过集群部署扩展至 1 亿并发连接。在处理每秒百万级的消息吞吐的同时,EMQX 还能保证超低的消息时延。

EMQX 提供了 SSL/TLS、密码认证、增强认证、ACL 等多种安全机制来保障数据安全,提供了基于 SQL 的、能够实时过滤、转换与处理消息的规则引擎,以及强大的管理监控功能。EMQX 最新的 5.0 版本还提供了全球首个 MQTT over QUIC 的实现,可以有效减少连接开销和弱网环境下的消息延迟,并具备多路复用、连接迁移等特性。

目前 EMQX 已经广泛地应用在车联网、工业制造、能源电力等领域。

EMQX 支持 TLS 吗?

是的。EMQX 提供了非常完整的 SSL/TLS 能力支持,包括支持单/双向认证、X.509 证书认证、SNI 等等。

EMQX 除了支持为包括 MQTT 在内的所有客户端连接启用 TLS,以保证接入和消息传输安全以外,还支持为与其他所有外部资源的连接启用 TLS,以确保访问外部资源时的数据安全。

什么是 MQTT 主题?

主题被用来标识和区分不同的消息,它是 MQTT 消息路由的基础。发布者可以在发布时指定消息的主题,订阅者则可以选择订阅自己感兴趣的主题来接收相关的消息。

MQTT 和 EMQX 有什么区别?

MQTT 是一个消息传输协议,它广泛地应用在物联网等领域。MQTT 需要一个服务端来为所有客户端路由和分发所有消息,而 EMQX 就是这个服务端的具体实现。EMQX 也是目前全球最受欢迎的开源 MQTT 消息服务器之一,它提供了对 MQTT v3.1、v3.1.1 以及 v5.0 协议标准的完整支持。

MQTT 和 AMQP 有什么区别?

MQTT 和 AMQP 都是运行在 TCP/IP 之上的二进制消息传递协议,也都是开放的标准协议。

但 MQTT 主要为高延迟、低带宽和不可靠的网络而设计,使用发布订阅模式,支持通过主题路由消息。MQTT 拥有更轻巧的报文结构,对于资源受限的设备更加友好。MQTT 还提供了遗嘱消息、保留消息、会话等专为运行在不可靠网络下的设备设计的功能。

而 AMQP 则旨在提供通用的消息队列协议,确保业务消息在应用程序或者服务端之间安全高效地传输,它提供了多种不同的路由规则来满足更复杂的应用场景,目前 AMQP 广泛地应用于商业领域。

MQTT 和 Kafka 有什么区别?

MQTT 和 Kafka 是完全不同的技术,虽然它们具有一些类似的特性,比如都基于发布订阅模式,都通过主题来路由消息等等。

但实际上,Kafka 更多地是专注于数据的存储和读取,针对实时性高的流式数据处理场景。而 MQTT 则侧重于海量的设备连接和主题路由,并且在不稳定的网络环境中进行实时的、可靠的消息交换。所以,MQTT 和 Kafka 的最大差异在于它们有着不同的适用场景,解决的是不同的问题。

在实际的生产应用中,MQTT 和 Kafka 经常会结合一起使用。MQTT 代理解决海量终端设备的接入问题,并将汇入的海量终端数据转发给 Kafka,再由 Kafka 分发给不同的业务应用程序,进行进一步的消息分析和处理。

EMQX 是免费的吗?

是的,EMQX 是一个基于 Apache 2.0 许可证完全开源的 MQTT 消息服务器,从 2013 年在 Github 上开源至今,EMQX 已经收获了超过 11K 的 Star 数。你可以在 EMQX 官网或者 Github 免费下载使用 EMQX。

除了 MQTT,EMQX 还支持哪些协议?

除了 MQTT 协议,EMQX 还支持 MQTT-SN、CoAP、STOMP 以及 LwM2M 多种其他物联网协议,并且允许接入的客户端跨协议通信。

EMQX 支持哪个 MQTT 版本?

EMQX 提供了对所有协议版本的完整的 MQTT 支持,包括 MQTT v3.1、v3.1.1 以及 v5.0,并且允许不同协议版本的客户端同时接入。

MQTT 有多安全?

MQTT 提供了多项安全机制,通过密码认证、Token 认证或者支持多种认证算法的增强认证机制,可以实现对客户端和服务端的身份验证,再配合服务端的权限检查,可以确保只有经过身份验证的客户端才能访问权限以内的数据。

MQTT 还支持使用 SSL/TLS 进行加密通信,以保护数据的隐私性和完整性。

需要注意的是,最终的安全性仍然取决于您的具体实施。比如,是否安全地存储了密码,是否在 TLS 中使用了足够安全的加密套件等等。

MQTT 使用 TCP 还是 UDP?

MQTT 协议要求基础传输层能够提供有序、可靠的双向传输字节流,所以 TCP 协议通常是 MQTT 的首要选择。

不过 MQTT 并未强制指定使用某种传输协议。虽然无法保证消息有序到达的 UDP 并不适合直接作为 MQTT 的底层传输协议,但是基于 UDP 实现的 QUIC,由于集成了 TCP 和 TLS 的所有优点并且解决了连接开销、连接不可迁移等缺点,所以也非常适合作为 MQTT 的传输协议。

EMQX 能否代替 RabbitMQ?

EMQX 的核心是 MQTT,RabbitMQ 的核心是 AMQP,他们有着不同的设计目标和用例。EMQX 是一个高性能、可扩展、功能丰富的 MQTT 消息服务器,针对物联网和 M2M 通信进行了优化。EMQX 旨在处理海量的并发连接和消息吞吐,使其适用于需要低延迟和实时通信的应用程序。

RabbitMQ 则更多的应用在不同系统间的数据交流和传递上。与 Kafka 类似,很多时候,RabbitMQ 与 EMQX 结合使用能够获得更好的效果。

MQTT 比 AMQP 快吗?

单纯比较协议之间的性能差异是没有意义的,这更多的取决于具体用例的实现。即便是同一种协议的不同实现,也可能存在较大的性能差异。根据应用场景来选择协议,根据期望的性能来对协议的具体实现进行选型,会是一个更加合理的方案。

本文地址:https://www.vps345.com/641.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge python MCP 进程 操作系统 进程控制 Ubuntu ssh 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 ubuntu deepseek Ollama 模型联网 API CherryStudio RTSP xop RTP RTSPServer 推流 视频 数据库 centos oracle 关系型 安全 分布式 java 面试 性能优化 jdk intellij-idea 架构 numpy harmonyos 华为 开发语言 typescript 计算机网络 flutter Dell R750XS 深度学习 YOLO 目标检测 计算机视觉 人工智能 android 鸿蒙 fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 docker 容器 adb nginx 监控 自动化运维 智能路由器 外网访问 内网穿透 端口映射 运维开发 node.js json html5 firefox windows Windsurf WSL win11 无法解析服务器的名称或地址 Qwen2.5-coder 离线部署 django flask web3.py macos pycharm ide pip conda DeepSeek-R1 API接口 live555 rtsp rtp Hyper-V WinRM TrustedHosts websocket 微服务 springcloud web安全 Kali Linux 黑客 渗透测试 信息收集 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 计算机外设 电脑 mac 软件需求 vim c# jenkins gitee spring boot ffmpeg 音视频 c++ github 创意 社区 golang Flask FastAPI Waitress Gunicorn uWSGI Uvicorn GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 cpu 内存 实时 使用 rust http react.js 前端面试题 持续部署 pytorch transformer c语言 qt stm32项目 单片机 stm32 科技 ai 个人开发 物联网 iot udp unity AI Agent .netcore 产品经理 agi microsoft 笔记 C 环境变量 进程地址空间 ssl chatgpt 大模型 llama3 Chatglm 开源大模型 php ping++ 机器学习 深度优先 图论 并集查找 换根法 树上倍增 前端框架 ollama llm 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 YOLOv12 vscode vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 jmeter 软件测试 tcp/ip sqlserver uni-app .net 负载均衡 后端 tomcat LDAP HCIE 数通 maven intellij idea asm sqlite dubbo MS Materials gateway Clion Nova ResharperC++引擎 Centos7 远程开发 ollama下载加速 tcpdump code-server MQTT mosquitto 消息队列 iftop 网络流量监控 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 mysql 跨域 嵌入式硬件 计算机 程序员 经验分享 学习方法 学习 pillow 硬件架构 HarmonyOS Next DevEco Studio shell kamailio sip VoIP 大数据 大数据平台 minicom 串口调试工具 测试工具 echarts 信息可视化 数据分析 网页设计 数据库系统 jar spring 文件系统 路径解析 串口服务器 SSH 服务 SSH Server OpenSSH Server threejs 3D remote-ssh Java rust腐蚀 统信 国产操作系统 虚拟机安装 框架搭建 docker命令大全 自动化 蓝耘科技 元生代平台工作流 ComfyUI 云原生 pyqt java-ee gitlab Dify https springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 DeepSeek gpu算力 opensearch helm WebRTC gpt 恒源云 kubernetes 程序人生 RTMP 应用层 jupyter webrtc opcua opcda KEPServer安装 AIGC oneapi 多进程 1024程序员节 远程 命令 执行 sshpass 操作 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 idm 医疗APP开发 app开发 adobe oceanbase 传统数据库升级 银行 大语言模型 LLMs LLM 大模型面经 职场和发展 Deepseek 大模型学习 VSCode mcu 信息与通信 多线程服务器 Linux网络编程 ecmascript KVM android studio springsecurity6 oauth2 授权服务器 token sas FTP 服务器 mongodb pdf elasticsearch 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 ci/cd devops rabbitmq visualstudio prometheus wireshark 服务器部署ai模型 开源 zabbix 爬虫 数据集 开机自启动 Trae IDE AI 原生集成开发环境 Trae AI 3d 流式接口 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 apache 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 Kylin-Server 服务器安装 cuda cudnn anaconda fpga开发 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 EasyConnect 编辑器 鸿蒙系统 Cline Reactor 设计模式 C++ nextjs react reactjs hadoop redis mybatis mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 嵌入式 linux驱动开发 arm开发 搜索引擎 ssrf 失效的访问控制 openwrt ux 多线程 系统架构 Linux open Euler dde deepin 统信UOS 指令 wsl2 wsl 进程信号 xrdp 远程桌面 远程连接 CLion string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap GCC crosstool-ng NPS 雨云服务器 雨云 curl wget 能力提升 面试宝典 技术 IT信息化 环境迁移 源码剖析 rtsp实现步骤 流媒体开发 ESXi Dell HPE 联想 浪潮 Ubuntu 24.04.1 轻量级服务器 linux 命令 sed 命令 virtualenv 相差8小时 UTC 时间 springboot rpc 远程过程调用 Windows环境 asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 设置代理 实用教程 直播推流 温湿度数据上传到服务器 Arduino HTTP 微信 微信分享 Image wxopensdk visual studio code svn linux环境变量 状态管理的 UDP 服务器 Arduino RTOS 驱动开发 kvm 无桌面 命令行 git gitea 媒体 微信公众平台 ansible playbook 剧本 C语言 eNSP 网络规划 VLAN 企业网络 AI大模型 博客 protobuf 序列化和反序列化 安装 html css k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm matlab excel bootstrap web Socket YOLOv8 NPU Atlas800 A300I pro asi_bench dify 压力测试 微信开放平台 微信公众号配置 Docker Compose docker compose docker-compose ecm bpm RAID RAID技术 磁盘 存储 宕机切换 服务器宕机 强制清理 强制删除 mac废纸篓 麒麟 bonding 链路聚合 spring cloud 课程设计 虚拟机 VMware 游戏服务器 Minecraft ddos VR手套 数据手套 动捕手套 动捕数据手套 Ark-TS语言 TRAE bash AI编程 命名管道 客户端与服务端通信 freebsd express CPU 主板 电源 网卡 debian PVE zotero WebDAV 同步失败 代理模式 av1 电视盒子 机顶盒ROM 魔百盒刷机 数学建模 iDRAC R720xd 部署 服务器配置 华为云 企业微信 Linux24.04 micropython esp32 mqtt VMware安装mocOS macOS系统安装 dell服务器 go AI代码编辑器 IIS .net core Hosting Bundle .NET Framework vs2022 XFS xfs文件系统损坏 I_O error es jvm 虚拟化 半虚拟化 硬件虚拟化 Hypervisor 测试用例 功能测试 X11 Xming 集成学习 集成测试 生物信息学 openEuler gcc 低代码 ArcTS 登录 ArcUI GridItem arkUI k8s rocketmq WebUI DeepSeek V3 sql KingBase 腾讯云大模型知识引擎 系统开发 binder 车载系统 framework 源码环境 Samba NAS Cursor minio jetty undertow UOS 统信操作系统 yum W5500 OLED u8g2 TCP服务器 rc.local 开机自启 systemd 音乐服务器 Navidrome 音流 JAVA WSL2 kylin 智能手机 Termux SSH pygame 小游戏 五子棋 VMware安装Ubuntu Ubuntu安装k8s Erlang OTP gen_server 热代码交换 事务语义 firewalld postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 软件工程 ESP32 k8s集群资源管理 云原生开发 ruoyi 华为od OD机试真题 华为OD机试真题 服务器能耗统计 MQTT协议 消息服务器 代码 DeepSeek行业应用 Heroku 网站部署 AI写作 AI作画 IIS服务器 IIS性能 日志监控 next.js 部署next.js selete 高级IO mysql离线安装 ubuntu22.04 mysql8.0 nuxt3 北亚数据恢复 oracle数据恢复 混合开发 环境安装 JDK 微信小程序 ros2 moveit 机器人运动 僵尸进程 基础入门 编程 银河麒麟服务器操作系统 系统激活 r语言 数据挖掘 数据可视化 okhttp 显示过滤器 ICMP Wireshark安装 dba centos-root /dev/mapper yum clean all df -h / du -sh QQ 机器人 bot Docker 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 list 数据结构 Redis Desktop 缓存 安全威胁分析 vscode 1.86 向日葵 IPMI unix 漏洞 unity3d 银河麒麟 kylin v10 麒麟 v10 网络穿透 云服务器 Ubuntu Server Ubuntu 22.04.5 Nuxt.js Xterminal 豆瓣 追剧助手 迅雷 nas 弹性计算 裸金属服务器 弹性裸金属服务器 交互 CORS 服务器繁忙 safari Mac 系统 Google pay Apple pay NFS 大模型微调 腾讯云 代码调试 ipdb postgresql RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 实时音视频 远程工作 政务 分布式系统 监控运维 Prometheus Grafana vue 华为认证 网络工程师 交换机 openssl 密码学 VMware创建虚拟机 业界资讯 ip命令 新增网卡 新增IP 启动网卡 交叉编译 鲲鹏 模拟退火算法 ios iphone gpt-3 文心一言 tidb GLIBC c/c++ 串口 netty tcp make命令 makefile文件 视觉检测 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 支付 微信支付 开放平台 ArkTs ArkUI AISphereButler 自定义客户端 SAS 序列化反序列化 sqlite3 银河麒麟高级服务器 外接硬盘 Kylin 国产化 etcd 数据安全 RBAC flink 安卓 金融 华为机试 Python 模拟实现 回显服务器 UDP的API使用 做raid 装系统 BMC Java Applet URL操作 服务器建立 Socket编程 网络文件读取 armbian u-boot 大模型入门 大模型教程 GPU SenseVoice ukui 麒麟kylinos openeuler Ubuntu共享文件夹 共享目录 Linux共享文件夹 npm wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 游戏程序 RustDesk自建服务器 rustdesk服务器 docker rustdesk C# MQTTS 双向认证 emqx Kali 渗透 fd 文件描述符 ftp MacOS录屏软件 VPS 5G 3GPP 卫星通信 mamba Vmamba DocFlow 图像处理 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 双系统 GRUB引导 Linux技巧 版本 其他 gradle prompt CH340 串口驱动 CH341 uart 485 big data camera Arduino 电子信息 飞书 系统安全 IDEA 孤岛惊魂4 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 uniapp RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 vscode1.86 1.86版本 ssh远程连接 eureka vSphere vCenter 软件定义数据中心 sddc kafka 网络编程 聊天服务器 套接字 TCP 客户端 自学笔记 小米 澎湃OS Android IPMITOOL 硬件管理 模拟器 教程 软负载 open webui 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 Ubuntu22.04 开发人员主页 sysctl.conf vm.nr_hugepages lua 单一职责原则 中间件 iis AnythingLLM AnythingLLM安装 移动云 云服务 可信计算技术 selenium spark HistoryServer Spark YARN jobhistory Headless Linux Claude 音乐库 群晖 飞牛 rnn asp.net大文件上传下载 kali 共享文件夹 Cookie ruby 键盘 僵尸世界大战 游戏服务器搭建 EMUI 回退 降级 升级 银河麒麟操作系统 zookeeper nfs linux安装配置 SSL 域名 rsyslog Anolis nginx安装 linux插件下载 硬件工程 ue4 着色器 ue5 虚幻 目标跟踪 OpenVINO 推理应用 v10 镜像源 软件 ldap 实习 can 线程池 c 嵌入式实习 bug Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer 链表 USB网络共享 黑客技术 redhat URL 本地部署 api mariadb 架构与原理 单元测试 linux上传下载 多个客户端访问 IO多路复用 TCP相关API 技术共享 灵办AI LLM Web APP Streamlit DNS 图形化界面 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors vmware 卡死 网工 压测 ECS DeepSeek r1 Open WebUI eclipse MI300x cnn GoogLeNet ssh漏洞 ssh9.9p2 CVE-2025-23419 SSE SysBench 基准测试 宝塔 游戏引擎 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 tensorflow trae TrinityCore 魔兽世界 Unity Dedicated Server Host Client 无头主机 开发环境 SSL证书 etl Linux PID elk 网络攻击模型 文件分享 自动化测试 性能测试 odoo 服务器动作 Server action 单例模式 常用命令 文本命令 目录命令 崖山数据库 YashanDB 视频编解码 多层架构 解耦 docker run 数据卷挂载 交互模式 perf 毕设 midjourney hive DBeaver 数据仓库 kerberos ui 代码托管服务 网络用户购物行为分析可视化平台 大数据毕业设计 远程控制 远程看看 远程协助 分析解读 技能大赛 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 边缘计算 ragflow swoole openstack Xen 三级等保 服务器审计日志备份 权限 FTP服务器 矩阵 服务器管理 宝塔面板 配置教程 网站管理 自动化任务管理 risc-v Linux环境 easyui langchain aws 佛山戴尔服务器维修 佛山三水服务器维修 ipython 软考 飞牛nas fnos Logstash 日志采集 VS Code 联想开天P90Z装win10 MacMini 迷你主机 mini Apple Invalid Host allowedHosts 宠物 毕业设计 免费学习 宠物领养 宠物平台 工业4.0 arm yum源切换 更换国内yum源 P2P HDLC 思科 小艺 Pura X 干货分享 黑客工具 密码爆破 执法记录仪 智能安全帽 smarteye 远程登录 telnet tailscale derp derper 中转 triton 模型分析 线性代数 电商平台 互信 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 自动驾驶 小智AI服务端 xiaozhi ASR TTS AD 域管理 网站搭建 serv00 Playwright mq cursor MCP server C/S windows日志 nac 802.1 portal xml DOIT 四博智联 实时互动 软件构建 虚拟显示器 7z 安全架构 cmos 硬件 输入法 大模型应用 thingsboard 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 安防软件 网络结构图 我的世界服务器搭建 minecraft H3C 磁盘监控 Docker Hub docker pull daemon.json kind yaml Ultralytics 可视化 前后端分离 监控k8s 监控kubernetes seatunnel ceph keepalived 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 重启 排查 系统重启 日志 原因 IPv4 子网掩码 公网IP 私有IP file server http server web server 田俊楠 chrome devtools chromedriver 深度求索 私域 知识库 xcode uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 服务网格 istio pgpool FunASR 端口测试 Spring Security DenseNet CrewAI rdp 实验 outlook qemu libvirt 王者荣耀 Wi-Fi WebVM frp efficientVIT YOLOv8替换主干网络 TOLOv8 Linux的基础指令 阻塞队列 生产者消费者模型 服务器崩坏原因 语法 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 报错 ISO镜像作为本地源 LInux 云电竞 云电脑 todesk glibc 并查集 leetcode Jellyfin 设备 PCI-Express ip 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 监控k8s集群 集群内prometheus 黑苹果 sdkman 无人机 超融合 MNN Qwen 游戏机 pppoe radius hugo Netty 即时通信 NIO 昇腾 npu alias unalias 别名 SWAT 配置文件 服务管理 网络共享 gaussdb nvidia 银河麒麟桌面操作系统 Kylin OS xss 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 自动化编程 聊天室 蓝桥杯 ocr IO模型 ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 g++ g++13 AI agent lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 思科模拟器 Cisco 源码 saltstack regedit 开机启动 qt项目 qt项目实战 qt教程 muduo 京东云 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP XCC Lenovo n8n 工作流 workflow Hive环境搭建 hive3环境 Hive远程模式 匿名管道 繁忙 解决办法 替代网站 汇总推荐 AI推理 算力 CDN Radius googlecloud embedding 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 EMQX 通信协议 hibernate 计算虚拟化 弹性裸金属 flash-attention skynet windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 根服务器 clickhouse 社交电子 同步 备份 建站 LORA NLP epoll laravel grafana 直流充电桩 充电桩 junit chfs ubuntu 16.04 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 显示管理器 lightdm gdm cd 目录切换 阿里云ECS 线程 火绒安全 移动魔百盒 需求分析 规格说明书 matplotlib USB转串口 p2p 飞牛NAS 飞牛OS MacBook Pro 历史版本 下载 服务器主板 AI芯片 less dns HTTP 服务器控制 ESP32 DeepSeek ROS 备选 网站 调用 示例 AD域 反向代理 致远OA OA服务器 服务器磁盘扩容 AutoDL 策略模式 vasp安装 查询数据库服务IP地址 SQL Server db onlyoffice 在线office EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 SVN Server tortoise svn vpn 显卡驱动 粘包问题 wpf 镜像 信创 信创终端 中科方德 PX4 容器技术 Windows MacOS 主从复制 uv 人工智能生成内容 用户缓冲区 seleium navicat 金仓数据库 2025 征文 数据库平替用金仓 cocoapods 企业网络规划 华为eNSP webstorm docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 Mac内存不够用怎么办 信号处理 对比 工具 meld Beyond Compare DiffMerge 项目部署到linux服务器 项目部署过程 CVE-2024-7347 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos ubuntu24 vivado24 yolov8 Attention lio-sam SLAM web3 KylinV10 麒麟操作系统 Vmware autodl Python基础 Python教程 Python技巧 su sudo bcompare aarch64 编译安装 HPC IMM Node-Red 编程工具 流编程 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 wps trea idea iBMC UltraISO 树莓派 VNC 端口 查看 ss deployment daemonset statefulset cronjob 域名服务 DHCP 符号链接 配置 读写锁 python3.11 AI Agent 字节智能运维 嵌入式Linux IPC 影刀 #影刀RPA# 基础环境 gnu 大大通 第三代半导体 碳化硅 word 多端开发 智慧分发 应用生态 鸿蒙OS ai工具 java-rocketmq 嵌入式系统开发 apt rag ragflow 源码启动 GIS 遥感 WebGIS 代理服务器 中兴光猫 换光猫 网络桥接 自己换光猫 ssh远程登录 banner figma 内网环境 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 极限编程 h.264 钉钉 元服务 应用上架 网卡的名称修改 eth0 ens33 cpp-httplib 换源 国内源 Debian 远程服务 OpenManus edge浏览器 浏览器开发 AI浏览器 抓包工具 x64 SIGSEGV xmm0 Typore miniapp 真机调试 调试 debug 断点 网络API请求调试方法 SRS 流媒体 直播 docker desktop image Deepseek-R1 私有化部署 推理模型 网络建设与运维 迁移指南 bat deekseek llama.cpp win服务器架设 windows server 查看显卡进程 fuser dash 正则表达式 ArtTS UOS1070e 程序 RAGFlow 本地知识库部署 DeepSeek R1 模型 css3 nvm whistle sentinel 知识图谱 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 相机 信号 状态模式 TCP协议 环境配置 拓扑图 CentOS 产测工具框架 IMX6ULL 管理框架 nlp log4j 加解密 Yakit yaklang milvus QT 5.12.12 QT开发环境 Ubuntu18.04 Xinference vr 服务器时间 流量运营 hexo 性能分析 rustdesk webdav 程序员创富 健康医疗 互联网医院 免费域名 域名解析 防火墙 NAT转发 NAT Server visual studio Linux的权限 perl 毕昇JDK 李心怡 OpenSSH neo4j 数据库开发 database Unity插件 iventoy VmWare OpenEuler ros sonoma 自动更新 WLAN xshell termius iterm2 SSH 密钥生成 SSH 公钥 私钥 生成 HarmonyOS NEXT 原生鸿蒙 云桌面 微软 AD域控 证书服务器 iperf3 带宽测试 个人博客 软链接 硬链接 我的世界 我的世界联机 数码 ABAP UDP rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK jina 合成模型 扩散模型 图像生成 流水线 脚本式流水线 fstab top Linux top top命令详解 top命令重点 top常用参数 存储维护 NetApp存储 EMC存储 TrueLicense grub 版本升级 扩容 ubuntu20.04 ros1 Noetic 20.04 apt 安装 本地部署AI大模型 游戏开发 composer HarmonyOS OpenHarmony 带外管理 鸿蒙开发 移动开发 virtualbox 大模型推理 捆绑 链接 谷歌浏览器 youtube google gmail 问题解决 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 图形渲染 开发 react native AI-native Docker Desktop 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 kotlin HiCar CarLife+ CarPlay QT RK3588 sequoiaDB 办公自动化 自动化生成 pdf教程 dns是什么 如何设置电脑dns dns应该如何设置 prometheus数据采集 prometheus数据模型 prometheus特点 分布式训练 ubuntu24.04.1 烟花代码 烟花 元旦 性能调优 安全代理 智能音箱 智能家居 arcgis 考研 运维监控 磁盘清理 fast powerpoint dity make pyautogui webgl 玩机技巧 软件分享 软件图标 HAProxy Linux find grep wsgiref Web 服务器网关接口 实战案例 searxng PPI String Cytoscape CytoHubba 代理 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 物联网开发 rime IM即时通讯 剪切板对通 HTML FORMAT 私有化 cfssl ardunio BLE 抗锯齿 IMX317 MIPI H265 VCU ShenTong MySql SEO firewall rclone AList fnOS 邮件APP 免费软件 软件卸载 系统清理 内网服务器 内网代理 内网通信 harmonyOS面试题 MVS 海康威视相机 xpath定位元素 推荐算法 聚类 语音识别 proxy模式 deep learning deepseek r1 强化学习 虚拟局域网 智能电视 离线部署dify 搭建个人相关服务器 MDK 嵌入式开发工具 论文笔记 sublime text AI员工 项目部署 kernel 服务器正确解析请求体 欧标 OCPP IO Qwen2.5-VL vllm 开机黑屏 沙盒 nosql 端口聚合 windows11 达梦 DM8 MobaXterm conda配置 conda镜像源 System V共享内存 进程通信 稳定性 看门狗 NLP模型 大模型部署 接口优化 k8s二次开发 风扇控制软件 macOS 解决方案 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 ranger MySQL8.0 多路转接 hosts 热榜 docker部署Python 浏览器自动化 yum换源 js 网络爬虫 搜狗输入法 中文输入法 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR vu大文件秒传跨域报错cors 虚幻引擎 DIFY Sealos CentOS Stream 论文阅读 西门子PLC 通讯 rpa 本地化部署 网络搭建 神州数码 神州数码云平台 云平台 yolov5 云耀服务器 dock 加速 数字证书 签署证书