外卖骑手实时就近派单全攻略:SpringBoot + GeoHash 高效实现

一、核心问题:如何快速找到最近的骑手?

用户在城市下单时,系统需要即时回答:方圆3公里内,哪些骑手是空闲的?谁离我最近?

传统方法:

  1. 获取所有空闲骑手经纬度 (lng, lat)
  2. 计算距离
  3. 排序找出最近的骑手

问题:城市有数万骑手时,每次计算数万距离,数据库和服务器瞬间崩溃。

解决方案:先粗筛,再精算 → GeoHash


二、GeoHash:将地图“网格化”的魔法

GeoHash 将二维经纬度编码成一维字符串,前缀匹配表示地理位置相近。

网格化原理

编码长度

范围示例

w

华北地区

wx

北京市

wx4

朝阳区

wx4g

若干街道

wx4g0

一栋楼附近

示例

地点

经纬度

Ge