ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何看懂Rydr网约车平台全流程:从注册登录、叫车派单到支付完成的完整链路

如何看懂Rydr网约车平台全流程:从注册登录、叫车派单到支付完成的完整链路 如何看懂Rydr网约车平台全流程从注册登录、叫车派单到支付完成的完整链路【免费下载链接】rydrRydr - A complete ride-hailing platform built with Spring Cloud microservices项目地址: https://gitcode.com/gh_mirrors/on/rydrRydr 是一个基于Spring Cloud 微服务架构的完整网约车平台覆盖乘客叫车、司机接单、订单计价、支付结算的网约车全流程。本文按一次真实行程的完整链路带你梳理网约车平台的 5 个核心环节乘客注册登录 → 叫车预估价格 → 司机派单抢单 → 订单状态流转 → 支付完成帮助新手快速理解每个微服务模块如何协作。️ 网约车平台架构速览三层微服务体系Rydr 采用经典的三层微服务架构所有请求都先经过 **Zuul API 网关9100 端口**统一鉴权、限流和路由层级核心模块职责API 层api-passenger/api-driver/api-listen-order乘客、司机端接口与实时订单推送服务层service-order/service-valuation/service-sms/service-passenger-user订单、计价、短信、用户等核心业务基础设施层eureka/rydr-config-server/rydr-zuul服务注册发现、配置中心、网关技术栈以 Spring Boot 2.1.7 Spring Cloud Greenwich 为基础配合 MySQL、Redis、RabbitMQ、ActiveMQ、JWT 等组件。各模块端口与职责详见 docs/modules.md架构通信模式详见 docs/architecture.md。 第一站乘客注册登录——短信验证码 JWT乘客打开 App 的第一步是手机号 短信验证码登录整条链路涉及 3 个微服务协作发送验证码api-passenger通过 Feign 调用service-sms8002 端口发送短信验证码由service-verification-code8011 端口生成 6 位随机码并写入 Redis设置有效期校验验证码登录请求/auth/login到达后AuthServiceImpl.java 先调用验证码服务比对手机号与验证码签发 Token校验通过后查询service-passenger-user8012 端口获取用户信息再用 JwtUtil.java 生成 JWT Token 返回给客户端。之后的每个请求都会携带 Token由网关的AuthFilter统一校验身份实现无状态的登录态管理。乘客注册登录的完整时序如下 第二站叫车下单——计价引擎预估价格确定起点终点后乘客端调用/order/forecast接口获取预估价格。api-passenger通过 Feign带 Hystrix 熔断降级远程调用计价服务service-valuation8060/8061 端口该服务内置一套完整的网约车计价规则引擎 时段计价高峰期、夜间费率 里程计价按距离分段计费️ 动态折扣与调价规则计价服务的规则模型定义在 rydr/rydr-common 的dto/valuation包中支持起步价、时距计费、标签价等多种规则组合。乘客订单的完整下单时序见下图 第三站司机派单抢单——分布式锁是核心亮点订单创建后平台需要通过api-listen-order8084 端口以SSE/WebSocket 实时推送给附近司机司机在抢单大厅一键接单。接单动作由api-driver的 GrabOrderController.java 接收经 Ribbon 负载均衡转发到订单服务service-order8004 端口。这里的核心问题是多个司机同时抢同一单如何防止超卖订单服务在 GrabOrderController.java 中提供了 5 种抢单锁实现供切换锁方案说明无锁 / JVM 锁仅单机有效用于对比实验MySQL 锁基于数据库行锁性能一般Redis 锁单节点性能较好Redisson 分布式锁默认方案支持自动续期RedLock多 Redis 节点强一致方案配套的 MysqlLock.java、RedisLock.java 和锁续期服务RenewGrabLockService完整演示了网约车高并发抢单场景下的分布式锁实践。司机端从在线听单到接单的全流程时序司机端接单成功的实际效果 第四站订单状态流转——从接到乘客到到达目的地接单成功后订单开始按状态机推进每个节点都会实时推送到乘客端和司机端阶段界面效果 司机到达上车点下方截图 1 乘客上车下方截图 2️ 行程开始下方截图 3 到达目的地下方截图 4订单状态枚举统一定义在 OrderStatusEnum.java 中保证两端状态展示一致。 第五站支付完成——钱包扣款闭环行程结束后进入支付环节。乘客发起支付支付成功后系统回调钱包服务service-wallet8006 端口完成余额扣减司机端同步收到入账通知订单进入完成态背景任务如收入统计、消息通知通过ActiveMQJMS异步处理示例见 service-jms-produce 与 service-jms-consumer 两个模块。 全流程关键模块速查表环节模块路径登录鉴权乘客 APIrydr/api-passenger验证码验证码服务rydr/service-verification-code短信下发短信服务rydr/service-sms计价预估计价服务rydr/service-valuation抢单加锁订单服务rydr/service-order实时派单听单 APIrydr/api-listen-order网关鉴权限流Zuul 网关rydr/rydr-zuul公共 DTO/枚举公共库rydr/rydr-common数据库共 108 张表完整建库脚本见 rydr-sql.sql可用 docker-compose.yml 一键拉起 MySQL、Redis、RabbitMQ、ActiveMQ 等依赖。✅ 小结Rydr 用一次网约车行程串起了注册登录、叫车计价、派单抢单、状态流转、支付结算 5 大环节是学习 Spring Cloud 微服务协作Feign、Ribbon、Hystrix、Eureka、Zuul、WebSocket、JMS的完整实战参考。建议你按本文顺序逐环节阅读对应模块源码配合时序图理解每个请求在微服务之间的流转路径动手把整套服务跑起来是对微服务架构理解最快的一步。【免费下载链接】rydrRydr - A complete ride-hailing platform built with Spring Cloud microservices项目地址: https://gitcode.com/gh_mirrors/on/rydr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表