基于springboot开发机场碰撞管理系统,主要整合无人车、航空器及传统车辆位置信息,实现飞机与无人车的冲突预警与智能调度。
Go to file
Tian jianyong 3a551f69b9 系统存在以下关键设计问题导致测试超时:
无限阻塞线程设计:
数据处理器使用 BlockingQueue.take() 方法无限期阻塞线程
缺少超时机制导致线程永远不会退出
生命周期管理不当:
使用 @PostConstruct 启动线程但没有相应的 @PreDestroy 清理机制
缺少应用程序关闭钩子,导致资源无法正确释放
线程池配置不合理:
线程池配置过大(核心10线程,最大100线程)
没有设置优雅关闭参数,导致应用关闭时线程不会终止
测试隔离不充分:
测试运行时仍尝试连接外部资源(数据库、Kafka、数据采集API)
测试配置未完全禁用不必要的服务
解决方案
我们实施了以下改进措施:
优化线程池配置:
减小线程池大小(核心5线程,最大10线程)
添加 setWaitForTasksToCompleteOnShutdown(true) 和 setAwaitTerminationSeconds(5) 配置
优化队列容量,减少内存占用
添加优雅关闭机制:
在主类添加 JVM 关闭钩子,确保资源正确释放
为服务组件添加 @PreDestroy 方法,实现自定义关闭逻辑
引入状态标志(AtomicBoolean running)控制后台线程循环
防止无限阻塞:
修改 MovingObjectRepository,添加非阻塞的 pollUpdate() 方法替代 takeUpdate()
在数据处理循环中添加超时检查,避免无限等待
优化异常处理,防止线程崩溃或 CPU 使用率飙升
完善测试环境配置:
在测试配置中完全禁用数据采集和处理服务
配置 data.collector.disabled=true 和 data.processor.enabled=false
使用 @ActiveProfiles("test") 确保测试使用正确的配置文件
添加错误处理和日志:
包装所有关键操作在 try-catch 块中,防止错误传播
添加详细日志,便于诊断问题
实现错误恢复机制,确保系统稳定性
2025-04-30 12:16:06 +08:00
.mvn/wrapper 1.完成数据接入以及数据封装逻辑,但是暂未完成坐标转化逻辑。 2025-03-13 10:35:48 +08:00
doc 系统存在以下关键设计问题导致测试超时: 2025-04-30 12:16:06 +08:00
src 系统存在以下关键设计问题导致测试超时: 2025-04-30 12:16:06 +08:00
.gitattributes 1.完成数据接入以及数据封装逻辑,但是暂未完成坐标转化逻辑。 2025-03-13 10:35:48 +08:00
.gitignore 保存一些文档修改 2025-04-29 14:33:04 +08:00
change_log.md 增加了机场区域服务设计方案和基本功能框架 2025-04-29 16:49:28 +08:00
development_log.md 增加了机场区域服务设计方案和基本功能框架 2025-04-29 16:49:28 +08:00
mvnw 增加了机场区域服务设计方案和基本功能框架 2025-04-29 16:49:28 +08:00
mvnw.cmd 1.完成数据接入以及数据封装逻辑,但是暂未完成坐标转化逻辑。 2025-03-13 10:35:48 +08:00
pom.xml 修改了测试框架和测试用例,解决超时问题 2025-04-30 11:55:14 +08:00
README.md 增加了道路网络设置和服务;修改了doc目录结构,增加了设计文档和说明文档;修改了版本号 2025-04-21 15:53:40 +08:00
VERSION.txt 增加了机场区域服务设计方案和基本功能框架 2025-04-29 16:49:28 +08:00

CollisionAvoidanceSystem

🎯 核心目标 (Core Goal)

本项目旨在开发一套机场地面碰撞避免系统,通过整合机场场面内各类移动目标(航空器、特勤车辆、无人车)的实时数据,实现潜在运行冲突的智能预警与告警,提升机场地面运行安全与效率。

主要功能概述 (Key Features)

  • 多源数据集成: 融合来自不同系统和传感器的数据。
  • 实时态势构建: 维护场面目标的实时位置、速度和状态。
  • 冲突风险评估: 基于目标轨迹和运行规则,预测和识别潜在冲突。
  • 规则符合性检查: 如根据道路/区域限制进行超速检测。
  • 实时告警与通知: 通过 WebSocket 等机制发布告警信息。
  • 静态环境建模: 支持对机场道路网络等静态环境进行配置和查询。

🏗️ 系统架构与模块 (Architecture & Modules)

系统采用模块化设计便于开发、测试和维护。主要模块包括数据采集、数据处理、道路网络管理、API 控制器和 WebSocket 通信等。

详细的包和目录结构说明,请参见:

💡 核心概念与数据结构 (Core Concepts & Data Structures)

系统围绕"移动物体 (MovingObject)"进行建模,并处理其动态状态。同时,引入了对机场静态环境(如道路网络)的建模。

核心数据结构设计(包括移动物体模型、地理位置、速度、运动状态以及道路信息模型等)的详细说明,请参见:

⚙️ 配置概览 (Configuration Overview)

系统通过多种配置文件进行参数设置和行为调整。

  • 应用核心配置: src/main/resources/application.yml 文件,用于配置服务器端口、数据库连接、消息队列、外部 API 等基础设置。
  • 道路网络配置: src/main/resources/config/airport_roads.yaml 文件,用于定义机场道路的几何、限速、限制等静态信息。数据格式需遵循约定。
  • 区域配置: src/main/resources/config/airport_zones.yaml 文件 (如果使用),用于定义机场功能分区。
  • Java 配置类: 各模块可能包含位于 config 包下的 Java 类,用于配置 Spring Beans 或加载特定配置。

关于各类配置文件的详细说明、用途以及配置加载机制,请参见:

🚀 快速开始 (Quick Start)

  1. 环境准备: 确保已安装 Java (JDK 17+), Maven并准备好所需的外部服务实例 (如 Redis, MongoDB, Kafka)。
  2. 配置检查: 根据实际环境修改 application.yml,并确保 airport_roads.yaml 包含有效的道路数据。
  3. 构建项目: 在项目根目录下运行 ./mvnw clean package (或 mvn clean package)。
  4. 运行应用: 执行 java -jar target/CollisionAvoidance-0.0.1-SNAPSHOT.jar 或通过 Maven 插件 spring-boot:run 启动。

📚 项目文档索引 (Documentation Index)

本项目包含以下设计和说明文档,均位于 doc/ 目录下:

📄 许可证 (License)

(请在此处添加项目的许可证信息,例如 MIT, Apache 2.0 等)