全部产品

简单任务分片

简单任务支持数据分片处理,适用于数据量很大的业务场景。

  • 不开启分片功能,任务将只调度到一台客户端服务器上执行。

  • 开启了分片,并设置分片数为 N,任务则会同时触发到 N 台客户端服务器上并发执行。

操作步骤

  1. 在任务调度控制台页面,选择 任务配置,进入任务配置页面:

    • 如果要在创建任务时配置任务分片,直接单击 添加任务 > 简单任务

    • 如果要编辑现有简单任务,在列表中的对应任务行中单击 更多 > 编辑

  2. 是否分片 配置栏,单击开启分片,并设置相应的分片数。任务分片

  3. 确认其他任务信息无误后,单击 提交

  4. 在本地工程,编码实现任务分片。示例如下:

    public class ShardingSchedule implements ISimpleJobHandler {
    
        private final Logger LOGGER = LoggerFactory.getLogger(ShardingSchedule.class);
    
        private ThreadPoolExecutor threadPool;
    
        @Override
        public String getName() {
            return "SHARDING_SCHEDULE";
        }
    
        @Override
        public ClientCommonResult handle(JobExecuteContext jobExecuteContext) throws Exception {
            int sharding = jobExecuteContext.getSharding();
    
            //当前机器获取到的分片数
            LOGGER.info("current machine sharding is " + sharding);
            //总的分片数
            System.out.println("total sharding num is " + jobExecuteContext.getShardingCount());
    
            System.out.println("activity sharding is" + jobExecuteContext.getActivitySharding());
    
            return ClientCommonResult.buildSuccessResult();
        }
    
        @Override
        public ThreadPoolExecutor getThreadPool() {
            return threadPool;
        }
    
        /**
         * Setter method for property threadPool.
         *
         * @param threadPool value to be assigned to property threadPool
         */
        public void setThreadPool(ThreadPoolExecutor threadPool) {
            this.threadPool = threadPool;
        }
    
    }
  5. 任务执行后,可通过以下任一方式查看详细的分片信息。

    • 在控制台的 任务详情页 > 调度记录 下查看具体的分片及其执行信息。

    • 通过日志查看服务器获取到的分片,如下图所示。分片日志

相关链接