# XPeng Robotaxi 基于 Spring Cloud Alibaba 的 Robotaxi 微服务系统,面向自动驾驶出行场景,包含账户、订单、地图、自动驾驶、远程驾驶等业务域,以及一组对应的 Spring Boot 应用(`xp-robotaxi-*-boot`)用于实际部署。 --- ## 一、技术栈概览 - Java 8 - Spring Boot 2.7.7 - Spring Cloud 2021.0.5 - Spring Cloud Alibaba 2021.0.4.0 - Nacos(注册中心 / 配置中心) - Sentinel(流量控制与熔断降级) - Seata(分布式事务) - MyBatis-Plus(ORM) - Druid(数据库连接池) - Swagger / Springfox(接口文档) - Redis、MySQL、MongoDB 等 --- ## 二、顶层模块结构 根工程 `robotaxi` 下包含以下子模块: - `xp-robotaxi-api`:对外和内部共享的 API、DTO、proto 风格 VO 定义 - `xp-robotaxi-common`:公共能力(日志、权限、安全、数据源、Redis 等) - 一组 `xp-robotaxi-*-boot`:每个业务域对应的 Spring Boot 应用,可独立部署 下面重点说明各个 `boot` 模块的功能职责。 --- ## 三、Boot 应用模块职责 ### 1. xp-robotaxi-gateway-boot(网关应用) - 基于 Spring Cloud Gateway 的统一入口网关 - 负责路由转发、鉴权校验、限流熔断、灰度发布 - 统一接入层日志与基本安全控制 ### 2. xp-robotaxi-account-boot(账户中心) - 账户/用户域的对外应用 - 用户注册登录、账号信息管理、角色与权限管理 - 为管理后台和其他业务服务提供账户相关 REST 接口 ### 3. xp-robotaxi-automatic-pilot-boot(自动驾驶业务) - Robotaxi 自动驾驶业务对外应用 - 负责云端与 XPU 的消息交互(MQTT / Kafka),包括下行指令和上行状态 - 订单与自动驾驶系统联动(创建任务、控制任务、状态应答等) - 封装自动驾驶相关业务接口,供运营平台和其他服务调用 ### 4. xp-robotaxi-itinerary-boot(行程管理) - 行程生命周期管理应用 - 行程创建、修改、取消 - 行程状态跟踪、历史行程查询 - 与订单、地图等服务协同进行路径规划与调度 ### 5. xp-robotaxi-maintenance-boot(运维与车辆维护) - 车辆运维与保障相关应用 - 车辆维护计划、保养记录、故障报修流程 - 保单管理和维修记录追踪 - 为运营平台提供车辆健康状态和维护数据 ### 6. xp-robotaxi-map-boot(地图与位置服务) - 地图与位置相关应用 - 路线规划、距离与时间预估 - POI 查询、地理围栏管理 - 与自动驾驶、行程、订单等服务协同提供位置能力 ### 7. xp-robotaxi-operation-boot(运营管理) - 平台运营域应用 - 车辆调度策略、运营数据统计与报表 - 价格策略配置、优惠活动管理 - 支持运营后台对 Robotaxi 业务进行集中管理 ### 8. xp-robotaxi-order-boot(订单服务) - 订单全生命周期管理应用 - 下单、改派、取消、完成等订单流程 - 订单状态机与状态变更通知 - 与支付、行程、自动驾驶等服务联动 ### 9. xp-robotaxi-payment-boot(支付与结算) - 支付结算域应用 - 集成微信等第三方支付渠道 - 支付请求、退款、对账、结算与发票管理 - 对订单服务提供支付能力,对财务提供对账数据 ### 10. xp-robotaxi-push-message-boot(消息推送) - 消息通知与推送应用 - 支持短信、APP 推送、邮件、站内信等多种渠道 - 提供统一消息模板与发送接口 - 与订单、行程、运营等服务集成,实现业务事件触达用户 ### 11. xp-robotaxi-remote-driving-boot(远程驾驶) - 云代驾 / 远程驾驶应用 - 远程控制指令下发、实时状态回传 - 支持紧急接管、远程辅助等场景 - 与自动驾驶、行程、车辆状态服务协同 ### 12. xp-robotaxi-vehicle-convoy-boot(车队管理) - 车队及编队管理应用 - 车队组建与成员管理 - 编队行驶控制与协同调度 - 提供面向车队运营场景的接口能力 ### 13. xp-robotaxi-job-boot(定时任务) - 统一定时任务调度应用 - 基于 Quartz,对多业务域的定时任务进行集中管理 - 任务配置、执行监控、失败重试等 ### 14. xp-robotaxi-file-boot(文件服务) - 文件上传/下载/存储应用 - 支持对象存储或分布式文件系统接入 - 提供统一的文件访问域名与权限控制能力 --- ## 四、基础能力模块概览 虽然具体代码在 `xp-robotaxi-common` 与 `xp-robotaxi-api` 中,这里简要说明它们的角色,方便理解整体结构: - `xp-robotaxi-common`:日志、安全、数据源、Redis、数据权限、分布式事务等通用能力 - `xp-robotaxi-api`:对各个 boot 应用暴露的统一 API/DTO/VO 定义,是服务间通信的契约层 --- ## 五、运行与部署提示(概览) - 所有 `xp-robotaxi-*-boot` 模块均为独立 Spring Boot 应用,可按需选择部署 - 网关(`xp-robotaxi-gateway-boot`)通常需要多实例部署以保证高可用 - 订单、支付、自动驾驶、运营等核心域建议根据业务量做水平扩展 - Nacos / Sentinel / Seata 等基础组件需先行部署,并在各 boot 应用中配置好连接信息 --- ## 六、存储说明(车辆位置) - 存储目的与职责分离 - 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*