Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

边缘大脑系统 (Edge Brain Open System) Version 1.0.0

本项目是为配合 Industrial Edge Gateway (edgex) 项目而实现的边缘大脑系统,提供 N+2 冗余架构、蜂群模式与集群协调能力。

1. 项目概述

1.1 项目背景

随着工业互联网和边缘计算的快速发展,单一边缘采集网关在工业现场存在单点故障风险。为配合 Industrial Edge Gateway (edgex) 项目实现的边缘采集能力,边缘大脑系统 (edgeOS) 提供了企业级高可用架构,实现多边缘网关的协调管理与故障容灾。

现有边缘采集系统存在以下问题:

  • 单点故障风险高,缺乏有效的冗余机制
  • 设备发现和双向数据通信能力不足
  • 缺乏统一的调度和协调机制
  • 影子设备消息共享机制不完善

1.2 项目目标

设计并实现一个功能完善的边缘大脑系统,配合 edgex 实现:

  • N+2 冗余架构:协调 N 个边缘采集网关程序,实现双机热备机制(蜂群模式),包含一个主母皇节点与一个备用母皇节点
  • 群控调度:执行各类调度采集任务、边缘群控算法及节能优化算法
  • 影子设备协同:实现跨边缘网关的影子设备自动发现、双向数据通信及其他核心功能

1.3 设计原则

  • 高可用性:N+2冗余架构,确保系统持续运行
  • 可扩展性:支持横向扩展,适应不同规模的部署
  • 实时性:毫秒级响应,满足工业现场实时需求
  • 一致性:分布式环境下数据一致性保证
  • 自愈性:故障自动检测和恢复

1.4 当前进展

当前前端已完成从“采集接入层”向“业务运营层 + 群控编排层”的 P3 扩展,新增了业务中心和群控管理两组一级导航,并在现有工业风 UI 基础上完成高仿真静态页面建设。

导航结构

  • 采集运行
    • 系统总览
    • 消息总线
    • 节点管理
    • 设备控制
    • 告警管理
    • 系统设置
  • 业务扩展
    • 业务中心
      • 储能管理
      • 电源BMS
      • 充电管理
      • 能耗监测
      • 账务台账
  • 群控编排
    • 群控管理
      • 节点调度
      • 场景联动
      • 函数执行
      • 脚本编排

P3 页面实现状态

业务中心模块:

  • 储能管理:站级调峰、SOC/SOH、充放电功率、站点策略面板
  • 电源BMS:电池簇矩阵诊断、温差压差、均衡状态、寿命风险
  • 充电管理:枪位占用、排队车道、订单会话、负载分配
  • 能耗监测:分回路能流、峰谷趋势、异常波动、损耗热点
  • 账务台账:账单、开票、结算、对账与报表导出

群控管理模块:

  • 节点调度:节点容量、资源余量、任务队列、失败重派
  • 场景联动:ECA 规则链、触发条件、动作编排、联动日志
  • 函数执行:函数目录、输入输出样例、耗时与失败追踪
  • 脚本编排:工作流 DAG、审批门禁、编排执行与审计

储能管理

电源BMS 电池簇矩阵诊断、温差压差、均衡状态、寿命风险

能耗监测 分回路能流、峰谷趋势、异常波动、损耗热点

账务台账 账单、开票、结算、对账与报表导出

场景联动 ECA 规则链、触发条件、动作编排、联动日志

相关文档

2. 系统架构设计

2.1 整体架构

2.2 N+2 冗余架构

2.2.1 架构组成

组件 数量 描述 职责
边缘采集网关 (Edge Collector) N 分布式部署的采集程序 负责设备连接、数据采集、协议转换
主母皇节点 (Primary Queen) 1 本地主控大脑主节点 负责全局调度、决策制定、状态同步
备用母皇节点 (Secondary Queen) 1 主母皇热备节点 实时同步主母皇状态,故障时自动切换

2.2.2 冗余模式

2.3 核心组件设计

2.3.1 主母皇节点 (Primary Queen)

// 主母皇节点核心结构
type PrimaryQueen struct {
    NodeID           string                    // 节点唯一标识
    NodeType         NodeType                  // 节点类型:Primary
    Status           NodeStatus                // 运行状态
    HeartbeatInterval time.Duration            // 心跳间隔
    LastHeartbeat    time.Time                 // 最后心跳时间

    // 核心管理器
    *SwarmController                        // 群控调度器
    *ShadowDeviceRegistry                    // 影子设备注册表
    *TaskScheduler                          // 任务调度器
    *DecisionEngine                         // 决策引擎
    *EnergyOptimizer                        // 节能优化器

    // 通信层
    *ClusterComm                            // 集群通信
    *StateSynchronizer                      // 状态同步器

    // 存储层
    *bbolt.DB                               // 本地数据库

    mu              sync.RWMutex
    ctx             context.Context
    cancel          context.CancelFunc
}

2.3.2 备用母皇节点 (Secondary Queen)

// 备用母皇节点核心结构
type SecondaryQueen struct {
    NodeID           string                    // 节点唯一标识
    NodeType         NodeType                  // 节点类型:Secondary
    Status           NodeStatus                // 运行状态
    HeartbeatInterval time.Duration            // 心跳间隔
    LastHeartbeat    time.Time                 // 最后心跳时间

    // 实时同步组件
    *StateReplicator                        // 状态复制器
    *SyncWatcher                            // 同步监视器

    // 热备组件
    *HotStandbyManager                      // 热备管理器
    *FailoverController                     // 故障转移控制器

    // 存储层
    *bbolt.DB                               // 本地数据库(实时同步)

    mu              sync.RWMutex
    ctx             context.Context
    cancel          context.CancelFunc
}

2.3.3 边缘采集网关 (Edgex)

// 边缘采集网关核心结构
type EdgeCollector struct {
    CollectorID     string                    // 采集网关唯一标识
    NodeType        NodeType                  // 节点类型:Collector
    Status          NodeStatus                // 运行状态
    QueenID         string                    // 所属母皇节点ID

    // 采集组件
    *DeviceManager                          // 设备管理器
    *ProtocolAdapter                        // 协议适配器
    *ShadowIngress                          // 影子数据入口
    *PointsNormalizer                       // 点位归一化

    // 通信组件
    *QueenCommunicator                      // 母皇通信器
    *PeerCommunicator                       // 对等节点通信器

    // 本地存储
    *bbolt.DB                               // 本地数据库

    mu              sync.RWMutex
    ctx             context.Context
    cancel          context.CancelFunc
}

3. 影子设备自动发现机制

3.1 自动发现流程

3.2 影子设备注册表

// 影子设备注册表
type ShadowDeviceRegistry struct {
    devices     map[string]*ShadowDeviceEntry   // 设备ID -> 影子设备条目
    byCollector map[string][]string             // 采集网关ID -> 设备ID列表
    byChannel   map[string][]string             // 通道ID -> 设备ID列表

    mu          sync.RWMutex
}

// 影子设备条目
type ShadowDeviceEntry struct {
    ShadowDeviceID    string                 // 影子设备ID
    PhysicalDeviceID  string                 // 物理设备ID
    CollectorID       string                 // 所属采集网关ID
    ChannelID         string                 // 所属通道ID
    ProtocolType      string                 // 协议类型
    DeviceType        string                 // 设备类型
    Metadata          map[string]interface{} // 设备元数据

    // 采集配置
    CollectConfig     *CollectConfig         // 采集配置
    Status            DeviceStatus           // 设备状态
    LastSeen          time.Time              // 最后上线时间
    Version           uint64                 // 版本号
}

4. 双向数据通信机制

4.1 通信架构

4.2 消息类型定义

// 消息类型枚举
type MessageType int

const (
    // 设备上行消息
    MsgTypeTelemetry     MessageType = iota  // 遥测数据
    MsgTypeEvent                               // 事件上报
    MsgTypeAlert                               // 告警信息
    MsgTypeHeartbeat                           // 心跳消息

    // 控制下行消息
    MsgTypeCommand                             // 控制指令
    MsgTypeConfigUpdate                        // 配置更新
    MsgTypeTaskAssign                          // 任务分配
    MsgTypeFirmwareUpdate                      // 固件更新

    // 同步消息
    MsgTypeStateSync                           // 状态同步
    MsgTypeRegister                            // 注册消息
    MsgTypeDeregister                          // 注销消息
    MsgTypeHandshake                           // 握手消息
)

// 消息结构
type EdgeMessage struct {
    MessageID     string                 // 消息唯一标识
    MessageType   MessageType             // 消息类型
    SourceID      string                  // 来源节点ID
    TargetID      string                  // 目标节点ID(可选,用于单播)
    Payload       []byte                  // 消息载荷
    QoS           QoSLevel                // 服务质量等级
    Timestamp     time.Time               // 时间戳
    Sequence      uint64                  // 序列号
    Headers       map[string]string       // 消息头
}

// QoS 等级
type QoSLevel int

const (
    QoS0 QoSLevel = iota  // 最多一次
    QoS1                   // 至少一次
    QoS2                   // 恰好一次
)

5. 群控算法与节能优化

5.1 群控算法调度

// 群控算法调度器
type SwarmController struct {
    // 调度策略
    strategy      ScheduleStrategy      // 调度策略
    collectors    map[string]*EdgeCollectorInfo  // 采集网关信息
    tasks         map[string]*CollectTask       // 采集任务

    // 负载均衡
    loadBalancer  *LoadBalancer        // 负载均衡器
    taskQueue     *PriorityQueue        // 优先级队列

    // 状态管理
    nodeStatus    map[string]NodeStatus // 节点状态
    taskStatus    map[string]TaskStatus // 任务状态

    mu            sync.RWMutex
}

// 调度策略
type ScheduleStrategy int

const (
    StrategyRoundRobin    ScheduleStrategy = iota  // 轮询
    StrategyLeastLoaded                             // 最小负载
    StrategyWeighted                                // 加权
    StrategyAffinity                                // 亲和性
    StrategyDynamic                                 // 动态调度
)

// 采集任务
type CollectTask struct {
    TaskID       string
    DeviceID     string
    CollectorID  string
    Priority     int
    Interval     time.Duration
    Timeout      time.Duration
    Status       TaskStatus
    LastRun      time.Time
    NextRun      time.Time
}

5.2 节能优化算法

// 节能优化器
type EnergyOptimizer struct {
    // 能耗模型
    energyModel    *EnergyModel

    // 优化策略
    strategies      []OptimizationStrategy

    // 调度器
    scheduler       *ScheduleOptimizer

    // 统计
    stats           *EnergyStats

    mu              sync.RWMutex
}

// 能耗模型
type EnergyModel struct {
    // 设备基础能耗 (W)
    BasePowerConsumption float64

    // 采集频率与能耗关系
    FrequencyPowerMap map[int]float64  // Hz -> W

    // 通信能耗模型
    CommunicationEnergy float64         // 每字节能耗

    // 空闲功耗占比
    IdlePowerRatio float64
}

// 优化策略
type OptimizationStrategy interface {
    Optimize(ctx *OptimizationContext) (*OptimizationResult, error)
    GetStrategyName() string
}

// 动态降频策略
type DynamicFrequencyStrategy struct {
    // 降频阈值
    LowLoadThreshold  float64
    HighLoadThreshold float64

    // 频率档位
    FrequencyLevels   []int  // Hz
}

// 自适应采集策略
type AdaptiveCollectStrategy struct {
    // 采集间隔范围
    MinInterval time.Duration
    MaxInterval time.Duration

    // 调整因子
    AdjustmentFactor float64
}

5.3 节能优化算法流程

6. 蜂群模式设计

6.1 蜂群模式架构

6.2 心跳检测机制

// 心跳检测器
type HeartbeatDetector struct {
    // 检测配置
    interval      time.Duration              // 检测间隔
    timeout       time.Duration              // 超时时间
    maxRetries    int                        // 最大重试次数

    // 节点状态
    nodes         map[string]*NodeHeartbeat  // 节点心跳信息
    failedNodes   map[string]int             // 失败计数

    // 回调
    onNodeLost    func(nodeID string)         // 节点丢失回调
    onNodeRecover func(nodeID string)         // 节点恢复回调

    mu            sync.RWMutex
    ctx           context.Context
    cancel        context.CancelFunc
}

// 节点心跳信息
type NodeHeartbeat struct {
    NodeID        string
    NodeType      NodeType
    LastHeartbeat time.Time
    Status        NodeStatus
    Load          float64                    // 负载指标
    Score         float64                    // 健康评分
}

6.3 故障转移流程

7. 集群影子设备消息共享

7.1 消息共享机制

// 影子设备消息共享器
type ShadowDeviceMessenger struct {
    // 消息通道
    uploadCh   chan *ShadowUploadMessage   // 上行消息通道
    downloadCh  chan *ShadowDownloadMessage // 下行消息通道
    syncCh      chan *ShadowSyncMessage      // 同步消息通道

    // 消息处理
    processor   *MessageProcessor            // 消息处理器
    router      *MessageRouter               // 消息路由器

    // 状态管理
    registry    *ShadowDeviceRegistry        // 设备注册表
    sequencer   *MessageSequencer            // 消息序列器

    mu          sync.RWMutex
    ctx         context.Context
    cancel      context.CancelFunc
}

// 上行消息(设备 -> 影子)
type ShadowUploadMessage struct {
    MessageID     string
    CollectorID   string
    ShadowDeviceID string
    Points        []*ShadowPoint
    Timestamp     time.Time
    QoS           QoSLevel
}

// 下行消息(影子 -> 设备)
type ShadowDownloadMessage struct {
    MessageID     string
    TargetCollectorID string
    ShadowDeviceID string
    WriteRequest  *WriteRequest
    Timestamp     time.Time
    QoS           QoSLevel
}

// 同步消息
type ShadowSyncMessage struct {
    MessageID     string
    SourceNodeID  string
    TargetNodeID  string
    SyncType     SyncType
    Data         []byte
    Timestamp    time.Time
}

7.2 消息共享流程

8. 配套措施总结

8.1 集群影子设备消息共享配套措施

配套措施 描述 实现方式
消息总线 统一的异步消息传输通道 libp2p + QUIC + Raft/Paxos
注册发现 节点自动注册与服务发现 etcd / bbolt
状态同步 集群状态一致性同步 Gossip
消息路由 智能消息路由与分发 主题订阅 / 标签路由
QoS保证 消息服务质量等级控制 持久化 / ACK / 重试
流量控制 消息流量限制与削峰 令牌桶 / 漏桶算法

8.2 N+2冗余架构配套措施

配套措施 描述 实现方式
心跳检测 节点存活状态检测 TCP心跳 / UDP广播
故障检测 故障节点自动识别 超时检测 / 连续失败
角色切换 主备节点自动切换 热备 / 状态同步
数据同步 主备数据实时同步 WAL / 增量同步
脑裂预防 避免双主同时服务 分布式锁 / 租约
故障恢复 故障节点重新加入 数据同步 / 配置恢复

8.3 影子设备自动发现配套措施

配套措施 描述 实现方式
设备探测 主动扫描发现新设备 轮询 / 事件驱动
协议适配 多协议设备统一抽象 Adapter模式
影子分配 自动分配影子设备ID UUID / 规则映射
配置下发 采集配置自动生成 模板 / 默认值
状态监控 设备状态实时监控 心跳 / 告警
元数据管理 设备元数据存储查询 bbolt / 内存缓存

8.4 双向数据通信配套措施

配套措施 描述 实现方式
消息序列化 高效数据编解码 Protobuf / MessagePack
消息压缩 减少网络传输量 Snappy / LZ4
连接复用 减少连接建立开销 HTTP/2 / gRPC Stream
断线重连 网络异常自动恢复 指数退避 / 心跳
本地缓存 离线数据临时存储 bbolt / 内存队列
消息追踪 全链路消息可追溯 TraceID / SpanID

9. 实现路径

9.1 阶段一:核心框架

目标:建立N+2冗余架构核心框架

任务

  1. 节点角色定义与状态机实现
  2. 主备节点心跳检测机制
  3. 基本的故障转移流程
  4. 共享状态存储层 (bbolt)
  5. 节点注册与发现机制

里程碑

  • 主母皇与备用母皇节点可正常启动和切换
  • 边缘采集网关可注册到母皇节点
  • 心跳检测和故障转移基本功能可用

9.2 阶段二:影子设备管理

目标:实现影子设备自动发现与管理

任务

  1. 影子设备注册表设计与实现
  2. 设备自动发现机制
  3. 设备元数据管理
  4. 设备状态监控
  5. 设备配置自动生成

里程碑

  • 设备上线自动注册到影子注册表
  • 支持edgex采集通道设备发现
  • 设备状态变更实时同步到所有节点

9.3 阶段三:双向通信

目标:实现高性能双向数据通信

任务

  1. 消息总线设计与实现
  2. 消息路由与分发机制
  3. QoS服务质量保证
  4. 消息序列化和压缩
  5. 消息追踪和审计

里程碑

  • 设备数据毫秒级上报到所有节点
  • 控制指令可靠下发并确认
  • 消息延迟 P99 < 10ms

9.4 阶段四:群控算法

目标:实现群控调度和节能优化

任务

  1. 采集任务调度器实现
  2. 负载均衡算法
  3. 节能优化策略
  4. 动态频率调整
  5. 自适应采集间隔

里程碑

  • 采集任务智能调度
  • 系统能耗降低 20-30%
  • 负载均衡效果显著

10. 总结

本方案设计了一个功能完善的边缘大脑系统,采用N+2冗余架构模式,实现了一个主母皇节点和一个备用母皇节点的双机热备机制(蜂群模式)。系统能够协调N个边缘采集网关程序,实现影子设备自动发现、双向数据通信、群控算法调度以及节能优化等核心功能。

通过本方案的实施,可以显著提升边缘采集系统的可靠性、可用性和性能,为工业互联网和边缘计算场景提供坚实的技术基础。

About

EdgeOS 是 EdgeX 的边缘本地大脑,主控节点负责调度、业务规划、群控与节能。采用蜂群模式(双母皇热备),实现影子设备自动发现与双向通信。 EdgeOS: EdgeX's local edge brain. Master node handles scheduling, orchestration, swarm control & energy. Swarm mode (dual hot-standby queens) enables auto shadow discovery & bidirectional comms.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages