跳转到内容

部署策略

部署策略

本节介绍 Node-RED 的部署策略和最佳实践。学习完成后,您将能够:

  • 理解 Node-RED 的部署选项
  • 选择适当的部署范围
  • 管理部署流程和版本控制
  • 处理部署中的常见问题

Node-RED 提供三种部署范围:

┌──────────────────────────────────────────────────┐
│ Deploy Button Options │
├──────────────────────────────────────────────────┤
│ │
│ 1. Full Deploy (完整部署) │
│ └── 重新部署所有 Flow │
│ │
│ 2. Modified Flows Only (仅修改的 Flow) │
│ └── 只部署被修改的 Tab 中的 Flow │
│ │
│ 3. Modified Nodes Only (仅修改的节点) │
│ └── 只部署被修改的特定节点 │
│ │
└──────────────────────────────────────────────────┘
部署模式速度影响范围推荐场景
Full Deploy所有 Flow首次部署、大版本更新
Modified Flows当前 Tab日常开发
Modified Nodes单个节点快速调试和修复
// 在 Function 节点中修改代码
msg.payload = processData(msg.payload);
return msg;

编辑时注意:

  • 未部署的节点显示蓝色圆点
  • 可以随时保存草稿到本地
  • 多次编辑后统一部署
Terminal window
# ✅ 检查项:
# - 所有节点配置完整 (无红色三角形)
# - MQTT 连接状态正常 (绿色)
# - Debug 节点已移除或禁用
# - Flow 逻辑经过测试
# 检查未配置节点
# 红色三角形 = 配置不完整
# 红色圆点 = 节点处于错误状态
部署流程:
1. 点击 Deploy 按钮
2. 确认部署范围
├─ Ctrl + Enter (快速部署全部)
└─ Ctrl + Shift + Enter (部署修改的节点)
3. 等待部署完成
4. 验证 Flow 运行状态
Terminal window
# 1. 在测试环境验证 Flow
# 2. 导出 Flow JSON 备份
# 3. 导入到生产环境
# 4. 逐步部署 (Canary)
# 导出备份
curl -X GET http://localhost:1880/flows \
-H "Content-Type: application/json" \
-o backup-flows.json
# 导入备份
curl -X POST http://localhost:1880/flows \
-H "Content-Type: application/json" \
-d @backup-flows.json
阶段 1: 部署到测试环境
→ 验证 Flow 逻辑和数据处理
阶段 2: 部署到预生产环境
→ 使用真实数据验证
阶段 3: 部署到生产环境
→ 监控运行状态
→ 准备回滚方案
Terminal window
# 方法 1: 替换 flows.json
docker cp backup-flows.json nodered:/data/flows.json
docker restart nodered
# 方法 2: 使用不同版本
# 维护多个 Flow 版本
flows-v1.json # 稳定版
flows-v2.json # 测试版
flows.json # 当前运行版
# 方法 3: 通过 API 恢复
curl -X POST http://localhost:1880/flows \
-H "Content-Type: application/json" \
-d @flows-v1.json
Terminal window
# 1. 在编辑器中修改 Flow
# 2. 使用 "Modified Nodes Only" 部署
# 3. 用测试数据验证
# 4. 确认无误后再完整部署
# 快捷键
Ctrl + S # 保存当前 Flow(不部署)
Ctrl + Enter # 完整部署
Ctrl + Shift + Enter # 仅部署修改的节点
Terminal window
# 1. 备份当前 Flow
curl -X GET http://admin:password@localhost:1880/flows \
> /backup/flows-$(date +%Y%m%d).json
# 2. 导入新 Flow
curl -X POST http://admin:password@localhost:1880/flows \
-H "Content-Type: application/json" \
-d @new-flows.json
# 3. 验证运行
# 4. 保留旧备份至少 7 天
Terminal window
# 1. 直接修改问题节点
# 2. 使用 "Modified Nodes Only" 快速部署
# 3. 验证修复效果
# 4. 事后补充完整的测试流程
notify-on-deploy.js
// 部署状态监控
// 在 Function 节点中添加部署通知
if (context.global.deployed) {
// 部署完成后的通知
var deployMsg = {
payload: {
event: "deploy",
timestamp: Date.now(),
status: "success"
}
};
node.send(deployMsg);
}

Q1: 部署会中断正在运行的流程吗?

Section titled “Q1: 部署会中断正在运行的流程吗?”

A: Node-RED 的部署是热更新,正在处理的消息会完成当前节点后再切换到新 Flow。大规模 Flow 更新可能造成短暂延迟。

A: 建议:先用测试环境验证、分阶段部署、准备好回滚方案、在低峰期部署。

A: 使用 Git 管理 Flow JSON 文件,通过 CI/CD 自动化部署流程。每个版本记录变更日志。

推荐做法:

  • 开发时使用 “Modified Nodes” 快速部署
  • 生产环境使用 “Full Deploy” 确保一致性
  • 部署前备份当前 Flow
  • 编写部署计划和时间窗口
  • 维护版本变更日志

避免做法:

  • 在生产环境直接修改 Flow
  • 频繁完整部署(影响性能)
  • 部署后不验证
  • 缺少回滚方案
  • 多人同时编辑同一 Flow
  1. 三种部署范围满足不同场景需求
  2. 快速部署 (Modified Nodes) 适合开发和调试
  3. 完整部署 (Full Deploy) 适合生产环境
  4. 备份和回滚方案是生产部署的基本保障
  5. 使用 API 可以自动化部署流程

正在开发商业 IoT 产品?

我们提供 ESP32 ODM 定制设计与制造服务。从原型到量产——编写这套教程的团队,可以和你一起实现。

联系我们 →