monitoring_system_design.md 2.2 KB

设备监控系统设计方案

1. 系统架构

graph TD
    A[传感器设备] -->|上报数据| B[数据采集服务]
    B --> C[数据存储]
    C --> D[监控告警引擎]
    D --> E[告警通知]
    C --> F[数据分析]
    F --> G[可视化展示]
    
    subgraph 前端系统
        G --> H[温度/湿度监控]
        G --> I[烟雾/水浸监控]
    end
    
    subgraph 后端系统
        B -->|API| J[数据路由]
        C -->|查询| J
        D -->|规则| K[告警配置]
    end

2. 核心组件

2.1 数据采集层

  • 采集频率:
    • 温度/湿度: 5秒/次
    • 烟雾/水浸: 10秒/次
  • 协议支持: MQTT/HTTP
  • 数据格式:

    {
    "device_id": 123,
    "metric_type": "temperature",
    "metric_value": 26.5,
    "unit": "°C"
    }
    

2.2 数据处理层

  • 数据验证流程:
    1. 值范围检查
    2. 设备有效性验证
    3. 单位标准化
  • 告警检查机制:
    • 多级阈值判断
    • 状态变更检测

2.3 数据存储设计

表名 存储策略 索引
device_monitor_data 实时数据 device_id, metric_type
device_monitor_datahist[YYYYMM] 按月分表 collect_time
device_monitor_stats_daily 每日聚合 device_id, metric_type

3. 告警系统

  • 告警级别:
    • 警告: 超过正常阈值10%
    • 严重: 超过正常阈值30%
    • 紧急: 超过安全阈值
  • 通知方式:
    • 邮件通知
    • 短信提醒
    • 站内消息
  • 静默规则:
    • 相同告警30分钟内不重复
    • 维护期可全局静默

4. 扩展性设计

  1. 设备类型扩展:

    • 通过metric_type字段动态支持新设备
    • 前端自动适配新指标类型
  2. 协议适配:

    interface ProtocolHandler {
     parse(data: Buffer): DeviceData;
     validate(data: DeviceData): boolean;
    }
    
  3. 存储引擎抽象:

    interface StorageEngine {
     write(data: DeviceData): Promise<void>;
     query(options: QueryOptions): Promise<DeviceData[]>;
    }
    

5. 性能优化

  • 数据分区: 按设备ID范围分区
  • 读写分离: 实时数据与历史数据分离
  • 缓存策略: 高频查询数据Redis缓存