文档

如何进行任务调度限流

更新时间:

本文介绍在任务调度XXLJOB中,如何进行任务级别限流和应用级别限流。

阿里云XXLJOB版支持任务级别和应用级别的限流,为您的业务稳定保驾护航。

任务级别限流

  • 开源XXLJOB有堵塞处理策略进行任务限流,但该堵塞处理策略是客户端级别的限流,只能保证该任务在该执行器上是串行执行。如果执行器有多个,无法保证任务全局幂等执行。

    image

  • 阿里云XXLJOB支持服务端级别任务限流,在任务管理高级配置中,通过任务并发数控制任务同时跑的并发数。

    image

    当任务并发数设置为1,表示任务幂等执行。上一次没跑完,下一次调度时间到了直接跳过执行。

应用级别限流

如果您的应用下有多个任务,同时执行会导致后端压力太大,可以设置应用级别限流。

例如,一个数据平台的应用,每天夜间处理上一天的离线数据,这些任务只需要每天早上9:30前跑完即可,但是业务方把任务调度时间都设置为00:30:00跑,同时跑会导致后端负载过高而崩溃。

阿里云XXLJOB支持可抢占任务优先级队列。

image

  1. 应用管理高级配置中,开启流控开关,设置任务队列执行大小

    image

    如上图所示,设置任务执行队列大小为10,该应用下同时跑的任务数会限制在10个,超过了会在队列中等待。

  2. 在创建任务时,可以为不同的任务分配不同的优先级。高优先级任务会抢占低优先级任务优先调度。即队列中等待的任务,高优先级任务会排在队列的前面。