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

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

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

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