一、系统架构设计
1. 整体架构
- 前端层:用户端小程序/APP + 骑手端APP + 管理后台
- 服务层:订单服务、追踪服务、通知服务、用户服务
- 数据层:MySQL(订单主数据) + Redis(实时状态缓存) + MongoDB(日志数据)
- 第三方服务:地图API(高德/百度)、短信/推送网关
2. 核心组件
- 订单状态机:定义订单各状态及转换条件
- 实时位置服务:骑手位置上报与处理
- WebSocket网关:实时推送更新到客户端
- ETL管道:处理追踪日志数据
二、订单状态机设计
```mermaid
stateDiagram-v2
[*] --> 待支付
待支付 --> 已取消: 用户取消
待支付 --> 待接单: 支付成功
待接单 --> 配送中: 骑手接单
配送中 --> 已完成: 骑手送达
配送中 --> 异常中: 出现异常
异常中 --> 配送中: 异常解决
异常中 --> 已取消: 用户取消
```
三、实时追踪实现方案
1. 骑手位置上报
```java
// 骑手端位置上报接口示例
@PostMapping("/api/rider/location")
public ResponseEntity<?> updateLocation(
@RequestHeader("Authorization") String token,
@RequestBody RiderLocationUpdateDto dto) {
// 1. 验证骑手身份
Rider rider = authService.validateRider(token);
// 2. 保存位置到Redis(带TTL)
String redisKey = "rider:location:" + rider.getId();
redisTemplate.opsForGeo().add(redisKey,
new Point(dto.getLng(), dto.getLat()),
System.currentTimeMillis());
// 3. 记录位置历史(MongoDB)
locationHistoryService.save(rider.getId(), dto);
return ResponseEntity.ok().build();
}
```
2. 订单状态更新流程
```
用户下单 → 系统创建订单 → 分配骑手 →
骑手接单 → 开始配送(定时上报位置) →
送达确认 → 订单完成
```
3. 实时推送实现
- WebSocket方案:
- 用户连接时订阅订单ID频道
- 状态变化时向频道推送更新
- 骑手位置变化时推送周边K个点
```javascript
// 前端WebSocket连接示例
const socket = new WebSocket(wss://api.xiaoxiang.com/ws);
socket.onopen = () => {
// 订阅订单追踪
socket.send(JSON.stringify({
type: subscribe,
orderId: 123456
}));
};
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
if(data.type === order_update) {
updateOrderStatus(data.status);
} else if(data.type === rider_location) {
updateMapMarker(data.lng, data.lat);
}
};
```
四、关键技术实现
1. 地理位置处理
- Redis GEO:存储骑手实时位置
```java
// 查询附近骑手
GeoResults> results = redisTemplate.opsForGeo()
.radius("rider:location:active",
new Circle(new Point(116.404, 39.915), new Distance(5, Metrics.KILOMETERS)));
```
- 地图API集成:路径规划、距离计算、ETA预估
2. 性能优化措施
- 位置数据聚合:骑手位置每10秒上报一次
- 增量更新:只推送变化的状态和位置
- 分片处理:按区域分片处理订单追踪
- 缓存策略:热门订单状态缓存
五、异常处理机制
1. 网络异常:
- 骑手端离线位置缓存
- 重新连接后批量上报
2. 数据不一致:
- 最终一致性设计
- 定期数据核对任务
3. 高并发场景:
- 订单状态变更队列
- 限流降级策略
六、监控与运维
1. 监控指标:
- 订单状态变更延迟
- 位置更新频率
- WebSocket连接数
- 推送成功率
2. 告警规则:
- 位置更新中断超过5分钟
- 订单状态卡住超过30分钟
- 推送失败率突增
七、扩展功能建议
1. 预计送达时间(ETA)动态计算:
- 基于历史数据和实时路况
- 机器学习模型预测
2. 多级追踪:
- 商家备餐进度
- 骑手取货状态
- 配送路径可视化
3. 异常预警:
- 骑手偏离路线预警
- 长时间停留预警
- 配送超时预警
八、实施路线图
1. 第一阶段:基础状态追踪(1个月)
- 订单状态机实现
- 基本状态推送
2. 第二阶段:实时位置追踪(2个月)
- 骑手位置上报
- 地图可视化
3. 第三阶段:智能预测与优化(持续)
- ETA预测
- 路径优化
该方案可根据实际业务规模和技术栈进行调整,建议先实现核心功能,再逐步完善高级特性。