5. 实现架构
工程铁律: 任何性能优化不得以牺牲稳定性为代价;任何架构优化不得增加系统恢复复杂度。
开发优先级与验收标准见 开发原则与验收标准。
2026-06-30 更新:采集调度已由 ScanEngine 调度驱动内核 统一实现,详见
docs/TODO/ScanEngine重构方案.md与docs/edge/边缘网关架构设计总览.md。
5.1 核心组件
| 组件 | 代码位置 | 职责 |
|---|---|---|
| ScanEngine | scan_engine.go, scan_engine_compat.go |
10ms Tick、PriorityQueue、ScanTask 状态机、防饿死、失败退避 |
| ExecutionLayer | execution_layer.go |
Serial / Parallel / Limited 三路分发 |
| SerialQueueManager | serial_queue_manager.go |
每 deviceKey / 共享 channel 一 worker,硬隔离 |
| BackpressureController | backpressure_controller.go |
全局 512 / 单设备 8 / 1000 req/s |
| ResourceController | resource_controller.go |
Goroutine / Connection 全局限额 |
| ChannelManager | channel_manager.go |
CRUD + ScanEngineAdapter + finalizeScanCollect |
| ConnectionManager | driver/connection_manager.go |
唯一 dial Owner;EnsureConnected / ScheduleReconnect |
| RTTManager | rtt_manager.go |
RTT 统计与 EWMA(读路径闭环待 Q3) |
| MTUManager | mtu_manager.go |
MTU 动态协商 |
| GapOptimizer | gap_optimizer.go |
Gap 合并策略(ExecutionLayer 消费待 Q3) |
| — | 已移除,由 ScanEngine 替代 | |
| — | 画像算法保留为独立模块,调度归 ScanEngine |
5.2 数据流
EdgeX V2.0 架构 · ScanEngine 统一调度:12 种南向驱动经 ScanEngine 写入影子设备实时快照,再联通虚拟设备、边缘计算与北向接口。
5.2.1 调度闭环(南向采集)
ScanEngine.processReadyTasks()
→ ExecutionLayer.Execute(task)
→ SerialQueueManager | ParallelExecutor
→ Driver.ReadPoints() [ConnectionManager 保障连接]
→ ShadowCore.WriteShadowDevice()
→ updateTaskState() + finalizeScanCollect()
→ 任务重新入 PriorityQueue
5.2.2 扇出路径
ShadowCore → ShadowBridge → DataPipeline
→ EdgeComputeManager / NorthboundManager / DeviceStorageManager
5.2.3 参数调整流程(目标态,Q3-B)
- ScanEngine Execute 后更新 RTT 画像(
UpdateDeviceRTT) - ExecutionLayer 读前 consult GapOptimizer / MTU 分片
- 失败退避由 ScanEngine
updateTaskState统一处理,不在 Driver 内 retry
5.3 多协议支持
5.3.1 ExecutionLayer 执行模式
| 执行模式 | 协议示例 | 策略 |
|---|---|---|
| Serial | modbus-*, dlt645, omron-fins | SerialQueueManager + channelMu |
| Parallel | opc-ua, http, mqtt | WorkerPool + BackpressureController |
| Limited | s7, bacnet-ip, ethernet-ip | 低并发串行读 |
5.3.2 Driver 约束
所有 Driver 实现统一接口 ReadPoints / WritePoint / Connect / Health,禁止内部 ticker、goroutine、retry loop、独立连接管理。链路级重连统一经 Transport → ConnectionManager。
5.3.3 协议差异处理
| 协议 | 特有参数 | 适配策略 |
|---|---|---|
| Modbus | 从站地址、功能码、寄存器范围 | 批量读取优化、帧间隔调整、RTT自适应、MTU协商 |
| BACnet | 对象ID、属性ID | 批量读属性、COV订阅、RTT自适应 |
| S7 | DB块、数据类型、偏移量 | 批量读取、数据块优化、MTU协商 |
| OPC UA | 节点ID、采样间隔 | 订阅优化、批处理、RTT自适应 |
| Serial | 波特率、奇偶校验、停止位 | 串口参数调整、缓冲区管理、RTT自适应 |