最近在写骑手配送,自动派单的逻辑,之前没有做过这块一点逻辑也没有,求大神给点思路

打飞机的猪猪侠 发布于 08/30 19:07
阅读 800
收藏 1

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

最近在写骑手配送,自动派单的逻辑,之前没有做过这块一点逻辑也没有,求大神给点思路,采用的数据库是mysql,暂时不采用redis和mongoDB,主要想问下n(骑手)+m(距离)的距离怎么去优先筛选,目前有n个骑手的经纬度和m个商家的经纬度

加载中
2
自由PHP
自由PHP

mysql也带geo查询,客户下单后,自动获取极限派单距离内(推荐用地图软件API,计算更精确,防止出现隔山隔河派单的情况)的所有在线的骑手(什么叫空闲,需要自己定义),根据不同的距离、好评度、订单量对范围内的所有骑手进行打分,自动呼叫最优骑手。

1
御坂网络路由器
御坂网络路由器
select * from 骑手 where 状态、区域、配送数<阈值,order by st_distance()
1
sprouting
sprouting

还是用redis吧,redis里面有一个GEO地理位置的方法,用这个方便快捷。自己去实现的话,关键点还是找附近的人,可以参考下这个博客,https://www.jianshu.com/p/455d0468f6d4

K不是你的帝
K不是你的帝
我记得ES内部也有一个根据经纬度查询最近坐标的方法,应该可以用那个
1
银杏林守望者

redis方便快捷不假,不过GEO效率并不高。redis内部是串行,大量经纬度更新入库同时查询的话影响查询效率。

写个服务内存gps点然后运算更好,顺手还能把高精度纠偏给做了。

按照gps地理区域位置划分集群内服务就行。

1
这个不会有人用
这个不会有人用

这几个mongo支持的是最好的吧

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部