类似外卖抢单的一些疑惑 , 大佬指教
最近在做毕设的疑惑, 希望大佬们多多指教
大四学生 在做毕设 是一个储物柜的项目 其实就是跟外面蜂巢相似 我们旅游到外面各地 都可以存储随身物品到这个柜子中 我的亮点以及难点就在于 多了一个 派送系统 , 打个比方 当您从北京西站下车 您是来游玩的 带了一个行李箱 您早上下车, 并没有到12点酒店预定的时间 这个时候可以把行李箱放到我在北京西站的储物柜里 , 您可以在游玩结束后 或者找到住处后来取走 但是假如您住在了前门附近 这个时候来回取走的 金钱时间成本都很大 , 就可以下单 让我们的快递员给您送到距离您比较近的储物柜 您只需要几分钟就可以取走 .
背景就是上面这样 , 但我现在的技术问题在于
-
消费者下单需要派送订单的时候, 这个时候就如同外卖小哥抢外卖一样 需要抢单 , 这个部分我的想法是这样的 : 用户下单需要派送 , 就会生成一个订单 id , 然后将这个 id 以及用户手机号啊 从哪送到哪啊 这些数据 用户下单后就放到 消息队列里 , 然后用websocket 读取这个 队列中的数据, 展示那些需要配送的数据信息 给派送员, 就跟咱们很多人下单各自的外卖 ,然后那些外卖小哥他们的页面就动态显示咱们这些人下单的信息, 都会在他们的界面上显示 , 他们来选择抢单 , 抢单这部分我的想法是用 redis 分布式锁来确保安全 .
-
大佬们看一下我第一个问题的解决方法有问题吗 或者有什么更好的改进方式 . **第二个疑惑是, 当派送员抢了我的单了, 这个时候我这个订单状态就应该是 已被派送员接收, 等待派送 . 但是消费者这边怎么得到通知我的订单是否被别人抢了,等着给我派送呢 ? 这个怎么做呢 , 我在群里问了一下 有人说还是用消息队列 我猜想是不是这样 当派送员A抢到了我的这个订单了, 肯定要先存库( 这个订单表中 订单 id , 消费者信息和派送员一些信息 加上 status 订单的状态), 然后就把这个订单 id 放到另一个消息队列里, 之后消费者这边消费读取数据 , 如果消费到这个数据(订单id) 证明我这个订单就已经被派送员抢到了, 就去修改我这个订单 id 的 status 状态是0 , 1 (0代表还没人抢, 1代表已被抢,等待派送之) ,用户那边再查看订单数据的时候从库中获取状态以及相关信息, 就可以显示达到我的目的了? 我的理解的是这样 不知道有没有问题 , 想先给架构流程想好, 免得中间做的自己都乱了 . **
主要就是上面两个问题 总结一下就是
1. 派送员显示订单 用 kafka + websocket 这个吗? 快递员抢单用redis 分布式锁 ?
2. 用户这边如何得知订单状态的更改
本人菜鸡, 希望大佬们多多指教 , 有什么不对的或者可以改进的部分不吝赐教 , 万分感谢 . 祝大佬们新年快乐 今年都升职加薪