边缘计算插件方案 PRD / 产品设计说明书

(基础规则引擎 + 时间窗口 + 状态管理 一体化版本)


一、文档信息

项目 内容
产品名称 边缘计算插件系统(Edge Plugin Framework)
文档类型 PRD / 系统设计说明
适用阶段 第一 + 第二阶段合并版
目标用户 边缘网关运维人员、系统集成工程师、平台运维人员
文档版本 V1.0
编写日期 2026-03-27

二、产品背景与目标

2.1 背景

在边缘侧设备数量快速增长、协议多样化、业务规则不断变化的背景下,传统“采集-上报”模式已无法满足:

  • 本地实时告警与联动控制需求;
  • 边缘侧减负、带宽节省需求;
  • 业务规则快速配置与变更需求;
  • 多项目、多场景的可复用能力需求。

因此需要构建一个插件化、规则驱动、可扩展、可观测的边缘计算能力平台,使边缘节点具备独立决策与分析能力。


2.2 产品目标

本系统目标是构建一个:

  1. 结构清晰、稳定可靠的边缘规则执行框架
  2. 支持:

    • 实时事件处理
    • 时间窗口计算
    • 规则状态管理
    • 位操作与表达式计算
  3. 实现完整数据闭环:

    南向采集 / 北向订阅 → 输入适配 → 调度引擎 → 规则执行 → 结果处理 → 北向输出 / 本地控制

  4. 提供:

    • 可配置规则
    • 可视化运维界面
    • 可观测运行状态
    • 可扩展插件架构

三、总体架构与数据流

3.1 数据流向

系统数据流标准路径如下:

南向采集模块(映射内部影子设备 ) / 北向订阅 → 输入适配器 → 数据管道 → 边缘计算管理器 → 规则执行单元 → 结果处理器 → 北向输出 / 本地动作(南向控制设备)


3.2 系统分层架构

系统采用事件驱动型数据流处理模型,整体架构划分为五个核心层次:

  1. 数据输入层(Input Layer)
  2. 数据调度层(Dispatch Layer)- 包含数据管道(DataPipeline)
  3. 规则执行层(Rule Execution Layer)- 包含边缘计算管理器(EdgeComputeManager)
  4. 结果处理层(Result Handling Layer)
  5. 运维监控层(Observability Layer)

各层职责清晰、解耦明确、支持插件化扩展。


四、核心功能模块设计


4.1 数据输入层(Input Layer)

职责

  • 接收来自南向采集系统或北向订阅系统的实时数据流;
  • 将原始数据转换为统一标准数据结构;
  • 负责数据的基础校验与清洗。

功能要求

  1. 支持多协议接入:

    • Modbus、BACnet、OPC UA、MQTT、HTTP、S7 等;
  2. 统一数据结构抽象:

    • SourceID(数据源ID)
    • Metric(指标名称)
    • Value(数据值)
    • Timestamp(时间戳)
    • Quality(质量标识,可选)
  3. 数据校验能力:

    • 时间戳合理性检查;
    • 数据类型校验;
    • 异常质量标识过滤(通信异常、CRC错误等)。

设计约束

  • 输入层不承担业务计算逻辑;
  • 不进行长期数据缓存;
  • 必须保证输出数据结构一致性。

4.2 数据调度层(Dispatch Layer)

职责

  • 接收标准化数据事件;
  • 根据规则订阅关系,将数据分发给对应规则;
  • 管理规则注册、启停、卸载生命周期。

功能要求

  1. 规则注册与注销;
  2. 支持规则启用 / 停用(不删除配置);
  3. 支持运行时规则热更新(不中断系统运行);
  4. 支持规则执行优先级控制;
  5. 数据管道缓冲与并发处理。

调度模型

  • 每条输入数据事件会广播给所有启用规则;
  • 每条规则独立处理数据,不共享运行上下文(共享源机制留作后续阶段)。

4.3 规则执行层(Rule Execution Layer)

职责

  • 承载具体业务逻辑计算;
  • 基于事件驱动方式执行规则;
  • 输出规则结果(匹配事件、计算值、状态变化等)。

支持规则类型(合并版)

(一)基础规则
  1. 条件判断规则:

    • 阈值告警(>、<、≥、≤)
    • 状态切换(OFF → ON,0 → 1)
    • 变化幅度判断(Δ值超限)
  2. 简单计算规则:

    • 单位换算、线性变换
    • 枚举值映射
    • 固定公式计算
  3. 状态判断规则:

    • 去抖处理(防抖动)
    • 状态保持时间判断

(二)窗口统计规则
  1. 滑动窗口统计:

    • 滑动平均、最大值、最小值、变化率
  2. 跳跃窗口统计:

    • 定期聚合统计、批量报表
  3. 跨窗口对比规则:

    • 当前窗口 vs 上一窗口对比

(三)状态驱动规则
  1. 持续状态规则:

    • 持续超限 N 秒后告警;
    • 连续异常 K 次后告警;
  2. 状态变化规则:

    • 状态从异常恢复到正常时触发;
    • 状态变化才触发动作(防止重复告警);
  3. 有限状态机规则:

    • 支持 NORMAL → WARNING → ALARM → RECOVER 转移模型。

规则生命周期

  • 创建 → 校验 → 启用 → 执行 → 停用 → 删除

执行约束

  • 单次规则执行时间可控(建议 < 20ms);
  • 不允许阻塞主数据通道;
  • 不允许直接操作外部系统,必须通过结果处理层。

4.4 结果处理层(Result Handling Layer)

职责

  • 接收规则执行结果;
  • 根据规则配置触发相应动作;
  • 解耦规则逻辑与外部系统调用。

支持的输出动作类型

1. 北向上报
  • MQTT 发布;
  • HTTP 推送;
  • WebSocket 推送;
  • 数据入云平台接口。
2. 本地动作
  • 本地日志记录;
  • 本地数据库存储;
  • 文件缓存(支持断网续传)。
3. 控制指令
  • 下发控制命令到设备:

    • Modbus 写寄存器;
    • BACnet 写属性;
  • 联动本地系统(空调、照明、门禁等)。

4. 告警通知
  • UI 界面告警提示;
  • 短信 / 邮件 / 企业微信 / 钉钉。
5. 工作流动作
  • 序列执行(sequence):按顺序执行多个动作
  • 延迟(delay):延迟指定时间执行
  • 条件检查(check):根据条件决定是否继续执行

设计原则

  • 所有输出动作均需配置化;
  • 同一规则可绑定多个输出动作;
  • 输出失败必须支持重试或失败记录;
  • 支持批量控制多个设备。

4.5 运维与监控层(Observability Layer)

职责

  • 提供系统运行状态可视化;
  • 支持调试、诊断、审计与性能分析。

基础监控指标

  • 数据输入吞吐量;
  • 规则执行次数;
  • 规则执行耗时分布;
  • 告警触发频率;
  • 输出成功率 / 失败率;
  • 窗口缓存使用率;
  • 状态存储容量与命中率。

运维功能

  • 规则运行状态监控;
  • 规则最近一次触发时间与结果;
  • 最近一次失败原因;
  • 系统健康状态与资源使用情况;
  • 规则执行记录(BBLOT)。

五、时间窗口与状态管理设计(合并能力)


5.1 窗口管理子系统

支持窗口类型

  • 滑动窗口(Sliding Window)
  • 跳跃窗口(Tumbling Window)

窗口参数模型

  • 窗口ID;
  • 窗口类型;
  • 绑定规则ID;
  • 绑定数据源ID;
  • 窗口大小(时间 / 条数);
  • 滑动步长;
  • 最大延迟容忍时间;
  • 数据过期策略;
  • 内存上限。

窗口生命周期管理

  • 规则创建 → 窗口创建;
  • 规则启用 → 窗口激活;
  • 规则停用 → 窗口暂停;
  • 规则删除 → 窗口销毁。

支持窗口配置变更时平滑过渡与资源释放。


5.2 规则状态管理子系统

规则状态模型

每条规则维护独立状态对象,包括:

  • 最近一次触发时间;
  • 最近一次触发值;
  • 当前状态值(NORMAL / WARNING / ALARM / RECOVER);
  • 持续时间计数器;
  • 连续异常计数器;
  • 触发次数统计;
  • 最近一次错误信息。

状态持久化策略

  • 内存态(实时运行);
  • 本地持久态(文件 / 嵌入式数据库);
  • 系统重启后可恢复运行上下文。

状态驱动规则逻辑支持

  • 持续时间条件;
  • 连续次数条件;
  • 状态变化触发条件;
  • 状态转移模型(有限状态机)。

六、配置模型设计


6.1 数据源配置模型

  • 数据源ID;
  • 数据源类型(南向采集 / 北向订阅);
  • 协议类型;
  • 连接参数;
  • 数据点映射关系;
  • 采集频率;
  • 数据质量策略。

6.2 规则配置模型

  • 规则ID;
  • 规则名称;
  • 规则类型(基础 / 窗口 / 状态 / 组合);
  • 绑定数据源;
  • 条件表达式 / 计算表达式;
  • 窗口配置(如适用);
  • 状态条件配置;
  • 输出动作列表;
  • 启用状态;
  • 优先级。

6.3 输出动作配置模型

  • 动作类型(device_control / log / sequence / delay / check);
  • 目标地址或通道;
  • 数据格式;
  • 重试策略;
  • 失败处理策略;
  • 频率限制(interval)。

七、表达式与位操作支持

7.1 表达式语法

  • 支持标准数学运算:+、-、*、/、%、^、()
  • 支持逻辑运算:&&、   、!、==、!=、>、<、>=、<=
  • 支持位操作函数:bitget、bitset、bitand、bitor
  • 支持特殊语法:v.N(1-based索引的位访问)

7.2 位操作功能

  • bitget(value, bitIndex):获取指定位的值
  • bitset(value, bitIndex, bitValue):设置指定位的值
  • bitand(value1, value2):位与操作
  • bitor(value1, value2):位或操作

7.3 表达式预处理

  • 支持 v.N 语法转换为 bitget(v, N-1)
  • 支持 v.bit.N 语法转换为 bitget(v, N-1)

八、批量控制功能

8.1 功能描述

  • 支持在单个动作中控制多个设备
  • 每个目标设备可配置独立的表达式
  • 支持批量位操作和计算

8.2 配置示例

{
  "type": "device_control",
  "config": {
    "targets": [
      {
        "channel_id": "ch1",
        "device_id": "DeviceA",
        "point_id": "p1",
        "expression": "v.1"
      },
      {
        "channel_id": "ch1",
        "device_id": "DeviceB",
        "point_id": "p1",
        "expression": "v.4"
      }
    ]
  }
}

九、异常处理与健壮性设计

系统必须具备以下能力:

  1. 窗口异常处理:

    • 缓存溢出保护;
    • 数据格式错误过滤;
    • 时间戳异常修正或丢弃;
  2. 状态异常处理:

    • 状态对象损坏恢复机制;
    • 状态持久化失败重试;
    • 状态与规则配置不一致修复;
  3. 规则执行异常处理:

    • 单规则异常不得影响其他规则;
    • 异常必须记录并可追溯;
    • 支持规则自动降级或自动禁用(可配置)。
  4. 表达式异常处理:

    • 表达式语法错误降级到静态值;
    • 运行时错误捕获与记录;

十、前端页面功能设计(管理控制台)

本系统需提供完整的可视化管理界面,支持配置、监控、调试与运维。 需要增加的页面如下:


10.1 系统总览页(Dashboard)

功能

  • 系统运行状态概览:

    • 当前在线数据源数;
    • 启用规则数;
    • 当前告警数;
    • 数据输入吞吐量;
    • 输出成功率;
  • 规则执行趋势图;
  • 告警趋势图;
  • 系统资源使用情况(CPU / 内存 / 窗口缓存 / 状态存储)。

10.2 数据源管理页面

功能

  • 数据源列表展示:

    • 数据源ID、类型、协议、状态;
  • 数据源新增 / 编辑 / 删除;
  • 数据点映射配置;
  • 采集频率配置;
  • 数据质量策略配置;
  • 实时数据预览;
  • 数据源连接测试与状态检测。

10.3 规则管理页面

功能

  • 规则列表:

    • 规则名称、类型、状态、绑定数据源、最近触发时间;
  • 规则创建向导:

    • 选择数据源;
    • 选择规则类型;
    • 配置条件表达式 / 窗口参数 / 状态条件;
    • 配置输出动作;
  • 规则启用 / 停用 / 删除;
  • 规则优先级调整;
  • 规则配置导入 / 导出。

10.4 规则运行状态与调试页面

功能

  • 单规则运行状态详情:

    • 当前状态值;
    • 最近一次触发值与时间;
    • 连续异常次数;
    • 持续时间计数;
  • 规则执行历史记录:

    • 时间、输入值、计算结果、输出动作结果;
  • 规则测试功能:

    • 手动输入测试数据;
    • 模拟窗口数据;
    • 预览规则执行结果;
  • 规则异常与错误日志查看。


10.5 窗口管理页面

功能

  • 窗口实例列表:

    • 绑定规则、窗口类型、窗口大小、缓存使用率;
  • 窗口参数配置查看与编辑;
  • 窗口数据实时预览;
  • 窗口内数据统计视图(均值、最大、最小等);
  • 窗口资源占用告警配置。

10.6 状态管理页面

功能

  • 规则状态列表:

    • 当前状态、持续时间、触发次数;
  • 状态历史记录查询;
  • 状态持久化策略配置;
  • 状态恢复测试;
  • 状态异常修复操作。

10.7 输出动作与通道管理页面

功能

  • 输出通道配置(MQTT、HTTP、数据库等);
  • 输出动作模板管理;
  • 输出动作绑定规则配置;
  • 输出失败记录查看;
  • 输出重试策略配置;
  • 输出通道连通性测试。

10.8 告警中心页面

功能

  • 当前告警列表;
  • 告警历史记录;
  • 告警级别分类与过滤;
  • 告警确认 / 清除;
  • 告警通知策略配置(短信、邮件、IM 等)。

10.9 日志与审计页面

功能

  • 系统运行日志;
  • 规则执行日志;
  • 输出动作日志;
  • 操作审计日志(配置变更、规则启停、数据源修改等);
  • 日志过滤、搜索、导出。

10.10 系统设置页面

功能

  • 全局系统参数配置;
  • 默认窗口参数模板;
  • 默认规则模板;
  • 数据保留策略;
  • 备份与恢复配置;
  • 系统升级与插件管理。

十一、非功能性需求

11.1 性能要求

  • 单规则执行时间建议 < 20ms;
  • 窗口缓存读写延迟 < 5ms;
  • 状态读写延迟 < 5ms;
  • 支持高频数据流下稳定运行。

11.2 可扩展性要求

  • 支持新增协议插件;
  • 支持新增规则类型插件;
  • 支持新增输出通道插件;
  • 支持后续引入共享源、并行调度、分布式执行能力。

11.3 可靠性要求

  • 系统异常不影响整体运行;
  • 单规则异常不影响其他规则;
  • 支持系统重启后状态恢复;
  • 支持断网续传与本地缓存。

十二、交付成果标准

系统达到以下条件即视为合格交付:

  1. 支持标准数据流闭环(采集 → 规则 → 输出 / 控制);
  2. 支持基础规则、窗口规则、状态规则三大类;
  3. 支持规则热启停与动态更新;
  4. 支持窗口与状态可视化管理;
  5. 支持至少两种输出通道与一种控制动作;
  6. 支持系统运行监控与规则执行可观测;
  7. 支持位操作与表达式计算;
  8. 支持批量控制功能;
  9. 支持工作流动作(序列、延迟、条件检查);
  10. 系统稳定运行无明显性能退化。