在任务调度XXLJOB中,您可通过任务级别和应用级别的限流,合理分配系统资源,避免任务过多导致系统负载过大,资源过度消耗。
任务级别限流
开源XXLJOB有堵塞处理策略进行任务限流,但该堵塞处理策略是客户端级别的限流,只能保证该任务在该执行器上是串行执行。如果执行器有多个,无法保证任务全局幂等执行。
阿里云XXLJOB支持服务端级别任务限流。登录XXL-JOB控制台,进入指定XXL-JOB实例。在左侧导航栏的任务管理页面,单击目标任务操作列的编辑,在高级配置中,通过任务并发数控制任务同时跑的并发数。
当任务并发数设置为1,表示任务幂等执行。若上一次没跑完,下一次调度时间到了直接跳过执行。
应用级别限流
如果您的应用下有多个任务,同时执行会导致后端压力太大,可以设置应用级别限流。
例如,一个数据平台的应用,每天夜间处理上一天的离线数据,这些任务只需要每天早上9:30前跑完即可,但是业务方把任务调度时间都设置为00:30:00跑,同时跑会导致后端负载过高而崩溃。
阿里云XXLJOB支持可抢占任务优先级队列。
登录XXL-JOB控制台,在应用管理页面对目标应用进行编辑,在高级配置中,开启流控开关,并设置任务队列执行大小。
如上图所示,设置任务执行队列大小为10,表示该应用下同时跑的任务数会限制在10个,超过了会在队列中等待。
在创建任务时,可以为不同的任务分配不同的优先级。高优先级任务会抢占低优先级任务优先调度。即队列中等待的任务,高优先级任务会排在队列的前面。
文档内容是否对您有帮助?