网约车核心业务推单相关设计和整理。
图
抢单模式
自动派单模式
手动派单模式
一些说明
订单推送给司机(直接获取订单)/手动派单/司机点击接受订单
绑定司机
此处需要获取分布式锁,锁的资源为司机,因此可以用 司机ID 为锁的标识,绑定订单的司机时需使用 乐观锁方式 进行更新。
检查是否中止推单
- 推荐使用 redis 进行标识是否终止订单推送,需要使用原子+过期特性。
用户下单
用户下单会发送多个消息
情况一: 自动派单模式
- 发送自动派单消息
- 发送取消订单消息(延迟消息)
情况二: 抢单模式
- 发送抢单派单消息
- 发送抢单启动消息(延迟消息)
- 发送取消订单消息(延迟消息)
关于服务重启解决方案
- 重启后进行订单扫描处理(分批次拉取模式)
- 定时器核对订单状态,进行状态处理
- 消息进行合法校验(超时丢弃,记录日志)