QDAirPortBackend0122/doc/configuration/data_collection_intervals.md
2026-01-22 13:19:47 +08:00

3.1 KiB

数据采集和检测频率配置说明

配置参数

1. 数据采集频率

data.collector.interval=250
  • 用途: 控制数据采集频率 (collectAircraftData, collectVehicleData, collectUnmannedVehicleData)
  • 频率: 250ms (每秒4次)
  • 作用: 从外部API获取最新的位置数据并更新内存缓存

2. 检测和WebSocket推送频率

data.collector.detection.interval=1000
  • 用途: 控制检测和WebSocket消息推送频率 (performPeriodicViolationDetection)
  • 频率: 1000ms (每秒1次)
  • 作用:
    • 执行电子围栏检测
    • 执行路径冲突检测
    • 执行实时违规检测(超速等)
    • 发送WebSocket位置更新消息

设计理念

高频数据采集 + 低频检测处理

  1. 数据采集层 (250ms)

    • 快速获取最新位置数据
    • 更新内存缓存
    • 持久化到数据库
    • 不执行复杂计算
  2. 检测处理层 (1000ms)

    • 基于缓存数据执行检测
    • 减少数据库查询压力
    • 避免过度的WebSocket消息推送
    • 提供平衡的响应性和性能

性能优势

减少计算负载

  • 围栏检测从每秒4次减少到每秒1次
  • 空间查询(PostGIS)频率降低75%
  • CPU使用率显著降低

减少网络流量

  • WebSocket消息发送频率合理化
  • 避免前端被大量消息淹没
  • 提升用户体验

保持数据新鲜度

  • 位置数据仍然是高频更新
  • 检测延迟控制在可接受范围内
  • 关键告警仍能及时响应

配置建议

生产环境

# 数据采集 - 较高频率保证数据新鲜度
data.collector.interval=500

# 检测处理 - 适中频率平衡性能和响应性
data.collector.detection.interval=2000

开发/测试环境

# 数据采集 - 高频率便于测试
data.collector.interval=250

# 检测处理 - 较高频率便于调试
data.collector.detection.interval=1000

高负载环境

# 数据采集 - 适当降低频率
data.collector.interval=1000

# 检测处理 - 降低频率减少负载
data.collector.detection.interval=3000

监控指标

建议监控以下指标来优化配置:

  1. CPU使用率: 围栏检测和空间查询的CPU消耗
  2. 数据库连接: PostGIS查询的数据库压力
  3. WebSocket连接: 前端消息处理能力
  4. 响应延迟: 告警响应的及时性
  5. 内存使用: 活跃对象缓存的内存占用

代码实现

DataCollectorService.java

// 高频数据采集 - 只更新缓存
@Scheduled(fixedRateString = "${data.collector.interval}")
public void collectUnmannedVehicleData() {
    // 获取最新数据并更新activeMovingObjectsCache
    // 不执行围栏检测
}

// 低频检测处理 - 执行所有检测逻辑
@Scheduled(fixedRateString = "${data.collector.detection.interval}")
public void performPeriodicViolationDetection() {
    // 基于缓存执行围栏检测
    // 执行路径冲突检测
    // 执行实时违规检测
    // 发送WebSocket消息
}

这种设计确保了数据的及时性,同时避免了过度的计算和网络开销。