边缘计算高阶功能
(融合重构版:与 Shadow + Points + OPC UA 架构一致性)
强约束(工业化一致性):
- 北向零改动,完全复用现有 MQTT 与 OPC UA Server。
- 共享源与规则不得直接订阅点位变化;唯一输入源为设备级原子快照(Shadow)。
- 发布由 Points Commit 唯一触发;控制统一走工作流闭环(Check → Delay → Write → Confirm)。
统一数据流:
南向驱动 → Channel → Device → Points → Shadow Device(原子快照)
→ Snapshot Bus(共享源层) → Dispatch → Rule Execution Pool → Result Processor
→ Workflow / Log / Commit → Points Commit → MQTT & OPC UA(复用)
优化阶段:共享源与并发优化设计(高性能边缘计算)
一、阶段目标
高级阶段目标是在前两阶段(基础规则 + 时间窗口 + 状态管理)的基础上,实现:
- 共享源机制:同一数据源可被多规则共享,避免重复采集与重复计算;
- 高并发与异步执行优化:支持大量规则与高频数据流同时执行;
- 分布式/集群能力(可选):在多节点边缘环境下分布式协作处理;
-
高级数据计算能力:
- 窗口间跨时间计算;
- 规则组合和复杂逻辑;
- 批量聚合、趋势预测、异常检测;
-
运维与监控升级:
- 系统性能监控;
- 窗口与状态资源使用优化;
- 并发规则调度监控。
二、总体架构扩展
2.1 数据流与共享源设计
数据流路径升级为:
南向采集 / 北向订阅 → 输入适配器 → 共享源缓存(数据快照) → 调度引擎 → 规则执行单元 → 结果处理器 → 北向输出 / 本地控制
共享源缓存(Shared Source Layer)
- 以 Shadow 快照为唯一源,生成版本化共享事件(SnapshotEvent),避免重复采集;
- 可供多个规则并发订阅,避免重复计算;
- 支持事件缓存、去重、异步分发与优先级(Pack 高优先)。
SnapshotEvent 定义与触发
type SnapshotEvent struct {
DeviceID string
Version uint64
Data map[string]Value
Timestamp time.Time
Quality QualityState
}
- 触发:
OnSnapshot(DeviceID, Version);不使用OnPointChange。 - 节奏:窗口合并(~250ms);高负载时对 Cell 分区降采样(5s→10s)。
2.2 分层架构
新增 共享源层(Shared Source Layer),整体架构分层如下:
- 数据输入层(Input Layer)
- 共享源层(Shared Source Layer)
- 数据调度层(Dispatch Layer)
- 规则执行层(Rule Execution Layer)
- 结果处理层(Result Handling Layer)
- 运维监控层(Observability Layer)
三、核心功能模块设计
3.1 共享源缓存机制
-
功能描述:
- 数据源采集后的原始数据缓存;
- 支持多规则订阅和异步分发;
- 数据可根据规则需求自动转换格式或单位;
-
关键特性:
- 去重与缓存策略(环形缓冲、滑动队列等);
- 异步分发队列(保证规则不阻塞主通道);
- 支持共享源的状态信息(最近更新时间、数据质量、订阅规则列表)。
3.2 高并发调度与执行优化
-
功能目标:
- 支持大量规则同时处理高频快照事件;
- 保证单条规则执行不阻塞其他规则;
-
实现策略:
- 异步事件驱动(以 SnapshotEvent 为触发源);
- 并行规则线程池与优先级调度(Pack 高优先);
- 批量数据处理机制(窗口聚合、批量触发动作);
- 超时保护、重试与熔断(失败不影响采集与北向发布)。
3.3 高级规则能力
3.3.1 基于版本的跨窗口规则
- 基于
Snapshot Version的滑动/跳跃窗口; - 支持趋势分析、累计统计、增量计算;
- 规则只关心版本递增,不依赖点位更新顺序。
3.3.2 组合规则优化
- 多条件组合(AND / OR / NOT)规则支持;
- 支持跨数据源、跨窗口、跨状态的联合判断;
- 支持条件优先级和条件权重。
3.3.3 异常检测与预测规则
- 支持突变检测、波动率异常、时间序列预测(简单趋势);
- 支持自动生成告警或控制动作。
3.4 分布式/集群执行(可选)
-
分布式节点协作(前提约束):
- 每节点仅维护本地设备 Shadow;不跨节点合并同一设备状态;
- 规则可跨节点并行,Snapshot 不跨节点混合;
- 输出动作集中或分散执行,统一走工作流闭环。
-
数据同步策略:
- 使用轻量化消息队列分发快照事件;
- 以设备边界保障共享源跨节点一致性。
3.5 运维与监控升级
-
性能监控:
- 每条规则平均执行时间;
- 规则并发数;
- 窗口缓存使用率;
- 状态存储访问延迟;
- 共享源分发延迟。
-
异常告警:
- 共享源延迟/缓存溢出告警;
- 规则执行失败告警;
- 系统资源压力告警。
-
调优工具:
- 可动态调整规则优先级、线程池大小、窗口缓存大小;
- 支持负载均衡和节点扩容。
四、配置模型扩展
4.1 共享源配置字段
- 设备ID(源自 Shadow)
- 窗口合并时长(window_ms,建议 250)
- 队列容量与优先级(Pack 高优先)
- 异步分发开关
- 订阅规则列表
- 数据过期策略
4.2 高并发规则配置字段
- 优先级
- 异步执行开关
- 最大并行线程数
- 批量触发阈值
4.3 高级规则配置字段
- 跨窗口引用(基于 Snapshot Version)
- 组合逻辑表达式
- 异常检测阈值
- 预测规则参数(简单趋势预测公式)
七、配置示例(现场可直接启用)
# system.yaml(节选)
snapshot_bus:
window_ms: 250 # 快照事件合并窗口
queue_capacity: 10000 # 事件队列容量
async: true # 异步分发开关
priority: # 设备/分区优先级
pack: high
cell: normal
subscriptions: # 订阅列表(按设备与模式)
- device: rack_01
include: ["pack_*", "cell_*", "alarm_*"]
exclude: []
- device: rack_02
include: ["pack_*", "alarm_*"]
exclude: []
rule_engine:
thread_pool:
size: 32 # 规则线程池大小
max_queue: 5000 # 规则任务队列容量
scheduling:
priority_enabled: true
batch_window_ms: 250 # 规则批量触发窗口
time_window:
enabled: true # 基于 Snapshot Version 的窗口计算
points_commit:
differential: true # 差量写回 Points,触发北向发布(MQTT/OPC UA 复用)
五、前端页面功能设计(高级阶段增强)
-
共享源管理页面:
- 数据源共享状态展示;
- 订阅规则列表;
- 缓存使用率、最新数据、数据质量;
- 异步分发延迟与异常告警。
-
高并发规则监控页面:
- 规则执行线程池状态;
- 执行延迟分布图;
- 并发规则数、批处理统计;
- 高负载告警。
-
跨窗口/组合规则管理:
- 可视化配置跨窗口依赖;
- 组合条件拖拽配置;
- 多数据源关联规则可视化。
-
分布式节点监控:
- 节点状态、共享源同步状态;
- 节点负载、规则执行状态;
- 输出动作分布和成功率。
-
性能调优控制台:
- 动态调整线程池大小、规则优先级;
- 窗口缓存调整;
- 共享源分发策略调整。
六、交付成果标准
- 共享源机制以 Shadow 快照为唯一源,多规则共享,无重复采集与重复计算;
- 支持高并发规则执行,单规则执行不阻塞主数据通道;
- 基于版本的跨窗口、组合规则与异常检测稳定运行;
- 系统性能指标可监控并优化(事件分发/窗口缓存/并发线程池等);
- 可选分布式执行,Snapshot 按设备边界确保一致;
- 前端可监控共享源、规则执行、窗口缓存、状态存储和性能指标;
- 系统稳定运行,无明显性能退化或数据丢失,且北向零侵入。