全部产品

简单任务分片

更新时间:2020-08-28 19:11:36

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

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

操作步骤

  1. 在任务调度控制台页面,选择 任务配置,进入任务配置页面:
    • 如果要在创建任务时配置任务分片,直接点击 添加任务 > 简单任务
    • 如果要编辑现有简单任务,在列表中的对应任务行中点击 更多 > 编辑
  2. 是否分片 配置栏,点击开启分片,并设置相应的分片数。
    任务分片
  3. 确认其他任务信息无误后,点击 提交
  4. 在本地工程,编码实现任务分片。示例如下:

    1. public class ShardingSchedule implements ISimpleJobHandler {
    2. private final Logger LOGGER = LoggerFactory.getLogger(ShardingSchedule.class);
    3. private ThreadPoolExecutor threadPool;
    4. @Override
    5. public String getName() {
    6. return "SHARDING_SCHEDULE";
    7. }
    8. @Override
    9. public ClientCommonResult handle(JobExecuteContext jobExecuteContext) throws Exception {
    10. int sharding=jobExecuteContext.getSharding();
    11. //当前机器获取到的分片数
    12. LOGGER.info("current machine sharding is "+sharding);
    13. //总的分片数
    14. System.out.println("total sharding num is "+jobExecuteContext.getShardingCount());
    15. System.out.println("activity sharding is"+jobExecuteContext.getActivitySharding());
    16. return ClientCommonResult.buildSuccessResult();
    17. }
    18. @Override
    19. public ThreadPoolExecutor getThreadPool() {
    20. return threadPool;
    21. }
    22. /**
    23. * Setter method for property threadPool.
    24. *
    25. * @param threadPool value to be assigned to property threadPool
    26. */
    27. public void setThreadPool(ThreadPoolExecutor threadPool) {
    28. this.threadPool = threadPool;
    29. }
    30. }
  5. 任务执行后,可通过以下任一方式查看详细的分片信息。
    • 在控制台的任务详情页 > 调度记录 下查看具体的分片及其执行信息。
    • 通过日志查看服务器获取到的分片,如下图所示。
      分片日志

相关链接