xp-robotaxi-bot
2026-03-03 628f74232d54e2ad5d138367ac9894f9377e4c28
docs: add vehicle position storage explanation (Redis vs MongoDB)
1个文件已修改
19 ■■■■■ 已修改文件
README.md 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -147,4 +147,21 @@
- Nacos / Sentinel / Seata 等基础组件需先行部署,并在各 boot 应用中配置好连接信息
---
*文档更新时间: 2026-02-06*
## 六、存储说明(车辆位置)
- 存储目的与职责分离
  - Redis:作为“最新位置流”的高速缓存与分发,适合高频写入与低延迟读取,用于轨迹回放与乘客端实时推送。键形如 `vehiclePosition:{VIN}`,使用 GEO 存储坐标。
  - MongoDB:作为“可检索的状态快照”,结构化保存车辆位置与动态信息(速度、电量、续航、订单等),并基于 `2dsphere` 地理索引支持附近车辆检索、调度筛选与数据分析。集合为 `vehicle_position`。
- 典型使用场景
  - 实时推送与展示:优先读取 Redis,支撑毫秒级更新与高并发消费(例如在自动驾驶控制与轨迹回放中)。
  - 调度与检索:优先查询 MongoDB,通过地理索引进行“附近可用车辆”检索,结合车辆状态进行综合筛选。
- 相关代码与数据模型
  - Redis 写入:自动驾驶控制流程会在轨迹回放或实时上报时写入 Redis(如 `OrderMissionController.pushStartDriverLocation` 与 `pushEndDriverLocation`)。
  - MongoDB 写入:同时更新 `vehicle_position` 文档,包含 `vin`、`point(GeoJSON)`、`speed`、`currentElectricity`、`mileageRange`、`orderId` 等丰富字段,支持后续查询与分析。
  - VehiclePosition:MongoDB 文档模型,集合 `vehicle_position`,承载车辆位置与动态信息。
  - LonLatDto:轻量经纬度 DTO,用于接口与服务间坐标传输(地图服务、消息推送等),不参与持久化。
*该双存储策略在性能与功能上互补:Redis 提供低延时的实时能力,MongoDB 提供可查询与可索引的分析与调度能力。*
*文档更新时间: 2026-03-02*