代驾系统智能派单拆解:Redis GEO + 距离评分的派单链路怎么设计

发布时间:2026/10/7 16:51:47
代驾系统智能派单拆解:Redis GEO + 距离评分的派单链路怎么设计 派单是代驾系统的调度核心用户下单后系统要在几秒内从成百上千个司机里选出“最合适的那几个”推送订单。派单慢用户等待流失派单不准司机不愿意接。本文拆解一套开源代驾系统的智能派单链路。源码地址https://gitee.com/zhoujian6666/biaoma-ride-car-service派单要解决的三个问题找得到怎么快速知道用户附近有哪些在线司机排得准附近司机里先推给谁转得动第一个没接怎么办怎么自动流转一、附近司机检索为什么用 Redis GEO如果每次都查数据库算距离高并发下数据库扛不住且实时性差。系统让所有在线司机的实时位置写入 Redis司机端通过 Netty WebSocket 长连接每隔几秒上报 GPS 坐标服务端用 Redis 的 GEO 数据结构GEOADD存“司机 ID → 经纬度”派单时用 GEOSEARCH或 GEORADIUS按“用户上车点 半径”一次性取出附近在线司机操作是内存级的延迟在毫秒级。同时用 Redis 记录司机在线状态离线或心跳超时的司机不会进候选集。二、排序不是只看距离取出附近司机后要综合多个维度打分排序距离离上车点越近优先级越高接驾时间短司机评分历史服务星级、好评率服务分/完单率取消率低、完单稳定的优先司机当前状态是否有未完成订单、是否设置忙碌实践中常用“加权打分”或“先硬过滤再排序”先用硬性条件在线、空闲、证件有效过滤再按距离和评分加权排序。三、推送与流转排序后的候选司机不是同时推送而是分轮取 Top N 司机通过 Netty 通道定向推送订单含预估里程与收入设置接单超时窗口如 15 - 30 秒有人抢单订单锁定通知其他司机该单已结束无人接单扩大搜索半径或降低条件进入下一轮推送多轮失败订单进入“调度失败”状态后台可介入改派或通知用户抢单并发控制多个司机同时点“抢单”时必须保证只成功一个。系统用分布式锁Redis或数据库乐观锁以订单 ID 为锁键第一个抢到的司机拿到锁、更新订单状态其余抢单请求直接返回“已被接”。派单和计价、推送的联动下单时先调用高德路径规划算预估里程配合计价引擎给出预估价推送内容带上预估价司机决策更清晰派单结果、状态变更通过领域事件触发 Netty 推送和 RabbitMQ 异步通知性能与稳定性细节位置上报有节流坐标变化太小或时间间隔太短不上报减轻写入压力Redis 操作设超时与降级缓存异常时可降级为数据库粗筛推送失败可补偿关键派单消息配合 MQ 做可靠投递项目其他模块除智能派单外系统还包含订单状态机、Netty WebSocket 实时推送、计价引擎、微信/支付宝支付、分润对账、管理后台。后端 管理后台已开源Java 17 Spring Boot 2.7 Vue可直接部署。源码https://gitee.com/zhoujian6666/biaoma-ride-car-service欢迎评论区交流派单与 LBS 相关设计觉得有用欢迎 Star。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询