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