跳到主要内容

系统架构设计

设备 → Go → Node → Vue。禁止跳层。插件可换。同一边界从单机长到集群。

架构不是画给架构师看的装饰图,而是为首页那两笔账服务的:少人天、数据敢用。
设计原则见 设计理念;问题定义见 我们主要解决什么问题。

为什么必须这样分​

若架构允许……现场会变成……凌点域的硬规矩
前端直连 Go / Broker权限乱、版本绑死、远程说不清禁止跨层直连
协议写死在核心里每加设备就改内核、等人窗协议热插拔
只存「算干净」的数排障只能到现场抓包原始 + 标准双轨
配置散落在数据面多租户与 OTA 真相源混乱配置 / 权限只在 Node
单机一套、集群另一套扩容等于推倒重来边界不变再扩容

一句话:Device → Go → Node → Vue,各层只跟邻居说话。

总览图​

全屏打开架构图

谁干什么、谁不干什么​

层组件干不干
边缘设备 / 网关采集、执行下行—
消息gmqttMQTT 接入、Topic业务解析、权限
数据面Go server订阅、解码、规则/OTA 执行、双轨落库、事件总线多租户 UI、业务编排真相源
控制面NodeHTTP API、实时推送、配置/OTA 编排、权限、开放接口持有设备长连接
展示Vue / 小程序可视化与现场作业直连 Go 或 Broker
网关Nginx反代与静态资源业务逻辑
存储TD / PG / Redis / Manticore(可选)时序+全量上行 / 业务权威 / 热数据 / 全文检索—

硬规矩(与实现对齐):

  • Go 不托管 Broker,只当 Client 连 gmqtt。
  • 业务配置、固件、任务、权限 只在 Node。
  • 邻居通信,禁止跳层。

消息怎么走:少改固件、少猜意图​

上下行靠约定 Topic,协议差异消化在插件,上层只认 标准设备消息信封。

全屏打开消息总线图

Topic(示意): {PK}/{GW}/self/{module}/{u|d}

方向典型
u设备 → 平台属性、事件、OTA 进度、系统消息
d平台 → 设备服务、配置推送、OTA 下发
  • 主路径:MQTT + gmqtt。
  • 扩展:Modbus / HTTP / TCP / UDP 等汇入同一语义。
  • 上行:接入 → 插件解码 → 双轨落库 → 规则/转发 → 事件总线 → 实时推送。
  • 下行:管理端/API → Node 编排 → Go 编码 → gmqtt d → 设备。

对现场的意义:厂商按 Topic/插件接;运维远程看原文+标准;前端永远不碰 Broker。

数据怎么流:一次调通、远程说清​

流水线为「接得上、追得回、转得出」服务,不是五层名词游戏。

全屏打开数据流图

段凌点域落点服务哪把尺子
Adaptergmqtt / 网络入口 / 网关一次调通
UplinkGo server 上行分发一次调通
Processor插件 → 标准信封一次调通
StorageTD 全量上行;Redis;PG远程说清 · 数据敢用
Forwarder数据转发到外部系统少绑架
DownlinkNode → Go 编码 → gmqtt d控得住、可审计

编解码​

全屏打开编解码图

原始 → 传输(可压缩)→ 解析 → 验签/归一化 → 标准设备消息 → 规则 / OTA / 落库 / 推送。

插件从哪来​

全屏打开插件加载图

Node 协议仓库发布 → Go server 拉取激活包 → 热加载(原生插件 / WASM / 内置)→ 上行解码。
新协议装模块,不改 Vue。

存在哪:双轨是数据敢用的底座​

存哪存什么为何这样
TD遥测 + 全量上行原文可配保留周期;远程排障主存
PG业务、OTA、日志索引控制面权威源
Redis热数据、影子、规则短时效,不扛长期历史
Manticore(可选)全文检索按部署启用

没有专职数据团队时,原始可追 + 标准可算 + 标准参数口径,比再堆一张「治理中台」海报管用。

人怎么连上平台​

通道用途
HTTP API(管理 / 开放 / 移动)经 Node
实时推送经 Node(不直连 Go)
Vue 管理端 + 小程序同一控制面;现场用业务词

这是「能力交到现场」的技术前提:手机能办的,不必等人带抓包工具。

阶段一:单机起步​

逻辑分层不变,进程可以挤在一台小机器上——先跑起来,再按同一边界加机。

全屏打开部署图

后续:多实例、独立 gmqtt、消息队列等抬吞吐;禁止跳层与双轨规矩不换。容量见 性能测试报告。

架构 ↔ 三把尺子​

尺子架构落点
一次调通插件 / AI 接入、标准信封、Topic 契约
远程说清双轨、追踪、全量上行、实时推送
数据敢用标准参数路径、业务只认物模型、脏数据不直灌业务
现场故事架构如何撑住
工厂能管规则在 Go 近实时;编排与权限在 Node
园区台账业务模块挂 Node;小程序同接口
OEM 白标协议仓库 + 私有化同边界
集成商少驻场远程双轨 + 禁止跳层带来的可定位性

下一步​