| | |
| | | # XPeng Robotaxi 项目结构分析 |
| | | # XPeng Robotaxi |
| | | |
| | | ## 项目概述 |
| | | |
| | | 这是一个基于Spring Cloud Alibaba微服务架构的小鹏汽车Robotaxi项目,采用Java 8 + Spring Boot 2.7.7技术栈,实现了分布式、高可用的自动驾驶出租车服务平台。 |
| | | |
| | | ## 核心技术栈 |
| | | |
| | | - **Java版本**: Java 8 |
| | | - **Spring Boot**: 2.7.7 |
| | | - **Spring Cloud**: 2021.0.5 |
| | | - **Spring Cloud Alibaba**: 2021.0.4.0 |
| | | - **数据库分片**: ShardingSphere 5.5.2 |
| | | - **连接池**: Druid 1.2.16 |
| | | - **API文档**: Swagger 3.0.0 |
| | | - **注册中心/配置中心**: Nacos |
| | | - **服务熔断**: Sentinel |
| | | - **分布式事务**: Seata |
| | | - **ORM框架**: MyBatis Plus 3.5.2 |
| | | 基于 Spring Cloud Alibaba 的 Robotaxi 微服务系统,面向自动驾驶出行场景,包含账户、订单、地图、自动驾驶、远程驾驶等业务域,以及一组对应的 Spring Boot 应用(`xp-robotaxi-*-boot`)用于实际部署。 |
| | | |
| | | --- |
| | | |
| | | ## 项目模块结构 |
| | | ## 一、技术栈概览 |
| | | |
| | | ### 1. xp-gateway (网关模块) |
| | | **端口**: 默认端口 |
| | | **功能**: API网关服务,负责请求路由、负载均衡、权限校验、限流熔断等 |
| | | |
| | | - 统一入口:所有外部请求的统一接入点 |
| | | - 路由转发:根据路径将请求转发到对应的服务 |
| | | - 安全控制:身份认证、权限验证 |
| | | - 流量控制:限流、熔断、降级处理 |
| | | - 日志记录:请求日志、访问统计 |
| | | |
| | | ### 2. xp-common (公共基础模块) |
| | | |
| | | #### 2.1 xp-common-core (核心工具模块) |
| | | **功能**: 提供项目通用的基础工具类和配置 |
| | | |
| | | - 基础实体类和枚举定义 |
| | | - 工具类集合(JSON处理、字符串处理等) |
| | | - 全局异常处理 |
| | | - 响应结果封装 |
| | | - 分页工具类 |
| | | - 地理位置计算工具(集成geodesy库) |
| | | |
| | | #### 2.2 xp-common-security (安全模块) |
| | | **功能**: 安全认证和授权相关功能 |
| | | |
| | | - 用户认证服务 |
| | | - JWT Token管理 |
| | | - 权限注解处理 |
| | | - 密码加密解密 |
| | | - Feign客户端安全配置 |
| | | - 自定义安全配置注解 |
| | | |
| | | #### 2.3 xp-common-swagger (API文档模块) |
| | | **功能**: Swagger API文档自动生成和配置 |
| | | |
| | | - RESTful API文档自动生成 |
| | | - 接口调试界面 |
| | | - 文档分组管理 |
| | | - 自定义文档配置 |
| | | |
| | | #### 2.4 xp-common-redis (缓存模块) |
| | | **功能**: Redis缓存相关配置和服务 |
| | | |
| | | - Redis连接配置 |
| | | - 缓存注解支持 |
| | | - 分布式锁实现 |
| | | - 缓存工具类 |
| | | |
| | | #### 2.5 xp-common-log (日志模块) |
| | | **功能**: 系统日志记录和管理 |
| | | |
| | | - 操作日志记录 |
| | | - 异常日志收集 |
| | | - 日志格式化 |
| | | - 日志存储策略 |
| | | |
| | | #### 2.6 xp-common-datascope (数据权限模块) |
| | | **功能**: 数据级别的权限控制 |
| | | |
| | | - 部门数据权限过滤 |
| | | - 用户数据隔离 |
| | | - 动态数据权限配置 |
| | | |
| | | #### 2.7 xp-common-seata (分布式事务模块) |
| | | **功能**: 分布式事务管理配置 |
| | | |
| | | - Seata客户端配置 |
| | | - 分布式事务注解支持 |
| | | - 事务协调器集成 |
| | | |
| | | ### 3. xp-api (接口定义模块) |
| | | **功能**: 各服务间的Feign接口定义和DTO传输对象 |
| | | |
| | | - 远程服务调用接口定义 |
| | | - 数据传输对象(DTO)定义 |
| | | - 接口降级处理工厂 |
| | | - 服务间通信契约 |
| | | |
| | | ### 4. xp-modules (通用业务模块) |
| | | |
| | | #### 4.1 xp-modules-file (文件服务模块) |
| | | **端口**: 默认端口 |
| | | **功能**: 文件上传、下载、存储管理服务 |
| | | |
| | | - 文件上传下载 |
| | | - FastDFS分布式文件存储集成 |
| | | - 文件类型校验 |
| | | - 文件访问权限控制 |
| | | |
| | | #### 4.2 xp-modules-job (定时任务模块) |
| | | **端口**: 默认端口 |
| | | **功能**: 分布式定时任务调度服务 |
| | | |
| | | - Quartz定时任务调度 |
| | | - 任务管理界面 |
| | | - 任务执行监控 |
| | | - 分布式任务协调 |
| | | |
| | | ### 5. xp-service (核心业务服务模块) |
| | | |
| | | #### 5.1 xp-account (账户服务) |
| | | **端口**: 6010 |
| | | **功能**: 用户账户管理核心服务 |
| | | |
| | | - 用户注册登录 |
| | | - 用户信息管理 |
| | | - 角色权限管理 |
| | | - 组织架构管理 |
| | | - 菜单权限配置 |
| | | - 用户分组管理 |
| | | |
| | | #### 5.2 xp-automaticPilot (自动驾驶服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 自动驾驶核心算法和控制服务 |
| | | |
| | | - 自动驾驶模式切换 |
| | | - 路径规划和导航 |
| | | - 传感器数据处理 |
| | | - 驾驶行为决策 |
| | | - 安全监控系统 |
| | | |
| | | #### 5.3 xp-itinerary (行程服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 行程管理和调度服务 |
| | | |
| | | - 行程创建和管理 |
| | | - 路线规划 |
| | | - 实时位置跟踪 |
| | | - 行程状态监控 |
| | | - 历史行程查询 |
| | | |
| | | #### 5.4 xp-maintenance (运维服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 车辆运维和保险管理服务 |
| | | |
| | | - 车辆维护计划 |
| | | - 故障报修处理 |
| | | - 保单申请管理 |
| | | - 维修记录追踪 |
| | | - 配件库存管理 |
| | | |
| | | #### 5.5 xp-map (地图服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 地图数据和位置服务 |
| | | |
| | | - 地图数据管理 |
| | | - POI兴趣点服务 |
| | | - 地理围栏设置 |
| | | - 位置信息服务 |
| | | - 路况信息获取 |
| | | |
| | | #### 5.6 xp-operation (运营服务) |
| | | **端口**: 6060 |
| | | **功能**: 平台运营管理服务 |
| | | |
| | | - 运营数据分析 |
| | | - 车辆调度管理 |
| | | - 司机运营管理 |
| | | - 价格策略配置 |
| | | - 优惠活动管理 |
| | | - 投诉处理系统 |
| | | |
| | | #### 5.7 xp-order (订单服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 订单全流程管理服务 |
| | | |
| | | - 订单创建和支付 |
| | | - 订单状态跟踪 |
| | | - 订单分配调度 |
| | | - 订单历史查询 |
| | | - 退款处理流程 |
| | | |
| | | #### 5.8 xp-payment (支付服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 支付结算核心服务 |
| | | |
| | | - 多种支付方式集成 |
| | | - 支付流水管理 |
| | | - 对账结算功能 |
| | | - 退款处理 |
| | | - 发票管理 |
| | | |
| | | #### 5.9 xp-pushMessage (消息推送服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 消息通知和推送服务 |
| | | |
| | | - 站内信通知 |
| | | - 短信推送 |
| | | - APP消息推送 |
| | | - 邮件通知 |
| | | - 消息模板管理 |
| | | |
| | | #### 5.10 xp-remoteDriving (远程驾驶服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 远程遥控驾驶服务 |
| | | |
| | | - 远程驾驶控制 |
| | | - 实时视频传输 |
| | | - 遥控指令下发 |
| | | - 紧急接管机制 |
| | | - 远程协助功能 |
| | | |
| | | #### 5.11 xp-vehicleConvoy (车辆车队服务) |
| | | **端口**: 默认端口 |
| | | **功能**: 车队编队和协同管理服务 |
| | | |
| | | - 车队组建管理 |
| | | - 车辆编队控制 |
| | | - 车辆间通信协调 |
| | | - 编队路线规划 |
| | | - 车队状态监控 |
| | | - 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 等 |
| | | |
| | | --- |
| | | |
| | | ## 架构特点 |
| | | ## 二、顶层模块结构 |
| | | |
| | | ### 微服务架构优势 |
| | | 1. **服务拆分**: 按业务领域垂直拆分,职责单一 |
| | | 2. **独立部署**: 各服务可独立开发、测试、部署 |
| | | 3. **技术多样性**: 不同服务可根据需求选择合适技术栈 |
| | | 4. **容错性**: 单个服务故障不影响整体系统 |
| | | 5. **可扩展性**: 按需对特定服务进行水平扩展 |
| | | 根工程 `robotaxi` 下包含以下子模块: |
| | | |
| | | ### 核心组件集成 |
| | | - **Nacos**: 服务注册发现和配置管理 |
| | | - **Sentinel**: 流量控制和熔断降级 |
| | | - **Seata**: 分布式事务解决方案 |
| | | - **ShardingSphere**: 数据库分片和读写分离 |
| | | - **Redis**: 分布式缓存和会话共享 |
| | | - `xp-robotaxi-api`:对外和内部共享的 API、DTO、proto 风格 VO 定义 |
| | | - `xp-robotaxi-common`:公共能力(日志、权限、安全、数据源、Redis 等) |
| | | - 一组 `xp-robotaxi-*-boot`:每个业务域对应的 Spring Boot 应用,可独立部署 |
| | | |
| | | ### 部署建议 |
| | | - 网关层建议部署多实例保证高可用 |
| | | - 核心业务服务按重要程度分级部署 |
| | | - 数据库采用主从复制和分片策略 |
| | | - 缓存层配置合理的过期策略 |
| | | - 监控告警体系完善各服务健康状态 |
| | | 下面重点说明各个 `boot` 模块的功能职责。 |
| | | |
| | | --- |
| | | *文档更新时间: 2026-02-06* |
| | | |
| | | ## 三、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 应用中配置好连接信息 |
| | | |
| | | --- |
| | | *文档更新时间: 2026-02-06* |