Skip to content

产品概览

NG Gateway 是一套面向 工业/边缘场景 的高性能 IoT 网关:以 Rust + tokio 为运行时基础,用 背压友好的数据管线 把南向多协议采集数据标准化,并以北向插件可靠转发到平台,同时提供运行时可插拔插件化扩展能力

核心优势

端到端系统设计:为什么能跑得快、跑得稳(Backpressure-first)

  • 有界队列 + 背压传播:下游变慢时系统自动“减速”,避免无界堆积导致 OOM
  • 故障域隔离:以设备/通道/插件为粒度隔离任务,单点异常不扩散
  • 结构化并发:stop/reload 有干净的取消路径与资源回收能力
  • 可观测性内建:队列深度、重试/退避、延迟、丢弃都能被度量与告警,不靠“感觉”运维
  • 统一模型与可组合流水线:协议/平台/规则的变化被限制在清晰边界内,核心演进成本可控

丰富的内置南向驱动与北向插件(开箱即用)

  • 南向驱动体系覆盖 Modbus / OPCUA / S7 / DNP3 / Ethernet-IP / IEC104 / DLT645 / CJT188 等多协议(内置 + 可扩展)
  • 北向插件体系覆盖 MQTT / Kafka / Pulsar / ThingsBoard 等多平台对接(可按需启用,隔离风险与变更)
  • 工程化交付:插件/驱动具备元信息探测(probe)、动态schema扫描(excel导入模版及ui层渲染)、版本与平台信息校验,便于治理与运维

南向采集“批处理计划算法”(现场友好、性能友好)

  • 批量读写与拆分策略:针对 Modbus / S7 等协议的帧长/PDU/时延约束,按点位集合自动分组与拆包,大量减少往返与系统调用开销
  • 面向异常的调度策略:设备忙、超时、噪声帧、短暂断连等场景可恢复处理,并通过退避/限流把抖动限制在局部
  • 资源可控:热点路径避免频繁分配,优先使用预分配、复用与零拷贝解析等最佳实践

大规模并发与资源可控(面向生产)

  • 海量设备并发模型:以设备/通道为粒度组织任务,结合有界队列实现背压传播,避免“慢平台拖垮全局”
  • 故障域隔离:把失败限制在设备/通道/应用(App)/插件边界内,避免级联雪崩
  • 可控降级路径:当下游不可用或拥塞时,优先选择“减速/丢弃/缓存/回执失败”等可解释策略,而不是静默堆积

便捷部署与多架构适配(低成本落地)

  • 低资源占用:Rust 原生二进制更利于低内存边缘环境(容器/裸机均可)
  • 多架构交付:面向 x86_64 / aarch64 等常见架构适配,插件/驱动按平台拆分交付
  • 多样部署方式:单机、Docker、Helm、离线包等方式可选,满足从试点到规模化的交付路径

运行时可插拔扩展(Web-UI / HTTP API 多入口)

  • 热插拔安装/卸载:支持通过 HTTP API 上传并安装南向驱动与北向插件(以及 Web-UI 的可视化入口)
  • 治理约束清晰:当驱动仍被南向通道引用、或插件仍被北向应用(App)引用时,系统会阻止卸载,避免运行中断与配置漂移
  • 扩展不污染核心:高变化能力(平台适配、行业规则、增强处理)优先沉淀在插件侧,核心保持稳定抽象与高吞吐路径

身份验证与安全性(默认安全基线)

  • 加密传输:API 服务支持 TLS/HTTPS 加密链路,降低边缘侧明文传输风险
  • 认证授权:支持 JWT 认证与 RBAC/权限规则,满足多角色的运维与审计需求
  • 供应链治理:插件/驱动具备探测与校验信息(版本/平台/校验和等),便于发布、回滚与审计

统一数据模型与数据类型(让“对接”可复用)

  • 统一语义:把“协议差异”限制在 driver 内,把设备/点位/值/时间戳/质量位等语义上收为统一模型
  • 多载荷策略:北向可选 JSON/Proto/Raw(透传) 等载荷策略,兼顾调试效率与吞吐性能

一键进入更多垂直场景(只换插件,不改核心)

  • 上层应用与行业系统:MES / ERP / SCADA / 能耗 / 产线看板等
  • 数据处理与存储:大数据平台、时序库、湖仓、告警与工单系统
  • AI 分析与边缘智能:边缘侧预处理/聚合/过滤,云端 AI 推理/异常检测的闭环接入

核心概念

术语与边界

  • gateway core(核心):高吞吐异步管线与资源治理中心,提供背压、限流、重试/退避、观测与生命周期管理。
  • southward(南向体系):面向现场设备的接入边界(driver + channel + collector 等),负责连接、读写、解析、容错,并把协议语义映射为统一数据模型。
  • driver(驱动):面向一种协议或设备族的能力包,负责连接、读写、解析与容错;把协议语义映射为统一模型。
  • channel(通道):南向侧的连接与资源边界,通常对应一条串口、一条 TCP 连接或一个共享会话(通常它是一个南向驱动的实例化)。
  • device(设备):现场真实存在的对象(表计、PLC、传感器…),具备唯一标识、连接信息、点位集合与运行状态。
  • point(点位/数据点):设备上可读写的“变量”(寄存器/对象/节点)。point 是统一数据模型的最小粒度之一。
  • collector(采集器):运行时的采集执行单元,把采集策略(周期/批处理/订阅)转为可预测的调度行为。
  • northward(北向体系):平台连接器集合(MQTT/Kafka/Pulsar/ThingsBoard等),负责可靠投递与上下行闭环。
  • plugin(插件):运行时可插拔的扩展单元,通常承载 northward 平台对接、以及统一模型上的转换/增强能力;插件应具备清晰的资源边界与可回收性。
  • app(应用):北向侧的“业务编排单元”,用于把 southward 的数据流与 northward 插件/路由策略关联起来(通常它是一个北向插件的实例化)。

记忆法

southward/northward 是“边界面”,core 是“交通枢纽”。

统一数据模型:为什么它是“网关的心脏”

现实世界协议千差万别:Modbus 是寄存器,S7 是 DB/变量,OPC UA 是 NodeId,IEC104 是遥测/遥信……如果每个协议都定义一套上报结构,北向对接会迅速失控。

统一数据模型的目标是:

  • 让北向只关心“业务语义”:设备、点位、值、时间戳、质量位、事件、动作、控制。
  • 让规则/转换可复用:同一条规则可以对 Modbus/S7/OPC UA 的同类点位生效。
  • 让可观测性可聚合:吞吐、延迟、错误率能够按 device/driver/channel/app 维度统计。

TIP

建议把“协议地址/寄存器号/NodeId”作为 meta 存放(如果必要),不要让它污染北向业务字段。

core pipeline:把一切串起来的数据流

一个典型的数据流(上行)是:

  1. collector 触发采集(或订阅回调触发)
  2. driver 执行读写并解析
  3. 产出统一事件/点位值
  4. core 做可选的转换/过滤/聚合(边缘计算)
  5. northward 编码并发送
  6. observability 记录日志与指标

对应的下行(控制)是反向流动:

  1. northward 收到平台命令
  2. core 校验/鉴权/限流
  3. southward 找到目标 device/driver
  4. driver 执行写入/控制
  5. 返回执行结果并回执(可选)

生命周期:启动、运行、停止(优雅退出)

在边缘网关里,“优雅退出”不是锦上添花,而是避免现场事故的刚需:

  • 启动:加载配置 → 初始化日志/metrics → 加载驱动/插件 → 创建设备任务 → 建立北向连接
  • 运行:采集/上报循环 + 健康检查(可选:热更新/热插拔)
  • 停止:停止采集调度 → 取消 in-flight 任务(带超时)→ 关闭连接/串口 → flush 缓冲(可选)→ 退出

最佳实践

无论 stop 还是 reload,都要有“上限时间”

基于 MIT 许可发布.