跳转到内容

Node-RED 架构概述

Node-RED 架构概述

本节介绍 Node-RED 的整体架构和核心概念。学习完成后,您将能够:

  • 理解 Node-RED 的运行时架构
  • 掌握 Node-RED 的核心组件和功能模块
  • 向客户解释 Node-RED 在 IoT 方案中的定位
  • 理解软硬件任务分离原则

Node-RED 由三个核心部分组成:

┌──────────────────────────────────────────────────┐
│ Node-RED Runtime │
├──────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌──────────────────────┐ │
│ │ Flow Runner │ │ Node Manager │ │
│ │ 流程执行引擎 │ │ 节点管理/发现 │ │
│ └─────────────────┘ └──────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌──────────────────────┐ │
│ │ Context Store │ │ Storage Layer │ │
│ │ 上下文存储 │ │ 持久化存储 │ │
│ └─────────────────┘ └──────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌──────────────────────┐ │
│ │ HTTP Admin API│ │ MQTT Client │ │
│ │ 编辑器接口 │ │ 消息代理通信 │ │
│ └─────────────────┘ └──────────────────────┘ │
├──────────────────────────────────────────────────┤
│ Node-RED Editor (Web UI) │
│ http://localhost:1880 │
└──────────────────────────────────────────────────┘

Node-RED 运行时负责:

  • 加载和执行 Flow 定义
  • 管理节点间的消息传递
  • 处理节点生命周期(初始化、运行、停止)
  • 管理上下文数据存储

基于 Web 的 Flow 编辑器:

  • 拖拽式节点配置
  • 实时 Flow 可视化
  • 节点配置面板
  • 调试消息面板
  • 节点安装管理器

管理所有已安装的节点:

  • 内置节点(MQTT, HTTP, Function 等)
  • 社区节点(需手动安装)
  • 本地节点(自定义开发)

Node-RED 与 ESP32 之间遵循明确的职责分离:

ESP32 (硬件层) Node-RED (软件层)
┌──────────────────┐ ┌──────────────────┐
│ 传感器数据采集 │ ── MQTT ──→ │ 数据处理逻辑 │
│ 执行器控制 │ ←─ MQTT ── │ 业务规则引擎 │
│ │ │ 条件判断 │
│ 原始任务: │ │ 数据存储 │
│ - 读取传感器 │ │ 可视化 │
│ - 控制 GPIO │ │ 告警通知 │
│ - 发送/接收 MQTT │ │ 系统集成 │
└──────────────────┘ └──────────────────┘
场景纯 ESP32 方案Node-RED 方案
修改逻辑需重新编译上传在线修改 Flow
批量更新逐个设备 OTA一次修改全局生效
复杂性简单条件尚可可处理复杂业务
集成有限无限(4000+ 节点)
维护困难简单
// ESP32 端:只发送原始数据
// MQTT Topic: factory/temperature
// 消息: {"temperature": 25.3, "device": "SENSOR-01"}
// Node-RED 端:处理所有业务逻辑
// - 判断温度是否超过阈值
// - 触发降温设备开关
// - 记录告警到数据库
// - 发送通知给值班人员
输入节点 (触发/接收消息)
处理节点 (Function, Switch, Change)
输出节点 (MQTT, HTTP, DB)
Terminal window
# Docker 快速启动
docker run -d \
--name nodered \
-p 1880:1880 \
-v nodered_data:/data \
nodered/node-red:latest
# 访问编辑器
# http://localhost:1880
特性参数
运行时Node.js
编程语言JavaScript
默认端口1880
消息格式JSON 对象
内置节点30+
社区节点4000+
Docker 镜像< 100MB
启动时间~3 秒

A: 基本使用不需要编程,通过拖拽节点和配置即可完成。高级功能(Function 节点)需要 JavaScript 基础,但社区有大量示例可直接使用。

A: Node-RED 已广泛用于生产环境。通过持久化配置、上下文备份和错误处理机制,可以实现高可靠性。

A: 不是替代关系而是分工协作。MCU 负责硬件控制和数据采集,Node-RED 负责业务逻辑和系统集成。

  1. Node-RED 是 IoT 架构中的核心自动化引擎
  2. 软硬件分离原则:MCU 负责硬件,Node-RED 负责逻辑
  3. 可视化编程降低开发门槛
  4. 4000+ 社区节点提供丰富的集成能力
  5. 通过 MQTT 与 ESP32 设备通信