laravel 任务队列并发分析
需求场景
- 本人在电商应用项目是经常 为商家上架商品,商品搬家。同时在多个电商平台商品搬家。为了保障商品搬家任务的顺利完成,需要不断的反复重尝某个商品,直到成功上传。
面临的问题
1.可能因为商家搬家任务多,而造成服务器运行缓慢,或卡死。
2.处理任务的速度太过缓慢。
3.在上架的过程中,经常会面临两端(数据来源端,数据上传端)不是绝对稳定。或数据不合规(需要调整数据)。
4.经常需要调整一些商家的任务要优先。
5.有时要人工触发某个商品上传。
6.不能让商品重复上传。
临时方案
在商家任务数量不多的前提下,直接在创建任务时,执行设定好的并发数量,现在是3个并发。某一个并发有了结果后,再执行一个。直到这个批次执行完成。
5分钟定时任务,把失败的再次加入并发。直到完成任务。
有些商品一直失败,人工复查后,再根据原因手工处理。
这种方案只能在任务量少的情况下进行。
整改升级方案
1.每个电商平台一个任务配置,和任务队列。配置并发数,按加入队列的顺序依次执行。
2.维护并发进程逻辑:
队列里面还有没有东西
查看现在并发在执行的,还有几个
如果少于设定数,就在发起一个。
查看状态是不是在启动中。
3.手动调整优先执行哪几个。
4.并发前置逻辑:
- 清空队列,重新加入到队列
- 追加到队列。
- 往队列里面加入内容,并去重复。
你的见解
1.如果你有好的方案,欢迎你在评论区给予指点。
本作品采用《CC 协议》,转载必须注明作者和本文链接