支持!分片任务非常适用于处理大数据量的任务,其实就是可以将一个大任务划分为多个子任务并行执行,以提高效率。
分片任务能更好的利用集群的能力,可以同时调度多个机器并行运行任务。
分片任务的实现原理包括以下几个核心步骤:
当一个任务被分片任务调度的时候,会带着shardIndex和shardTotal两个参数过来,我们就可以解析这两个参数进行分片执行。
public ReturnT<String> orderTimeOutExecute() {
int shardIndex = XxlJobHelper.getShardIndex();
int shardTotal = XxlJobHelper.getShardTotal();
if (userId % shardTotal == shardIndex) {
// 执行任务
System.out.println("执行任务: 用户 " + userId);
} else {
// 不执行任务
System.out.println("用户 " + userId + " 不执行任务");
}
}
举个例子,假如我们要处理用户订单的关闭任务,就可以用用户 id 对shardTotal取模,然后得到的结果如果和当前的shardIndex相等,则执行,否则不执行。