# 数据采集和检测频率配置说明 ## 配置参数 ### 1. 数据采集频率 ```properties data.collector.interval=250 ``` - **用途**: 控制数据采集频率 (collectAircraftData, collectVehicleData, collectUnmannedVehicleData) - **频率**: 250ms (每秒4次) - **作用**: 从外部API获取最新的位置数据并更新内存缓存 ### 2. 检测和WebSocket推送频率 ```properties data.collector.detection.interval=1000 ``` - **用途**: 控制检测和WebSocket消息推送频率 (performPeriodicViolationDetection) - **频率**: 1000ms (每秒1次) - **作用**: - 执行电子围栏检测 - 执行路径冲突检测 - 执行实时违规检测(超速等) - 发送WebSocket位置更新消息 ## 设计理念 ### 高频数据采集 + 低频检测处理 1. **数据采集层** (250ms) - 快速获取最新位置数据 - 更新内存缓存 - 持久化到数据库 - 不执行复杂计算 2. **检测处理层** (1000ms) - 基于缓存数据执行检测 - 减少数据库查询压力 - 避免过度的WebSocket消息推送 - 提供平衡的响应性和性能 ## 性能优势 ### 减少计算负载 - 围栏检测从每秒4次减少到每秒1次 - 空间查询(PostGIS)频率降低75% - CPU使用率显著降低 ### 减少网络流量 - WebSocket消息发送频率合理化 - 避免前端被大量消息淹没 - 提升用户体验 ### 保持数据新鲜度 - 位置数据仍然是高频更新 - 检测延迟控制在可接受范围内 - 关键告警仍能及时响应 ## 配置建议 ### 生产环境 ```properties # 数据采集 - 较高频率保证数据新鲜度 data.collector.interval=500 # 检测处理 - 适中频率平衡性能和响应性 data.collector.detection.interval=2000 ``` ### 开发/测试环境 ```properties # 数据采集 - 高频率便于测试 data.collector.interval=250 # 检测处理 - 较高频率便于调试 data.collector.detection.interval=1000 ``` ### 高负载环境 ```properties # 数据采集 - 适当降低频率 data.collector.interval=1000 # 检测处理 - 降低频率减少负载 data.collector.detection.interval=3000 ``` ## 监控指标 建议监控以下指标来优化配置: 1. **CPU使用率**: 围栏检测和空间查询的CPU消耗 2. **数据库连接**: PostGIS查询的数据库压力 3. **WebSocket连接**: 前端消息处理能力 4. **响应延迟**: 告警响应的及时性 5. **内存使用**: 活跃对象缓存的内存占用 ## 代码实现 ### DataCollectorService.java ```java // 高频数据采集 - 只更新缓存 @Scheduled(fixedRateString = "${data.collector.interval}") public void collectUnmannedVehicleData() { // 获取最新数据并更新activeMovingObjectsCache // 不执行围栏检测 } // 低频检测处理 - 执行所有检测逻辑 @Scheduled(fixedRateString = "${data.collector.detection.interval}") public void performPeriodicViolationDetection() { // 基于缓存执行围栏检测 // 执行路径冲突检测 // 执行实时违规检测 // 发送WebSocket消息 } ``` 这种设计确保了数据的及时性,同时避免了过度的计算和网络开销。