现有个需求:要实现一个基于地理位置的派单功能
已完成: 1、利用 mongodb 的 geoNear 搜索功能 + query 状态 查询到 10 个满足条件的服务者 2、根据策略筛选出最满足条件的一个
未完成: 1、将单子派给他 2、他有 30 秒的接单时间,如果接单了则此订单派单任务结束,如果超时未接单,则收回订单,继续派下一个 3、每个订单总派单时间不能超过 5 分钟,超过 5 分钟转交客服人工处理 (差不多就是轮 10 个人)
那么问题来了: 1、派单有什么较好的解决方案推荐? 目前考虑 “长连接” 或者 “即时通讯云的自定义消息” 2、这 30 秒计如何解决最好,setTimeout 靠不靠谱? 特别是上千上万个订单之后,如何处理高并发。如果采用一个计时器,轮询 redis 队列,取出到 30 秒的事务,QPS会不会成为高并发的瓶颈? 3、对 memcached 不是非常了解,不知是否有一个机制可以在过期时主动推送一个消息事件,nodejs 接受到消息之后处理,并派发下一个。
ps: 没有自建机房(创业公司穷),服务器部署在阿里云
快被逼疯了,请各位多多指教,不甚感激!
看看 AWS 的 SQS 服务,和你的需求比较接近。
https://www.amazonaws.cn/en/products/
Amazon Simple Queue Service (SQS) Message Queue Service
@leapon thx. 之前一直用的都是阿里云的云服务,Amazon 的云服务还真没接触过。